Хорошо, я думаю, что получил то, что вы пытаетесь сделать, и я думаю, что VLOOKUP
не может быть подходом для этого, используя вместо этого MATCH
. Давай начнем...
1-й ПОДХОД "все значения в одной ячейке":
На листе "билеты"
Формула размещения ячейки C2 = IFERROR(1+MATCH($ A2, 'tickets_info'!$ A $ 2:$ A $ 5000,0), 0) ;
Формула для ячейки D2 =IF($C2>0,INDIRECT("'tickets_info'!O"&$C2),"")
;
выберите ячейки C2 и D2 и скопируйте формулу до строки 500.
(необязательно) скрыть столбец C.
На листе "tickets_info"
на ячейку O2 поставить формулу =B2 & " " & C2 & " " & ... & N2
;
скопируйте формулу до строки 5000.
(необязательно) скрыть столбец O.
РЕДАКТИРОВАТЬ: Что делать, если по какой-то причине вы хотите / должны оставить лист "tickets_info" нетронутым?
Вы можете сделать это, используя эту частично модифицированную версию формулы на листе "билеты" ячейки D2: (что было огромной формулой, пересмотренной после восстановления ночного сна)
=IF($C2>0,INDIRECT("'tickets_info'!B" & $C2)
& " " & INDIRECT("'tickets_info'!c" & $C2)
...
& " " & INDIRECT("'tickets_info'!N" & $C2),"")
или (даже дольше)
=IF($C2>0,INDIRECT(ADDRESS($C2,2,,,"tickets_info"))
& " " & INDIRECT(ADDRESS($C2,3,,,"tickets_info"))
...
& " " & INDIRECT(ADDRESS($C2,14,,,"tickets_info")),"")
затем скопируйте вниз. Таким образом, вам больше не понадобится формула столбца O для "tickets_info" (и, следовательно, нет необходимости изменять ее каким-либо образом).
Обратите внимание, что я не написал все эти "повторяющиеся" блоки кода. Очевидно, что для формулы , чтобы работать должным образом, те ...
необходимо заменить , добавив оставшиеся необходимые кодирования блоков со ссылкой на колонке увеличивающегося для каждого другого столбца , нужно показать.
ЗАКЛЮЧИТЕЛЬНОЕ ЗАМЕЧАНИЕ ДЛЯ ЭТОГО РЕДАКТИРОВАНИЯ: окончательная формула будет длинной, но могла бы быть действительно огромной, если бы мы хотели обойтись без формулы промежуточного значения на C2 и использованием уникальной комбинированной формулы C2/D2 для этой ячейки (но это очень неудобно в моем мнение, так что я точно не собираюсь вам показывать как!)
2-Й ПОДХОД "a-single-cell-per-value" - ОБНОВЛЕНО:
Если вы хотите отобразить значения из листа "tickets_info" с B2 по N2 в отдельных столбцах на листе "tickets", то вот вариант:
Формула размещения ячейки C2 = IFERROR(1+MATCH($ A2, 'tickets_info'!$ A $ 2:$ A $ 5000,0), 0) ;
Формула размещения ячейки D2 (по-старому) =IF($C2>0,INDIRECT("'tickets_info'!B"&$C2),"")
;
(обновленная альтернатива) =IF($C2>0,INDIRECT(ADDRESS($C2,COLUMN()-1,,,"tickets_info")),"")
;
(если делать по-старому) скопируйте / вставьте формулу на D2 в интервал между ячейками E2 и P2, НО обязательно измените ("приращение"), что B
между !
и &
к необходимым C
, D
, ..., N
в других столбцах, где вы скопировали формулу;
(при использовании обновленной альтернативы - МОЙ ПРЕДПОЧТИТЕЛЬНЫЙ) Важно понимать, что при использовании COLUMN()
в формуле вам не нужно помнить о "пошаговом" изменении !B"
больше, когда вы копируете формулу на соседних столбцах - разве это не свобода? ;-) Тогда вы можете просто скопировать / вставить формулу в интервал ячеек D2:P2 без необходимости что-либо менять и, следовательно, (не могу сказать о производительности, но) это наверняка будет лучшим выбором, если вы хотите избежать риска ошибки, которые могут возникнуть, если вы забудете увеличивать ссылки после копирования формул ... или даже если вам просто лень писать / изменять повторяющиеся блоки кода (... как я! ;-D)
выберите интервал ячеек от C2 до P2 и скопируйте формулу до строки 500 (или как угодно).
(необязательно) скрыть столбец C.
Вот и все.
ЗАКЛЮЧИТЕЛЬНОЕ ЗАМЕЧАНИЕ ПО ЭТОМУ ПОДХОДУ (чтобы проанализировать путь вниз): я часто предпочитаю MATCH
а не VLOOKUP
но в этом случае я пошел с ним сразу, потому что, во-первых, я думал, что вам нужен способ получить все соответствующие значения строки на "tickets_info" с одним поиском; даже промежуточные значения, рассчитанные в столбце C, в основном присутствуют по той же причине. Если вам нужны отдельные значения, вы можете даже избавиться от них, комбинируя формулы столбцов C/D следующим образом:
=IF(ISERROR(1+MATCH($A2,'tickets_info'!$A$2:$A$5000,0)),"",INDIRECT(ADDRESS(1+MATCH($A2,'tickets_info'!$A$2:$A$5000,0),COLUMN()-1,,,"tickets_info")))
и просто скопируйте / вставьте его в интервал ячеек C2:O500.
Наконец, в этом случае, как также предложил fixer1234, VLOOKUP
становится возможной альтернативой таким (даже немного более коротким) способом записи:
=IF(ISERROR(VLOOKUP($A2,'tickets_info'!$A$2:$N$5000,COLUMN()-1,FALSE)),"",VLOOKUP($A2,'tickets_info'!$A$2:$N$5000,COLUMN()-1,FALSE))
PS Что делать, если вы столкнулись с проблемами форматирования после того, как скопировали / пропустили формулу?
Если вы выбрали второй подход, просто отформатируйте ячейку в нужном вам формате (т.е. дата / время для значений даты и времени); для этого вы можете использовать обычное форматирование ячеек или определить пользовательское форматирование, если хотите, или, проще (и настоятельно рекомендуется!) скопируйте исходный столбец (столбцы) на листе "tickets_info", из которого извлекаются значения, и вставьте / форматируйте только для специальных целей в соответствующий столбец (столбцы) назначения копии листа "тикета".
Если вы выбрали первый вариант, вам может потребоваться преобразовать полученное числовое значение в форматированный текст с помощью функции TEXT.
В этом случае следует помнить одну вещь: используя функцию TEXT, вы потеряете возможность использовать исходное значение для выполнения таких операций, как, например, вычисления даты или времени, тесты для проверки соответствия даты определенным условиям и т.д.
Поэтому совет будет использовать первый подход, только если / если:
а) вы просто имеете дело с извлечением текстовых значений (чисел или чего-либо, что уже сохранено в текстовых столбцах), так как это не будет иметь никакого значения;
или б) достаточно простой каскадной копии значений, и вы не планируете УВЕРЕННО, что они понадобятся вам по отдельности для выполнения каких-либо операций.
... иначе не думайте об этом и всегда следуйте второму подходу с закрытыми глазами, это точно не повредит.
Теперь, чтобы прийти к заключению, (наконец-то) я добавляю несколько предложений по ссылкам от fixer1234 о последних обсуждаемых вопросах:
Как создать пользовательское форматирование номера (с полным набором кодов).
Объяснение использования функции TEXT для преобразования предоставленного числового значения в текст.