我有一个 Excel 数据库,我试图避免手动组合重复数据。除了标签列之外,我有一堆基本相同的列表。我想做的是将这 5 个列表合并为 1 个列表,使类别成为单个单元格中的逗号分隔列表。
转这个
进入这个
有没有办法做到这一点?我的文档有几千个列表,所以我显然试图避免手动编辑路线。我是 Excel 新手,因此您可以指出我的任何手持或教程将不胜感激。
我有一个 Excel 数据库,我试图避免手动组合重复数据。除了标签列之外,我有一堆基本相同的列表。我想做的是将这 5 个列表合并为 1 个列表,使类别成为单个单元格中的逗号分隔列表。
转这个
进入这个
有没有办法做到这一点?我的文档有几千个列表,所以我显然试图避免手动编辑路线。我是 Excel 新手,因此您可以指出我的任何手持或教程将不胜感激。
这也可以使用公式来完成。为了使我的示例正常工作,数据需要按第一列排序,并且需要有一个标题行。
您还需要两列(C 和 D)。首先,添加一个公式,如果 A 列中的数据与其上方的行相同,则本质上说连接 B 列中的数据,否则重置连接。下一列将包含一个用于识别最终串联的公式,以便您稍后进行排序。
这就是我对列 A 和 B 中的列表和类别的处理方式(同样,数据需要按 A 列排序,并且需要有一个标题行):
这是结果。现在我将复制整个范围并将值粘贴到另一张表中。D 列为零的行是我想要使用的。按 D 列排序会将它们浮动到顶部。
这将(应该)从源工作表生成一个新工作表,其中连接了重复项。
要使用以下代码,您需要将其添加到 VBA 编辑器中的新模块
打开 VBA 编辑器的快捷方式是Alt+F11
(对于 Windows)和Alt+Fn+F11
(对于 Mac)
打开编辑器后,通过从主菜单栏中的“插入”菜单中选择它来添加一个新模块。它应该会自动打开准备接受代码的模块,如果没有,您需要从项目资源管理器中选择它(将被命名为“ModuleN”,其中 N 是下一个可用编号)。
我不确定“Scripting.Dictionary”是否在 osx 中可用,但尝试一下也无妨。
Option Explicit
Sub Main()
Dim Source As Worksheet: Set Source = ThisWorkbook.Worksheets("Sheet1")
Dim Destination As Worksheet: Set Destination = ThisWorkbook.Worksheets("Sheet2")
Dim Records As Object: Set Records = CreateObject("Scripting.Dictionary")
Dim Data As Variant
Dim Index As Long
Dim Row As Integer: Row = 1
Data = Source.Range("A1", "B" & Source.Rows(Source.UsedRange.Rows.Count).Row).Value2
For Index = LBound(Data, 1) To UBound(Data, 1)
If Records.Exists(Data(Index, 1)) Then
Destination.Cells(Records(Data(Index, 1)), 2).Value2 = Destination.Cells(Records(Data(Index, 1)), 2).Value2 & ", " & Data(Index, 2)
Else
Records.Add Data(Index, 1), Row
Destination.Cells(Row, 1).Value2 = Data(Index, 1)
Destination.Cells(Row, 2).Value2 = Data(Index, 2)
Row = Row + 1
End If
Next Index
Set Records = Nothing
End Sub