2013-12-17 2 views
5

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

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

Что я сделал до сих пор на Sheet2; Я расчет позиции записи в колонке B, как

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

И я пытался использовать ArrayFormula КОСВЕННЫМ, чтобы получить данные на одном дыхании. я могу получить одну строку правильно используя

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

То, что я хочу что-то вроде ниже, но она по-прежнему возвращает первую строку ONLY.

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

Помощь.

ответ

8

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

К счастью, VLOOKUP делает, а также означает, что вам не нужна вспомогательная колонка. Итак:

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

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

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

+0

Работал как шарм, благодаря Адаму. Подумайте об этом, это также будет работать как таблица «бедный человек», а также правильно? –

+1

Почему такая полезная информация недоступна в документации? –

+0

Несомненно, его можно использовать в качестве соединения таблицы, часто с ударом по производительности (формула пересчитывается с каждым сделанным вами изменением), поэтому вы можете рассмотреть возможность изменения значений только после того, как формула выполнила свою работу. Что касается документации, она улучшилась с новой версией листов, но есть еще много таких вещей, которые мы должны «открыть». https://productforums.google.com/forum/#!searchin/docs/multivalue$20parallel$20lookup/docs/36A0epDlIdE/qnywZst0DioJ – AdamL