将文本反转到Excel / Calc中的列

时间:2018-04-04 03:32:05

标签: excel string vba libreoffice-calc text-manipulation

我使用的大多数电子表格软件都有一个 text-to-columns 函数,它使用多个条件(分隔符,字符数等)将单个列拆分为多个列。我想这样做反向

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

为什么这不是内置功能?还是在某个我看不到的地方?

2 个答案:

答案 0 :(得分:3)

有一些内置函数可以将多个单元格组合成一个单元格,每个单元格之间都有一个分隔符。

假设您想要将单元格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)等特殊字符(可以显示在包含此字符的单元格中) 启用了Word Wrap 。)

如果您希望结果中包含空白单元格,并且每个单元格之间具有分隔符,则第二个参数ignoreEmpty可以为FALSE,或者为TRUE以跳过空白单元格。 (显然,如果指定的范围没有空白单元格,那么选择哪个选项并不重要。)

第三个参数是一系列单元格。如果指定了多个行或列,则公式将从右向左,从上到下阅读。

通过我们的示例,您可以像以下一样使用它:

=TxtJoin(",",TRUE,A1:A5)

(这与Excel 2016&#39 {s} TEXTJOIN功能的用法相同。)

答案 1 :(得分:0)

这适用于LibreOffice 5.4.3.2。如果它在您的版本中不起作用,您可能需要下载并安装较新版本。

=TEXTJOIN(",";;A1:A5)
  

通过内置功能,我的意思是通过类似于Text-to-columns功能的软件自动内置。

我没有看到这样的功能。因为电子表格功能运行良好,所以不需要它。