【发布时间】:2020-07-11 20:55:13
【问题描述】:
我有一个数据集,其中联系信息和姓名与个人工作过的公司相关联。 1个人可以与许多公司相关联。我想整合个人信息,但保留不同公司名称的信息。
我有一个 VBA 函数可以删除重复的行(姓名和联系信息),另一个 VBA 函数可以将两个单独的单元格(公司名称)合并为一个合并单元格。数据不按任何特定字段排序。
我想创建一个函数来删除重复的行,然后合并公司名称单元格,但仅适用于删除重复行的个人(意味着个人与超过 1 家公司相关联)。
感谢您的帮助!
原始数据格式示例:
这是VBA函数1的函数和结果:
Sub RemoveDuplicates()
'UpdatebyExtendoffice20160918
Dim xRow As Long
Dim xCol As Long
Dim xrg As Range
Dim xl As Long
On Error Resume Next
Set xrg = Application.InputBox("Select a range:", "Kutools for Excel", _
ActiveWindow.RangeSelection.AddressLocal, , , , , 8)
xRow = xrg.Rows.Count + xrg.Row - 1
xCol = xrg.Column
'MsgBox xRow & ":" & xCol
Application.ScreenUpdating = False
For xl = xRow To 2 Step -1
If Cells(xl, xCol) = Cells(xl - 1, xCol) Then
Cells(xl, xCol) = ""
End If
Next xl
Application.ScreenUpdating = True
End Sub
函数 2 在下面,该模块只是连接和合并单元格,但我不知道如何编写一个仅适用于个人已删除重复行的函数(意味着该个人与多家公司相关联)。
Sub MergeCells()
Dim xJoinRange As Range
Dim xDestination As Range
Set xJoinRange = Application.InputBox(prompt:="Highlight source cells to merge", Type:=8)
Set xDestination = Application.InputBox(prompt:="Highlight destination cell", Type:=8)
temp = ""
For Each Rng In xJoinRange
temp = temp & Rng.Value & " "
Next
xDestination.Value = temp
End Sub
【问题讨论】:
-
嗨@analyst2020,欢迎来到SO。请提供第一个函数的代码,有人可能会帮助您更新它,以便它执行整个任务。我怀疑你只需要在你的第一个函数中添加一两行来实现你想要的。还请提及任何假设,例如在运行代码之前通过电子邮件对数据进行排序。