VLOOKUP 在单元格为空时删除空格

VLOOKUP remove spaces when cell is empty

这是一个简单的客户sheet:

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

然后在 F1 中我输入了这个 vlookup 代码:

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

当我查找 ID 2 时,它在 vlookups

之间完美 spaced

但是当我查找 ID 1 时,您会看到名字和姓氏之间有 2 spaces,因为这里没有中间名。

如何管理我总是在 vlookup 之间看到 1 space?

实现所需结果的一种方法是简单地将多个 space 替换为单个 space。

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

此公式在您的 table (A:D) 中查找 G1。 VLOOKUP can be used in an ARRAYFORMULA to efficiently retrieve all of the columns you want in one shot. Your JOIN joins all of the retrieved columns, inserting a space between each value. Finally, your REGEXREPLACE 函数查找多个连续的 space 并将它们替换为单个 space.

或者,您可以过滤结果数组(即 VLOOKUP returns 的结果)。以下公式查找名字、中间名和姓氏的数组,然后在使用 space.

连接剩余元素之前过滤掉所有空单元格
=JOIN(" ",FILTER(VLOOKUP(I1,A:D,{2,3,4},FALSE),INDIRECT("B"&MATCH(I1,A:A,0)&":D"&MATCH(I1,A:A,0))<>""))

您只需要 TRIM fx 和:

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