Использование 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))