Excel-在一个列中查找唯一值,在另一列中查找对应的值

米罗蒂夫

我在两列中分别导出了组件和标签的数据库。列A包含一个组件,列B包含与该组件关联的标签。同一组件可以在A列中多次显示,但带有一组不同的标签。

我需要在单元格D中创建组件的唯一列表,并在单元格E列中的组件旁边列出每个关联的标签。

我知道如何在A列中创建值的唯一列表,但是不知道如果在同一单元格中出现多个值,如何分离值。我无法更改数据库导出此数据的方式。

如果这是唯一的方法,那么我对VBA足够了解,因此可以为此创建一个宏。任何帮助,将不胜感激。

这是我需要做的:

这是我需要做的

家用飞碟

您可以通过制作二维字典来做到这一点。我建议字典,因为它照顾到唯一性。我已经编写了一个执行任务的宏(至少在您的示例数据上)。它首先建立二维数据结构,然后按字母顺序打印出来。它包括我在这里找到的排序函数的简化版本:https : //exceloffthegrid.com/sorting-an-array-alphabetically-with-vba/

在我的宏中,数据是从第1行(For i = 1 To Cells(Row.Count...读取到包含数据的最后一行。必要时进行调整。您可能还设置了正确的列字母(只需搜索ActiveSheet.Range就会看到)。

请注意,排序功能按字母顺序排序,因此标签11将在标签2之前。如果这是问题,我认为最快的方法是为标签数组创建第二个排序功能,该功能将标签转换为数字,然后进行比较。我知道,我知道这带来了糟糕的表现,但希望那没关系:)

首先,宏会读取所有输入行,并以,字符分隔(在空格之前删除-如果组件和标签始终由逗号和空格分隔,则可以简化)。对于每个组件,它都会创建一个子词典,标签将在其中存储并填充。如果某个组件多次出现,则现有字典将更新。这是第一个主要的For循环。如果设置了数据,它将打印出按列D和E排序的数据。这是“每个循环”的第二个主要内容。

最后是代码(我在工作簿部分中找到了它,而不是在工作表的代码模块中找到了它,但是也可以在其中工作):

Sub CollectLabels()
    Dim spl() As String
    Dim dict
    Dim subDict
    Dim lbl As String

    ' Collect data into a 2-dimensional dictionary
    Set dict = CreateObject("Scripting.Dictionary")
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        comps = Split(Replace(ActiveSheet.Range("A" & i).Text, " ", ""), ",")
        For Each comp In comps
            If Not dict.Exists(comp) Then
                Set subDict = CreateObject("Scripting.Dictionary")
                dict.Add comp, subDict
            End If
            Labels = Split(Replace(ActiveSheet.Range("B" & i).Text, " ", ""), ",")
            For Each Label In Labels
                dict(comp)(Label) = 1
            Next Label
        Next comp
    Next i

    i = 1
    ' Output the dictionary contents
    For Each Key In SortArray(dict.Keys)
        ActiveSheet.Range("D" & i).Value = Key
        lbl = ""
        For Each Key2 In SortArray(dict(Key).Keys)
            lbl = lbl & Key2 & ", "
        Next Key2
        ActiveSheet.Range("E" & i).Value = lbl
        i = i + 1
    Next Key
End Sub

Function SortArray(arr As Variant)

Dim i As Long
Dim j As Long
Dim Temp

For i = LBound(arr) To UBound(arr) - 1
    For j = i + 1 To UBound(arr)
        If arr(i) > arr(j) Then
            Temp = arr(j)
            arr(j) = arr(i)
            arr(i) = Temp
        End If
    Next j
Next i

SortArray = arr

End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel,计算某一列的总和,其中另一列中的对应行等于一个值

来自分类Dev

在 Excel 中,搜索一列以查找链接到另一列的最高值

来自分类Dev

Excel:如何在一个列中收集与另一列中的重复项关联的唯一值?

来自分类Dev

Excel:从一行中查找唯一值并为其创建一列?

来自分类Dev

Excel:在与另一列匹配的那些值中查找一列的最小值/最大值

来自分类Dev

Excel在另一列中查找列值并在其旁边返回值

来自分类Dev

如果匹配,Excel VBA 在另一列中查找值

来自分类Dev

Excel-在另一列中的日期之间获取列中的唯一值

来自分类Dev

在2个Excel列之间查找唯一值

来自分类Dev

Excel如果一列包含唯一值,而另一列包含一个真值,则返回这些唯一值的所有真值

来自分类Dev

在Excel中查找唯一值

来自分类Dev

Excel:在第2列当前值中查找第一个值

来自分类Dev

Excel公式查找列中的最后一个值并返回相邻单元格的值

来自分类Dev

Excel如何在一个列中找到值存在于另一列中的值

来自分类Dev

如何创建一个Excel公式来查找矩阵中给定值的对应范围?

来自分类Dev

在Excel 2010中,如何在一个列中显示值,而在另一列中显示一个值?

来自分类Dev

excel在另一个工作表上的查找值并从该工作表返回另一列的值

来自分类Dev

Excel - 在当前日期内查找列中的最后一个值

来自分类Dev

如何使Excel从与另一列中最后一个'YES'对应的列中返回日期

来自分类Dev

Excel 公式用于在两列中搜索一列中的唯一值并在另一列中搜索固定值

来自分类Dev

Excel-用另一列中的值替换一列中的值

来自分类Dev

Excel VBA 在 2 列或更多列的组合中查找唯一值

来自分类Dev

在Excel中查找在另一个工作表中没有对应行的行

来自分类Dev

Excel根据另一列中的值过滤列表

来自分类Dev

基于在另一个表中查找代码和值的 Excel 总和

来自分类Dev

Excel公式根据另一列中的值填充一列

来自分类Dev

Excel根据另一列中的值连接一列

来自分类Dev

Excel:根据另一列中的值求和一列

来自分类Dev

根据参考 [Excel] 将一列中的值添加到另一列

Related 相关文章

  1. 1

    Excel,计算某一列的总和,其中另一列中的对应行等于一个值

  2. 2

    在 Excel 中,搜索一列以查找链接到另一列的最高值

  3. 3

    Excel:如何在一个列中收集与另一列中的重复项关联的唯一值?

  4. 4

    Excel:从一行中查找唯一值并为其创建一列?

  5. 5

    Excel:在与另一列匹配的那些值中查找一列的最小值/最大值

  6. 6

    Excel在另一列中查找列值并在其旁边返回值

  7. 7

    如果匹配,Excel VBA 在另一列中查找值

  8. 8

    Excel-在另一列中的日期之间获取列中的唯一值

  9. 9

    在2个Excel列之间查找唯一值

  10. 10

    Excel如果一列包含唯一值,而另一列包含一个真值,则返回这些唯一值的所有真值

  11. 11

    在Excel中查找唯一值

  12. 12

    Excel:在第2列当前值中查找第一个值

  13. 13

    Excel公式查找列中的最后一个值并返回相邻单元格的值

  14. 14

    Excel如何在一个列中找到值存在于另一列中的值

  15. 15

    如何创建一个Excel公式来查找矩阵中给定值的对应范围?

  16. 16

    在Excel 2010中,如何在一个列中显示值,而在另一列中显示一个值?

  17. 17

    excel在另一个工作表上的查找值并从该工作表返回另一列的值

  18. 18

    Excel - 在当前日期内查找列中的最后一个值

  19. 19

    如何使Excel从与另一列中最后一个'YES'对应的列中返回日期

  20. 20

    Excel 公式用于在两列中搜索一列中的唯一值并在另一列中搜索固定值

  21. 21

    Excel-用另一列中的值替换一列中的值

  22. 22

    Excel VBA 在 2 列或更多列的组合中查找唯一值

  23. 23

    在Excel中查找在另一个工作表中没有对应行的行

  24. 24

    Excel根据另一列中的值过滤列表

  25. 25

    基于在另一个表中查找代码和值的 Excel 总和

  26. 26

    Excel公式根据另一列中的值填充一列

  27. 27

    Excel根据另一列中的值连接一列

  28. 28

    Excel:根据另一列中的值求和一列

  29. 29

    根据参考 [Excel] 将一列中的值添加到另一列

热门标签

归档