【问题标题】: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