- ベストアンサー
Excelの重複データをまとめる方法とは?【急募】
- Excel2000を使っている場合、A列に重複するデータがあり、B列に別のデータがある場合、重複したデータを1行にまとめる方法を知りたいです。
- 例えば、A列に001が3行あり、B列にaaa、bbb、cccがある場合、1行にまとめてB列のデータをつなげたいです。
- Excelでこのような処理を行う方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シート1が元の表でお示しのデータが2行目からあるとします。当然A列ではデータが昇順で並べられているものとします。 作業列を2つ設けます。 C2セルには次の式を入力します。 =IF(B2="","",IF(COUNTIF(A$2:A2,A2)=COUNTIF(A:A,A2),MAX(C$1:C1)+1,"")) D2セルには次の式を入力します。 =IF(B2="","",IF(A2=A1,D1&"・"&B2,B2)) C2セルとD2セルを選択したのちに右下隅の■をクリックして下方にドラッグコピーします。 お求めの表をシート2に表示させるとしてA2セルには次の式を入力しB2セルまで横にドラッグコピーし、その後下方にもドラッグコピーします。 =IF(COUNTIF(Sheet1!$C:$C,ROW(A1))=0,"",INDEX(Sheet1!$A:$D,MATCH(ROW(A1),Sheet1!$C:$C,0),IF(COLUMN(A1)=1,1,IF(COLUMN(A1)=2,4)))) なお、以上の操作ではシート1のA列の番号は01などの数値である必要もありません。
その他の回答 (2)
- watabe007
- ベストアンサー率62% (476/760)
こんにちは、マクロですが Sub Test() Dim myDic As Object Dim Str As Variant Dim c As Range Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp)) Str = c.Value If Not myDic.Exists(Str) Then myDic(Str) = c.Offset(, 1).Value Else myDic(Str) = myDic(Str) & "・" & c.Offset(, 1).Value End If Next Range("A:B").ClearContents '元データの消去 '集計したデータを貼り付け Range("A1").Resize(myDic.Count, 2).Value = _ Application.Transpose(Array(myDic.Keys, myDic.Items)) Set myDic = Nothing End Sub
お礼
ありがとうございます! 結局は関数を使ってやりましたが、ご丁寧な回答に感謝です。
- keithin
- ベストアンサー率66% (5278/7941)
では、初心者さんでも容易なごく簡単な数式だけで結果を出してみます。 手順: A1に「番号」と記入 A2以下に番号を並べます B1に「データ」と記入 B2以下にB列のデータを並べます。 C1に「作業」と記入 C2に =B2&IF(COUNTIF(A3:A$30000,A2),"・"&VLOOKUP(A2,A3:C$30000,3,FALSE),"") と記入し、リスト下端までコピー貼り付けます A列を列選択 データメニューのフィルタから「フィルタオプションの設定」を開始 指定した範囲 にマーク 抽出範囲にE1セルを指定 重複するレコードは無視するにチェック してOKします F1に「結果」と記入 F2に =VLOOKUP(E2,A:C,3,FALSE) と記入し、リスト下端までコピー貼り付けて完成。 #参考 必要に応じて、F列を列選択、コピー、その場で形式を選んで貼り付けの値にマークしてOKし、値化します。
お礼
ありがとうございます! 結局は他に回答くださった方のやり方でやったのですが、keithinさんの方法も目からうろこで大感謝です。 簡単な関数なのに、すごいですね^^ 私も簡単な関数で、自分のやりたい方向にもっていけるようになりたいです。
お礼
ありがとうございます! KURUMITOさんに教えていただいたやり方でやったら、サクッとできました! 本当に感謝です^^ この関数、私もマスターできるように勉強します。