excel - 在 Excel/Calc 中将文本反转为列

标签 excel string vba libreoffice-calc text-manipulation

我使用过的大多数电子表格软件都有一个文本到列功能,可以使用多个条件(分隔符、字符数等)将单个列拆分为多个列。我想相反执行此操作。

我知道我可以使用公式创建第三列,其中两个单元格的值连接在一起,并在它们之间使用分隔符,但这看起来很笨拙。

为什么这不是内置函数?还是在我看不到的地方?

最佳答案

内置函数可让您将多个单元格合并为一个单元格,每个单元格之间有分隔符。

假设您希望在每个值之间使用 , 连接单元格 A1A5

<小时/>

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/

相关文章:

c# - 如何将值设置为二维 Excel 范围?

python - 使用sqlite从excel表创建数据库,操作错误: near "Android": syntax error

string - 用 + 替换字符串中的所有空格

vba - 在 Excel VBA 中查找给定行号之后的第一个空行

excel - 删除行子处理速度很慢

Excel - 在具有变量名称的两列中匹配

java - 将字符串中的第一个字母大写。我究竟做错了什么?

anchor 标签的 PHP 正则表达式匹配

excel - Visual Studio 单元测试 : Run from Excel

excel - 使用 ColdFusion 创建 Excel 文件的最佳方法是什么?