MS Excel: как получить значение ячейки, соответствующее нескольким критериям, без использования формулы массива - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать файл Excel, чтобы отслеживать использование бумажных рулонов на моей фабрике по производству гофроящиков. Мы идентифицируем каждый рулон бумаги с помощью уникального номера рулона, и их использование отслеживается по ним.

Каждый раз, когда в магазине выдается рулон, он взвешивается, и вес записывается как Количество выдано . Частично использованные рулоны возвращаются в магазин, и этот вес записывается как Количество возвращено (0, если рулон полностью используется) .

Я создал таблицу, как показано ниже, используя формулу массива

{=IF(COUNTIF($C$3:[@[Roll Number]], [@[Roll Number]]) = 1, INDEX(T_RollStock[Purchased Qty (kg)],MATCH([@[Roll Number]],T_RollStock[Roll Number],0)), INDEX([Quantity Returned (kg)], SMALL( IF([Roll Number]=[@[Roll Number]], ROW([Roll Number]) - ROW( INDEX([Roll Number],1,1) )+1 ), COUNTIF($C$3:[@[Roll Number]], [@[Roll Number]])-1)))}

enter image description here

Если номер рулона появляется в таблице впервые, то Количество выданных будет Количество куплено . Если это не первое вхождение, оно проверяет второе последнее вхождение номера броска и возвращает возвращенное количество .

Я пытаюсьчтобы проверить следующие условия для автоматической генерации выданного количества :

  1. рулон выдан впервые: выданное количество = купленное количество
  2. Частично использованный рулон, выпущенный на более поздних этапах: Проверка на Max[Returned Date] < [@[Issued Date]] и возврат Возвращенное количество .
  3. Выдача рулона несколько разраз в один день: Проверка возврата Max[Returned Date] <= [@[Issued Date]] и Second Last Occurrence Возвращенное количество .

1 Ответ

0 голосов
/ 09 октября 2019

Solution

Я использовал два вспомогательных столбца , чтобы решить ваш случай без использования формулы массива. В приведенном выше примере я добавил некоторые тестовые данные, выделенные желтым цветом.

Helper1 использовал COUNTIF , чтобы вернуть номер индекса для номера бумажного рулона PRN, если данныеотсортировано по ISSD Issued Date в порядке возрастания:

=COUNTIF($A$2:A2,A2)

РЕДАКТИРОВАТЬ # 2 Если даты не отсортированы, используйте следующую формулу массива для возвратапорядковый номер:

=MATCH(B2,AGGREGATE(15,6,ISSD/(PRN=A2),ROW($A$1:INDEX($A:$A,COUNTIF(PRN,A2)))),0)+(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)-1)

вы ДОЛЖНЫ нажмите Ctrl + Shift + Введите по окончанииформула в строке формул, иначе они не будут работать правильно. Затем вы можете просто перетащить формулу вниз, чтобы применить поперек.

Helper2 используется для создания уникальной ссылки на индекс за PRN:

=A2&"#"&E2

QTYISD выданное количество рассчитывается следующим образом:

=IFERROR(INDEX([QTYRE],MATCH(A2&"#"&(E2-1),[Helper2],0)),INDEX(T_RollStock[QTYPUR],MATCH(A2,T_RollStock[PRN],0)))

формула пытается найти базу quantity returned по предыдущей уникальной ссылке на индекс , и если ее нетпредыдущее возвращение, это должна быть первая ошибка, поэтому формула вернет quantity purchased из второй таблицы справа по PRN.

QTYUSD , что является количествомиспользуется просто разница между выданным и возвращенным:

=G2-D2

Перетащите формулы вниз, чтобы применить их поперек.

...