我使用过的大多数电子表格软件都有一个文本到列功能,可以使用多个条件(分隔符、字符数等)将单个列拆分为多个列。我想相反执行此操作。
我知道我可以使用公式创建第三列,其中两个单元格的值连接在一起,并在它们之间使用分隔符,但这看起来很笨拙。
为什么这不是内置函数?还是在我看不到的地方?
最佳答案
内置函数可让您将多个单元格合并为一个单元格,每个单元格之间有分隔符。
假设您希望在每个值之间使用 ,
连接单元格 A1
到 A5
。
Excel 2016
=TEXTJOIN(",",TRUE,A1:A5)
<小时/>
旧版 Excel 版本
您可以轻松组合而无需分隔符:
=CONCAT(A1:A5)
与 concat 等效的是 &
文本运算符,您可以这样使用:
=A1 & A2 & A3 & A4 & A5
...与 CONCAT
的结果相同。添加逗号分隔符:
=A1 & "," & A2 & "," & A3 & "," & A4 & "," & A5
<小时/>
替换TEXTJOIN
函数
更好的是,我们可以构建我们自己的 TEXTJOIN
版本,我将其称为 TXTJOIN
:
Function TxtJoin(delim As String, ignoreEmpty As Boolean, rg As Range) As String
Dim c As Range
For Each c In rg
If Not ignoreEmpty Or Not IsEmpty(c) Then TxtJoin = TxtJoin & delim & c
Next c
If TxtJoin <> "" Then TxtJoin = Mid(TxtJoin, Len(delim) + 1)
End Function
第一个参数delim
是放置在每个值之间的分隔符,可以是一个或多个字符,甚至可以是特殊字符,例如行的CHAR(10)
Feed(将显示在启用自动换行的单元格中。)
如果您希望结果中包含空白单元格,并且每个单元格之间有分隔符,则第二个参数 ignoreEmpty
可以为 FALSE,或者为 TRUE 以跳过空白单元格。 (显然,如果指定的范围没有空白单元格,那么您选择什么选项都没有关系。)
第三个参数是单元格范围。如果指定了多于一行或多列,则公式将从右到左然后从上到下读取。
在我们的示例中,您可以像这样使用它:
=TxtJoin(",",TRUE,A1:A5)
(这与 Excel 2016 的 TEXTJOIN
函数的用法相同。)
关于excel - 在 Excel/Calc 中将文本反转为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642320/