【问题标题】:conditionally concatenate text from multiple records in vba有条件地连接来自vba中多个记录的文本
【发布时间】:2011-08-12 16:38:49
【问题描述】:

样本数据: UniqueID 描述 ConsolidatedText str1 这是一个句子 这是一个句子 Str2 还有一句话。还有一句话。还有一些话 Str2 还有一些话 Str3 123 123
Str4 abc abc ###" Str5 ###

我有许多记录(约 4000 条),每条记录都有一个 UniqueID 值(文本)和一个文本字段(可能很长),这是用户输入的数据描述。我需要通过将所有描述连接到一个记录中来合并电子表格,其中多次出现 UniqueID 值。通常,我想遍历潜在值的范围并说“如果 UniqueID 相等,则获取所有描述值并将它们连接到一行中(第一行或新行),然后删除所有旧的行。”基本上,我想在此示例数据中创建 ConsolidatedText 字段,然后还删除多余的行。这超出了我的 VBA 编程能力,任何有关此宏结构的帮助将不胜感激。

【问题讨论】:

标签: vba excel string-concatenation


【解决方案1】:
Option Explicit

Sub Tester()
    Dim d As Object
    Dim c As Range, sId, sDesc, k

    Set d = CreateObject("Scripting.Dictionary")
    For Each c In ActiveSheet.Range("A2:A4002")
        sId = Trim(c.Value)
        sDesc = c.Offset(0, 1).Value
        If Not d.Exists(sId) Then
            d(sId) = sDesc
        Else
            d(sId) = d(sId) & "   " & sDesc
        End If
    Next c

    DumpDict ActiveSheet.Parent.Sheets("Summary").Range("A2"), d

End Sub

Sub DumpDict(rng As Range, d As Object)
Dim k
    For Each k In d.Keys
        rng.Value = k
        rng.Offset(0, 1).Value = d(k)
        Set rng = rng.Offset(1, 0)
    Next k
End Sub

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2013-05-15
    • 2017-11-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多