2016-07-12 8 views
1

申し訳ありませんが、他の列の値を組み合わせます。私は関連する回答を検索しようとしましたが、必要なものを解決することができませんでした。私は多くの列を持つデータのリストを持っています。基本的に私は、列Bが同じセルをマージしたいし、同じシート上(列CからXまで)他のすべての一意の値をマージは、重複したセルをマージし、私はVBAに新しいだと

Before

After

はどうもありがとうございました!

答えて

1

私はこれを行うにはscripting.dictionaryを使用します。

あなたは合わせて範囲とシート名を修正する必要があります。また、1000行を超えるデータを扱う場合は、配列のサイズを処理する必要があります。ご返事のための

Sub dave() 

Dim dicKey As String 
Dim dicValues As String 
Dim dic 
Dim data 
Dim x(1 To 1000, 1 To 24) 
Dim j As Long 
Dim count As Long 
Dim lastrow As Long 

    lastrow = Cells(Rows.count, 1).End(xlUp).Row 
    data = Range("A2:X" & lastrow) ' load data into variable 
      With CreateObject("scripting.dictionary") 
        For i = 1 To UBound(data) 
         If .Exists(data(i, 2)) = True Then 'test to see if the key exists 
          x(count, 3) = x(count, 3) & ";" & data(i, 3) 
          x(count, 5) = x(count, 5) & ";" & data(i, 5) 
          x(count, 8) = x(count, 8) & ";" & data(i, 8) 
          x(count, 9) = x(count, 9) & ";" & data(i, 9) 
         Else 
          count = count + 1 
          dicKey = data(i, 2) 'set the key 
          dicValues = data(i, 2) 'set the value for data to be stored 
          .Add dicKey, dicValues 
          For j = 1 To 24 
           x(count, j) = data(i, j) 
          Next j 
         End If 
         Next i 
       End With 

       Sheets("Sheet2").Cells(2, 1).Resize(count - 1, 9).Value = x 
End Sub 
+0

ありがとう!私はそれぞれの列でそれらを調整した後、私はエラーが発生した申し訳ありません。 J = 1の行のエラー「範囲外の添字が」24 – wainseven

+0

に申し訳ありませんが、私はタイプミス、再コピーコードを作って、もう一度試してくださいがあります。 'A:X'から列をコピーする必要があります – KyloRen

+0

ありがとうございます!それは – wainseven

関連する問題