Надеюсь, вы посмотрите здесь снова.
Я дам ответ, где VBA не требуется, и я постараюсь объяснить все до мелочей.
Используя картинку, которой вы поделились, я создал собственный лист:

Мы начинаем с F2 который является самым верхним элементом. Просто =A2 сделает это.
Здесь нечего объяснять.
На G2 появляется =IF(LEN(F2),INDEX(B:B,MATCH(F2,A:A,0)),"") . Зная, что второй столбец всегда будет одинаковым с первым, он просто ищет точное соответствие F2 в диапазоне A:A (MATCH) и печатает все, что находится в B:B в той же строке. (Он останавливается на первом найденном предмете, хотя это и не имеет значения, потому что он всегда такой же). LEN запрещает показ #NA если строка поиска пуста, а также пропускает вычисление всего массива.
В H2 приходит то, что вы предложили =IF(LEN(F2),SUMIF(A:A,F2,C:C),"") . Он просто суммирует все значения в столбце C которые имеют заданный критерий поиска в столбце A LEN такая же, как и в G2 но она не показывает ошибку, она выдает 0 . Тем не менее, вы все равно получите ноль, если есть термин, и сумма равна 0 .
Хотя вы можете просто заполнить G2 и H2 столько, сколько вам нужно, для F2 это не сработает. Но вы можете сделать это с помощью следующей формулы в F3:
=IF(LEN(F2),IFERROR(INDEX(A:A,MATCH(1,(COUNTIF(F$2:F2,A$2:A$1000)=0)*(A$2:A$1000<>""),0)+1),""),"")
Это формула массива, которая должна быть подтверждена с помощью Ctrl+Shift+Enter.
Он начинается с COUNTIF который просто возвращает двоичный массив, в то время как каждый элемент получает 1 если он соответствует какой-либо строке поиска, все остальные получают 0 (поиск всех строк над собой F$2:F2). Поскольку мы не хотим получать уже использованный предмет, мы обращаем все 0 TRUE (=0). Нам также не нужен empty элемент, поэтому мы тоже проверяем его (A$2:A$1000<>""). Умножение двух логических массивов аналогично наличию AND для каждой пары элементов, а при использовании действительного AND проверяется, что все элементы в обоих массивах имеют значение TRUE . Однако, умножение снова дает нам двоичный массив, имеющий 1 на каждый элемент, который не является пустым и не используется. MATCH теперь проверяет первую 1 и возвращает ее номер позиции (строка). Но начиная со второго ряда мы получаем смещение, которое обнуляется с +1 . Имея позицию, INDEX дает нам строку, которая нам нужна. IFERROR только для первого empty решения, которое вернуло бы #NA . И LEN просто пропускает вычисления для всех ячеек после первой пустой.
Использование мастера формул для просмотра того, что он действительно вычисляет, также помогает понять. Но всегда перепроверяйте все $ иначе автозаполнение может закончиться неудачей.
Если вам все еще нужно что-то спросить, просто напишите комментарий. :)