Использование ARRAYFORMULA и INDIRECT для итерации строк и возврата в виде блока

Лист1 содержит столбцы от A до D, где A содержит уникальный ключ записи.

На Sheet2 я хочу переставить данные в соответствии с моим собственным порядком сортировки. Colum A содержит мои собственные заказанные ключи записи.

То, что я сделал до сих пор на Sheet2, это; Я рассчитываю позиции записи в столбце B как

=ARRAYFORMULA(MATCH(A1:A100,Sheet!A:A,0))

И я пытался использовать ARRAYFORMULA INDIRECT, чтобы получить данные за один раз. Я могу получить одну строку правильно, используя

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1&":D"&B1)))

Я хочу что-то вроде ниже, но он по-прежнему возвращает ТОЛЬКО первый ряд.

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1:B100&":D"&B1:B100)))

Помогите.

1 ответ

Решение

К сожалению, INDIRECT не поддерживает итерацию по массиву.

К счастью, VLOOKUP делает, а также означает, что вам не требуется вспомогательный столбец. Так:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4}*SIGN(ROW(A1:A100)),0))

и в новой версии Sheets третий аргумент может быть упрощен:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4},0))

Другие вопросы по тегам