【问题标题】:How to "textjoin" with arrayformula (including ignoring empty cells)?如何使用arrayformula“textjoin”(包括忽略空单元格)?
【发布时间】:2021-08-18 20:12:41
【问题描述】:

我喜欢 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

【问题讨论】:

  • 只需将公式复制并粘贴到其他行即可节省您的时间,哈哈

标签: excel google-sheets google-sheets-formula array-formulas textjoin


【解决方案1】:

为您当前的数据集尝试

=ArrayFormula(substitute(trim(transpose(query(transpose(B2:D),,rows(B2:B)))), " ", "_"))

看看这是否有效?

【讨论】:

    【解决方案2】:

    如果出现双重名字(或带有空格的国家/地区名称),这是处理双重名字的解决方案。单元格A2:

    =arrayformula(regexreplace({B2:B&if(C2:C<>"","_"&C2:C&"_","_")&D2:D},"^\_|\_$",))

    我还建议添加一个 array_constrain 以防止公式一直在工作表中起作用。

    =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))

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 2019-11-08
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多