【问题标题】:Take a column list and break into multiple comma delimited rows获取一个列列表并分成多个逗号分隔的行
【发布时间】:2022-01-05 01:03:40
【问题描述】:

下面的代码获取 A 列中的列表,并将整个列转换为单元格 B1 中的逗号分隔列表。相反,我希望能够控制 A 列中的范围并控制结果转到哪个单元格。例如,我想将 A1:A4 放在 B1 中,然后将 A5:A8 放在 B2 中。任何人都知道如何编码。谢谢

Sub test()
    Range("B1") = Join(Application.Transpose(Range("A1", Range("A" & Rows.Count).End(xlUp)).Value), ",")
End Sub

我希望结果看起来像下图中的第二组。

【问题讨论】:

  • 是否需要VBA,因为这可以在没有代码的公式中完成。
  • Text Join 由于某种原因在我的版本中不起作用。
  • 你真的很想尝试解决这个问题,而不是像我说的那样构建一些定制的东西。
  • 那么Range("B1") = Join(Application.Transpose(Range("A1:A4").Value), ","): Range("B2") = Join(Application.Transpose(Range("A5:A8").Value), ",") ?
  • Tim,效果很好,正是我想要的。

标签: excel vba excel-formula


【解决方案1】:

如果您在使用 TextJoin 时遇到问题并且它肯定无法正常工作(我会努力让它工作而不是解决它),那么这对您有用,这是同一种概念。

Public Function MyTextJoin(ByVal strDelimiter As String, ByVal bIgnoreGaps As Boolean, ByVal rngValues As Range) As String
    Dim objCell As Range, strValue As String, bAddValue As Boolean
    
    For Each objCell In rngValues
        bAddValue = False
        strValue = objCell.Text
            
        If strValue <> "" Then
            bAddValue = True
        Else
            If Not bIgnoreGaps Then bAddValue = True
        End If
        
        If bAddValue Then MyTextJoin = MyTextJoin & strDelimiter & strValue
    Next
    
    If Left(MyTextJoin, 1) = "," Then MyTextJoin = Mid(MyTextJoin, 2)
End Function

仅供参考 - TextJoin 仅在更高版本的 Excel 中可用,所以如果公式根本不存在,那就是原因。

https://support.microsoft.com/en-us/office/textjoin-function-357b449a-ec91-49d0-80c3-0e8fc845691c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 2018-10-28
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多