从多行的单元格列生成列表

我有一个表,其中一列是项目的属性。 一个项目可以有许多属性,并且每个项目都以单独的文本行存储在一个单元格中。 我想创build一个脚本,用于获取我迄今为止使用的所有属性types,并将该列表保存在第二个工作表中。 它可以通过标准公式无法实现,所以我假定需要使用VBA。 我从来没有使用过VBA,也不知道如何去做这个任务。 另外我找不到任何这种语言的参考。 我正在使用MS Office 2007。

Sub export() Dim cell As Range Dim i As Long, j As Long Dim var() As String j = 1 For Each cell In Sheets(1).Range("a1:a10") Var = Split(cell, vbLf) For i = 0 To UBound(Var) Sheets(2).Range("a" & j).Value = Var(i) j = j + 1 Next i Next cell End Sub 

我的示例循环了sheet1的范围a1:a10中的所有单元格。 适应你的需求。 每个单元格都被换行,每行都被复制到第二个表格中。

这里是@nick rulez的一个修改版本,它使用了一个字典对象,允许你排除所有的重复。

 Sub export() Dim cell As range Dim i As Long, j As Long Dim var As Variant Dim dictionary As Object Set dictionary = CreateObject("scripting.dictionary") On Error Resume Next j = 1 For Each cell In Sheets(1).range("a1:a10") var = Split(cell, vbLf) For i = 0 To UBound(var) dictionary.Add var(i), 1 j = j + 1 Next i Next Sheet2.range("A1").Resize(dictionary.count).Value = _ Application.Transpose(dictionary.keys) End Sub 

它是如何工作的 :它和nick一样,但不是将每个拆分条目写入sheet2,而是将条目添加到字典文件中。 由于字典不会允许2个相同的值的键,它会跳过愚蠢(你需要在错误恢复下一个虽然)。 词典有超酷的转换键arrays的能力,所以最后,我只是一口气复制整个列表。