vba – 在第1列中查看值并显示第2列值

我的数据集看起来像

Col A   
A/05702; A/05724; A/05724;A/05724;A/05725;A/05725;
corresponding Col B
1;1;2;3;1;3;

我试图得到结果

Col C
A/05702;A/5724;A05725

和相应的

 ColD1; 1,2,3; 1,3

这将在COLA中查找相同的值,然后如果发现COLB值变为COLD并以“,”分隔

任何帮助表示赞赏.

您绝对可以利用Microsoft Scripting Runtime库中的Dictionary对象.使用Tools-> References在VBE中添加引用.

基本上,字典允许您根据唯一键存储值.您还希望创建一组唯一键,但在遇到该键的新行时,请继续追加该键的值.

这是代码:

Option Explicit

Sub GenerateSummary()
    Dim wsSource As Worksheet
    Dim rngSource As Range
    Dim rngTarget As Range
    Dim lngRowCounter As Long
    Dim objData As New Dictionary
    Dim strKey As String, strValue As String

    'get source data
    Set wsSource = ThisWorkbook.Worksheets("Sheet2")
    Set rngSource = wsSource.Range("A1:B" & wsSource.Range("A1").CurrentRegion.Rows.Count)

    'analyse data
    For lngRowCounter = 1 To rngSource.Rows.Count
        'get key/ value pair
        strKey = rngSource.Cells(lngRowCounter, 1).Value
        strValue = rngSource.Cells(lngRowCounter, 2).Value
        'if key exists - add to value; else create new key/ value pair
        If objData.Exists(strKey) Then
            objData(strKey) = objData(strKey) & ", " & strValue
        Else
            objData.Add strKey, strValue
        End If
    Next lngRowCounter

    'output dictionary to target range
    'nb dictionary is zero-based index
    Set rngTarget = wsSource.Range("C1")
    For lngRowCounter = 1 To objData.Count
        rngTarget.Cells(lngRowCounter, 1).Value = objData.keys(lngRowCounter - 1)
        rngTarget.Cells(lngRowCounter, 2).Value = objData(objData.keys(lngRowCounter - 1))
    Next lngRowCounter

End Sub

更新

为清楚起见,我将发布我输入的数据的屏幕截图以测试此代码.所以,在我的Sheet2上 – 这是一个全新的,没有任何其他数据 – 我有这些条目:

enter image description here

然后运行宏后,它看起来像这样:

enter image description here

https://stackoverflow.com/questions/37923950/look-values-in-column-1-and-bring-column-2-values

转载注明原文:vba – 在第1列中查看值并显示第2列值