VLOOKUP удаляет пробелы, когда ячейка пуста - PullRequest
0 голосов
/ 06 мая 2019

Это простой лист клиента:

A   B       C       D
ID  First   Middle  Last
1   John            Doe
2   Jane    Maia    Doe

И в F1 я добавляю следующий код vlookup:

=VLOOKUP($G$1;$A$1:$D$3;2;FALSE)&" "&VLOOKUP($G$1;$A$1:$D$3;3;FALSE)&" "&VLOOKUP($G$1;$A$1:$D$3;4;FALSE)

Когда я ищу ID 2, он идеально расположен между vlookups

Но когда я смотрю ID 1, вы видите 2 пробела между именем и фамилией, потому что здесь нет второго имени.

Как мне сделать так, чтобы я всегда видел 1 пробел между vlookups?

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Один из способов добиться желаемого результата - просто заменить несколько пробелов одним пробелом.

=REGEXREPLACE(JOIN(" ",ARRAYFORMULA(VLOOKUP(G1,A:D,{2,3,4},FALSE))),"\s{2,}"," ")

Эта формула ищет G1 в вашей таблице (A: D). VLOOKUP можно использовать в ARRAYFORMULA для эффективного извлечения всех нужных столбцов за один выстрел. Ваш JOIN объединяет все извлеченные столбцы, вставляя пробел между каждым значением. Наконец, ваша REGEXREPLACE функция ищет несколько последовательных пробелов и заменяет их одним пробелом.

В качестве альтернативы, вы можете отфильтровать результирующий массив (то есть результат того, что возвращает ваш VLOOKUP). Следующая формула просматривает массив имени, отчества и фамилии, а затем отфильтровывает все пустые ячейки перед объединением оставшихся элементов с пробелом.

=JOIN(" ",FILTER(VLOOKUP(I1,A:D,{2,3,4},FALSE),INDIRECT("B"&MATCH(I1,A:A,0)&":D"&MATCH(I1,A:A,0))<>""))
1 голос
/ 07 мая 2019

все что вам нужно это TRIM fx и:

=ARRAYFORMULA(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(
 VLOOKUP(G1:G2, A1:D3, {2,3,4}, 0))),,999^99))))

0

...