После некоторых изменений в таблице планирования, которые включают в себя:
- Заполнение столбца A с указанием дня недели
- Выделение заголовков столбцов (например, для воздуховода)
- Стандартизация полей, которые вам нужны (
Composite Hose
изменено на Hose
, например, для соответствия листу расписания)
Я использовал следующую формулу массива (вводится с помощью Ctrl + Сдвиг + Ввод ):
=IFERROR(INDEX(INDIRECT("Table3["&C$6&"]"),SMALL(IF((Table3[Helper]=PLAN!$A7)*(Table3[STOCK CATEGORY]=PLAN!C$5),ROW(Table3[ITEM CODE])-8),ROW(7:7)-MATCH("zzz",$B$1:$B7,1)+1)),"")
Пример загруженной рабочей книги здесь .
Немного паузыесли вы хотите понять формулу, разбейте ее немного:
IFERROR(Result, "")
просто покажет пустое значение, если результатом будет ошибка (больше нет элементов, которые можно отобразить)
INDEX(Column Result,SMALL(Matches, N))
Здесь Column Result
- это результат того, что нам нужно.Это может быть код товара, описание или количество.Matches
- это список индексов для строк, которые соответствуют определенным критериям (тип материала, будь то в ту же неделю и день), а N
- это N
-й результат, который нам нужен.Если N
равно 1, то мы получим первый результат совпадений, если N
равно 2, мы получим 2-е.
Исходя из вышеизложенного, я использовал INDIRECT("Table3["&C$6&"]")
для результата столбца, чтобы сделатьформула немного более гибкая.Когда это так, формула решит, какой столбец нужно вернуть, будь то код товара, описание или количество.
Соответствия определяются как IF((Table3[Helper]=PLAN!$A7)*(Table3[STOCK CATEGORY]=PLAN!C$5),ROW(Table3[ITEM CODE])-8)
, который в основном проверяет, совпадают ли неделя и день,вместе с категорией акций.Если оба совпадения, то вернуть номер строки этих строк (результат - массив).
N определяется ROW(7:7)-MATCH("zzz",$B$1:$B7,1)+1)
, что является своего рода небольшим алгоритмом, который я использовал, чтобы после каждого новогодень, я получаю новый N, начиная с 1, который увеличивается на 1, пока не будет достигнут новый день.Это в основном берет текущую строку, вычитает последнюю строку до текущей строки из столбца B и добавляет 1. Если два находятся в одной строке, результат будет 1. Если текущая строка на одну строку ниже последней строки изстолбец B, результат будет 2 и т. д.