#excel #vba #match #vlookup #transpose
#excel #vba #совпадение #ВПР #транспонировать
Вопрос:
Данные:
Вывод:
Здравствуйте, пожалуйста, посмотрите прикрепленный лист. У меня есть таблицы с финансовыми данными, организованными по столбцу ID и по строкам даты в заголовках.
На листе 1 я хочу указать диапазон дат в ячейках B1 и D1 листа 1, для которых будет рассчитываться норма прибыли. Например, учитывая приведенные ниже изображения, мне нужна формула в B3 выходных данных, которая может суммировать значения прибыли от 2/1 до 2/6 (34).
Может ли кто-нибудь указать мне правильное направление в отношении VBA или даже некоторых формул Excel на листе? Ценю любые отзывы
Комментарии:
1.
HLOOKUP
?2.
INDEX
MATCH
OFFSET
INDIRECT
также стоило бы прочитать.3. @Nathan_Sav,
HLOOKUP
должно быть достаточно, как выяснил @cybernetic.nomad. Но да, очевидно, что знание этих4. Не беспокойтесь, я предпочитаю
INDEX(range,match,match)
метод, а не поисковые запросы для гибкости.5. @cybernetic.nomad Я не слишком знаком с Hlookup; Я вижу, как он ищет значение строки, заданное датой в качестве входных данных, но как я могу использовать его для диапазона дат и диапазона значений строк? Т.е. если диапазон дат был от 2/1 до 2/6, как бы я суммировал соответствующие строки отчета о прибылях и убытках, чтобы вернуть (4 6 7 10 2 5) 34 в ячейке B3?
Ответ №1:
Вы можете использовать MATCH
для поиска идентификатора и дат, а также ряда в INDEX
, чтобы вернуть требуемый диапазон для a SUM
=SUM( INDEX( Profit, IDRow, FromDateColumn) : INDEX( Profit, IDRow, ToDateColumn))
где FromDateColumn
, ToDateColumn
и IDRow
находятся с MATCH
=SUM(
INDEX(Profit!$1:$1048576, MATCH($A$3,Profit!$A:$A,0), MATCH($B$1,Profit!$1:$1,0)) :
INDEX(Profit!$1:$1048576, MATCH($A$3,Profit!$A:$A,0), MATCH($D$1,Profit!$1:$1,0)) )