Excel VBA — Цикл IF( & VLOOKUP(, начиная с частичной строки

Excel VBA — Цикл IF( & VLOOKUP(, начиная с частичной строки

Добрый день замечательному сообществу,

Я пытаюсь разработать макрос для цикла по двум массивам. Вот пример того, как настроены данные:

Исходные данные находятся в C4:C1500

$ данные найдены в D4:D1500

Частичные строковые значения (первоначально извлеченные из необработанных данных) находятся в E4:E13.

Категории, по которым будут организованы необработанные данные, находятся в F4:F13.

Ниже приведена формула, которую я составил в качестве доказательства концепции.

=ЕСЛИ(ВПР(" * "&E4&" * ",$C$4:$C$1500,1,0)=ТИП ОШИБКИ(#Н/Д),"Исследование",ВПР(" * "&E4&" * ",$E$4:$F$13,2,0))

Это работает по одной строке за раз и только до конца коротких списков (без написания массивного вложенного оператора). Я пытаюсь зациклить значения Partial и Category через Raw данные, чтобы затем проанализировать данные по Category и $.

Пример: Лист1

Ряд Столбец C (C4:C1500) Столбец D (D4:D1500) Столбец E (E4:E13) Столбец F (F4:F13)
3 Необработанные данные $ Частичные данные Категория
4 210324Продажи.БобПарр.Юта 785.54 БобПарр Продажи
5 ABCDEF.210324.ПродажиХеленПарр.TN 214.46 ХеленПарр Продажи
6 DashParr.WY.RR.210324 238,56 ДэшПарр Исследовать
7 Mgmt.NY.JackJackParr.210324 1,200.00 ДжекДжекПарр Управление

Лист2:

Ряды Столбец B (B4:B13) Столбец C (C4:C13)
3 Категория Всего $
4 Продажи 1,000.00
5 Исследовать 238,56
6 Управление 1,200.00

После этого я снова выполню функцию VLOOKUP( для SUM( расходов, найденных на Листе2.

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

Спасибо.

Ричард В.О.

решение1

Я не вижу необходимости использовать VBA. Если у вас есть Excel 365, вы можете объединить функции FILTER, CHOOSECOLS и SUM, чтобы получить желаемые результаты. Адаптируйте следующую формулу:

=SUM(CHOOSECOLS(FILTER(Sheet1!$C$2:$F$5,Sheet1!$F$2:$F$5=Sheet2!$B3),{2}))

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

Связанный контент