【问题标题】:concatenate unknown number of column and rows [duplicate]连接未知数量的列和行[重复]
【发布时间】:2018-06-07 12:17:02
【问题描述】:

几天以来我一直在尝试一些东西,但我真的很迷茫。有人可以帮我解决一下吗。

我想将 Excel 中的列从第一列连接到最后一个非空列,并在每列之间添加一个逗号。

之后,我想将循环从第一行应用到最后一个非空行。

我用已知的列数成功地做到了(我在后面添加代码),但当列数未知时却没有。

Range("H2").Select
ActiveCell.FormulaR1C1 = _
    "=CONCATENATE(RC[-7],"","",RC[-6],"","",RC[-5],"","",RC[-4],"","",RC[-3],"","",RC[-2])"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H" & Range("A2").End(xlDown).Row), Type:=xlFillDefault

【问题讨论】:

  • 哪个版本的 Excel?
  • 如果您拥有 Office 2016,请使用 TEXTJOIN。如果您想用逗号分隔符连接 A 列中的每个填充单元格,您可以使用:=TEXTJOIN(",",TRUE,A:A)
  • 感谢您的回复。我正在使用 Excel 2013。我尝试做的是将 A2、B2、C2、... 连接到最后一个非空列。

标签: vba excel concatenation


【解决方案1】:

这里是TEXTJOIN,对于没有它的版本(Excel 2013 和更早版本):

Option Explicit
Function TEXTJOIN(delimiter As String, ignore_empty As String, ParamArray textn() As Variant) As String
    Dim i As Long
    For i = LBound(textn) To UBound(textn) - 1
        If Len(textn(i)) = 0 Then
            If Not ignore_empty = True Then
                TEXTJOIN = TEXTJOIN & textn(i) & delimiter
            End If
        Else
            TEXTJOIN = TEXTJOIN & textn(i) & delimiter
        End If
    Next
    TEXTJOIN = TEXTJOIN & textn(UBound(textn))
End Function

(Source)


示例

如果您想连接 A 列中的每个填充单元格,使用逗号作为分隔符,您可以使用:

=TEXTJOIN(",",TRUE,A:A)

【讨论】:

  • 谢谢。我成功将 TEXTJOIN 函数下载到 excel 中。但是我承认,当我键入您输入的文本或尝试使用随机单元格时,它会作为文本保留在单元格中,并且不会显示最终结果。如果我想用线代替列,我可以用 2:2 代替 A:A 吗?
  • 您链接的源页面未加载
  • 我有 2016 年,但似乎没有 TEXTJOIN
  • 感谢ashlee提供的代码,我将它复制粘贴到vba中,现在我有了这个功能。只是当我想应用它时,它会在单元格中保留一个文本(例如 =TEXTJOIN (....))并且它不会显示最终结果
  • @FlorianDubocq - 可能单元格格式为Text 或者您在= 之前放置了一个空格?这与 VBA 函数无关。你可以让=1+1 在同一个单元格中工作吗?
猜你喜欢
  • 2019-07-10
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2019-05-25
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多