2015-12-12 5 views
-2

У меня есть 2 стола. Таблица 1 содержит следующие поля:Множество критериев If & AND в excel-формуле или VBA .... либо будет достаточно

1. Warehouse 
2. Test Date0 
3. Test Date1 
4. Test Date2 

Сочетание 1,2,3 & 4 всегда является уникальным

Таблица 2 имеет следующие поля:

1. Warehouse 
2. Link No. 
3. Issue date 
4. [Pick test Date0] {currently blanks} 
5. [Pick test Date1] {currently blanks} 
6. [Pick test Date2] {currently blanks} 

Сочетание 1 , 2 & 3 всегда уникально

Нужна формула для заполнения пробелов на основе следующих условий:

Table 1[Warehouse] = Table 2[Warehouse] 

и

Table 1[Test Date2] < Table 2[Issue Date] 

Приведенные выше критерии дает несколько результатов. Следовательно, выходной сигнал должен быть следующим: Первые

Table 1[Warehouse] = Table 2[Warehouse] 

должен быть обработан. сообщение, что в подмножестве результатов, полученных из вышеизложенного, следующие потребности должны быть обработаны:

Table 1[Test Date2] < Table 2[Issue date] 

Для этого подмножества следующие должны быть обработаны:

min(abs(Table 1[Test Date2]-Table 2[Issue date])). 

Запись, удовлетворяющая приведенным выше критериям необходимо использовать из таблицы 1, для заполнения полей таблицы 2.

Table1 Table2

+0

не могли бы вы поделиться некоторыми снимками? – Linga

ответ

1

С макетом образца данных:

enter image description here

Формула в Н2 (вы можете перетащить его вниз/вправо):

=LOOKUP(0,0/FREQUENCY(0,($F2=$A$2:$A$28)*$G2-B$2:B$28-1)/($F2=$A$2:$A$28),B$2:B$28) 

частоты часто бывает полезно, чтобы найти минимальное расстояние:

=FREQUENCY(0,array1) 

Возвращает двоичный array2:

{0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0} 

где 1 указывает положение наименьшего неотрицательного значения array1. Array2 имеет еще один элемент, чем array1, когда все элементы массива1 отрицательны, а затем последний элемент array2 = 1.

В этом случае array1 является:

($F2=$A$2:$A$28)*$G2-B$2:B$28-1 

$G2-B$2:B$28-1 отрицателен для всех дат испытаний> = дата выдачи. ($F2=$A$2:$A$28)* дата выпуска нулей для элементов, где не совпадает склад.

LOOKUP(0,0/array2,array3) ищет единственный ненулевой элемент массива2 и возвращает соответствующий элемент массива3. Второе деление /($F2=$A$2:$A$28) используется, чтобы убедиться, что оно не возвращает значения, расположенные вне диапазона поиска (буквы a, b, c на скриншоте), когда нет совпадения.

+0

Ты потрясающий, и это твое решение. Спасибо, тон. Ты спас меня. :) Приветствия –

1

Там нет волшебной формулы, вы можете использовать, только гнездо МСФ один на один

If A = true then 
    If B = true then 
     If C = True And D = True then 
     'do stuff 
     End If 
    End If 
End If 
+0

Спасибо :) –

Смежные вопросы