【问题标题】:Excel - All unique words in a rangeExcel - 范围内的所有唯一词
【发布时间】:2013-11-29 04:45:07
【问题描述】:

也许我试图做的太多了,但我有一列充满了文字。每个单元格有任意数量的单词,例如:

     |         A          |
=====|====================|
  1  | apple pear yes cat |
  2  | apple cat dog      |
  3  | pear orange        |

我需要做的是创建一个列,该列是该范围内所有唯一单词的列表。所以对于上面的例子,结果应该是:

     |         A          |   B    |
=====|====================|========|
  1  | apple pear yes cat | apple  |
  2  | apple cat dog      | pear   |
  3  | pear orange        | yes    |
  4  |                    | cat    |
  5  |                    | dog    |
  6  |                    | orange |

没有特别的顺序。有没有办法做到这一点?

【问题讨论】:

  • 使用 vba 是的,但我知道没有公式或简单的一系列步骤使用嵌入式函数来完成所需的结果。

标签: excel vba formulas


【解决方案1】:

此选项使用 1 个循环而不是 3 个循环,我喜欢使用字典或 Collection。

Sub Sample()
Dim varValues As Variant
Dim strAllValues As String
Dim i As Long
Dim d As Object

'Create empty Dictionary
Set d = CreateObject("Scripting.Dictionary")

'Create String With all possible Values
strAllValues = Join(Application.Transpose(Range("A1", Range("A" & Rows.Count).End(xlUp))), " ")

'Split All Values by space into array
varValues = Split(strAllValues, " ")

'Fill dictionary with all values (this filters out duplicates)
For i = LBound(varValues) To UBound(varValues)
    d(varValues(i)) = 1
Next i

'Write All The values back to your worksheet
Range("B1:B" & d.Count) = Application.Transpose(d.Keys)
End Sub

【讨论】:

    【解决方案2】:

    试试这个小宏:

    Sub dural()
        Dim N As Long, U As Long, L As Long
        N = Cells(Rows.Count, "A").End(xlUp).Row
        Dim st As String
        For I = 1 To N
            st = st & " " & Cells(I, 1)
        Next I
        st = Application.WorksheetFunction.Trim(st)
        ary = Split(st, " ")
        U = UBound(ary)
        L = LBound(ary)
        Dim c As Collection
        Set c = New Collection
        On Error Resume Next
        For I = L To U
            c.Add ary(I), CStr(ary(I))
        Next I
        For I = 1 To c.Count
            Cells(I, 2).Value = c.Item(I)
        Next I
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2022-01-26
      • 2017-08-06
      • 2018-05-23
      相关资源
      最近更新 更多