如何使用 arrayformula "textjoin"(包括忽略空单元格)?
How to "textjoin" with arrayformula (including ignoring empty cells)?
我喜欢 textjoin,因为它具有“忽略空单元格”功能,它真的很干净。但是,它不能与 ArrayFormula 一起为我自动填充列。所以似乎需要一个更混乱的解决方法。这就是我想出的。有人知道更简单的解决方案吗?
单元格 A2 中的公式应将单元格 B、C 和 D 中的值与分隔符结合起来,并且不得有任何额外的分隔符,例如前导或尾随 _s,或中间的 _ _。
+----------------------+------------+------+-----------+
| NiceName | first_name | year | country |
+----------------------+------------+------+-----------+
| Kaylee_1999 | Kaylee | 1999 | |
| Selma_2003_Indonesia | Selma | 2003 | Indonesia |
| Babbette_Morocco | Babbette | | Morocco |
| Erhart_1985_Japan | Erhart | 1985 | Japan |
| 1997_France | | 1997 | France |
| Derward_1985_China | Derward | 1985 | China |
+----------------------+------------+------+-----------+
=arrayformula(substitute(if(isblank(B2:B),,B2:B&"_")&if(isblank(C2:C),,C2:C)&if(isblank(D2:D),,"_"&D2:D),"__","_"))
screenshot of data & formula
对于您当前的数据集尝试
=ArrayFormula(substitute(trim(transpose(query(transpose(B2:D),,rows(B2:B)))), " ", "_"))
看看是否可行?
这里有一个解决方案,可以处理出现的双名(或带有 space 的国家/地区名称)。单元格 A2
:
=arrayformula(regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",))
我还建议添加一个 array_constrain
以防止公式一直沿用到 sheet。
=arrayformula(array_constrain(regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",),MAX(IF(B:D<>"",ROW(B:B))),1))
此外,要在单元格 A1
中找到带有标题的公式,您可以使用:
=arrayformula(array_constrain({"NiceName";regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",)},MAX(IF(B:D<>"",ROW(B:B))),1))
我喜欢 textjoin,因为它具有“忽略空单元格”功能,它真的很干净。但是,它不能与 ArrayFormula 一起为我自动填充列。所以似乎需要一个更混乱的解决方法。这就是我想出的。有人知道更简单的解决方案吗?
单元格 A2 中的公式应将单元格 B、C 和 D 中的值与分隔符结合起来,并且不得有任何额外的分隔符,例如前导或尾随 _s,或中间的 _ _。
+----------------------+------------+------+-----------+
| NiceName | first_name | year | country |
+----------------------+------------+------+-----------+
| Kaylee_1999 | Kaylee | 1999 | |
| Selma_2003_Indonesia | Selma | 2003 | Indonesia |
| Babbette_Morocco | Babbette | | Morocco |
| Erhart_1985_Japan | Erhart | 1985 | Japan |
| 1997_France | | 1997 | France |
| Derward_1985_China | Derward | 1985 | China |
+----------------------+------------+------+-----------+
=arrayformula(substitute(if(isblank(B2:B),,B2:B&"_")&if(isblank(C2:C),,C2:C)&if(isblank(D2:D),,"_"&D2:D),"__","_"))
screenshot of data & formula
对于您当前的数据集尝试
=ArrayFormula(substitute(trim(transpose(query(transpose(B2:D),,rows(B2:B)))), " ", "_"))
看看是否可行?
这里有一个解决方案,可以处理出现的双名(或带有 space 的国家/地区名称)。单元格 A2
:
=arrayformula(regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",))
我还建议添加一个 array_constrain
以防止公式一直沿用到 sheet。
=arrayformula(array_constrain(regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",),MAX(IF(B:D<>"",ROW(B:B))),1))
此外,要在单元格 A1
中找到带有标题的公式,您可以使用:
=arrayformula(array_constrain({"NiceName";regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",)},MAX(IF(B:D<>"",ROW(B:B))),1))