4

report.xlsx一意の値に基づいてマージされた他の 2 つの Excel ワークブックのデータを含むファイルがあります。Pool_RAM列には からのデータがfile1.xlsxあり、Pool_HDD列にはからのデータがありますfile2.xlsx。両方の列に重複した値が含まれています。次に、同様の値に基づいて行をグループ化し、以下に示すようにフォーマットします。

Report.xlsx Actual Data

ここに画像の説明を入力

そして、データを以下の形式にしたい。

Expected Format

ここに画像の説明を入力

他の情報が必要な場合はお知らせください。

4

1 に答える 1

0

このマクロを試して、必要に応じて調整してください。

Sub GroupMyData()
'Assuming the data source is in column F and G, from row 2 to 1000
'The result will be put in column K and L
'part1: filter to unique values, put in column J temporarily
    Range("F2:F1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("J2" _
        ), Unique:=True

'part2: fill the data
    Range("K1") = Range("F1")
    Range("L1") = Range("G1")
    Range("J2").Select
    Range(Selection, Selection.End(xlDown)).Select
    n = Selection.Count
    Range("K2").Select
    ck = 2
    cl = 2
    For i = 1 To n
      txt = Range("J" & (i + 1))
      numf = WorksheetFunction.CountIf(Range("F2:F1000"), txt)
      For j = 1 To numf
        Range("K" & ck) = txt
        ck = ck + 1
      Next
      numg = WorksheetFunction.CountIf(Range("G2:G1000"), txt)
      For j = 1 To numg
        Range("L" & cl) = txt
        cl = cl + 1
      Next
      If (ck > cl) Then
        cl = ck
      Else
        ck = cl
      End If
      ck = ck + 1
      cl = cl + 1
    Next
'part 3: delete the temporary data
    Range("J2:J1000").Select
    Selection.ClearContents
    Range("K2").Select

End Sub
于 2012-09-21T21:50:11.260 に答える