- 締切済み
EXCEL 重複する番号をひとつにする
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しのデータがシート1のC列からH列の2行目から下方にあるとします。 作業列をI列に設けI2セルには次の式を入力し、式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。 =IF(COUNTIF(C:C,C2)=1,MAX(I$1:I1)+1,IF(AND(COUNTIF(C:C,C2)>1,H2=MAX(IF(C:C=C2,H:H))),MAX(I$1:I1)+1,"")) 式の両側に括弧が付きます。 この式を下方にドラッグコピーします。 これで番号が重複している場合にはH列で大きい数値の行に番号が振られます。また、重複のない番号に行にも番号が振られます。 シート2のC列からH列にそれらの表を表示させるとしたらC2セルには次の式を入力してH2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$I:$I),"",INDEX(Sheet1!$C:$H,MATCH(ROW(A1),Sheet1!$I:$I,0),COLUMN(A1)))
- watabe007
- ベストアンサー率62% (476/760)
>C列の重複する番号を一つにまとめ、 >一つにまとめた中でもH列の数字のMAXを抽出したいです。 結果を Sheets("Sheet2").Range("A1") に書き出しました。 Sub Test() Dim myDic As Object, c As Range Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range("C1", Cells(Rows.Count, "C").End(xlUp)) If myDic(c.Value) < c.Offset(, 5).Value Then myDic(c.Value) = c.Offset(, 5).Value Next Sheets("Sheet2").Range("A1").Resize(myDic.Count, 2).Value = _ Application.Transpose(Array(myDic.Keys, myDic.Items)) Set myDic = Nothing End Sub
- mu2011
- ベストアンサー率38% (1910/4994)
マクロ(VBA)の一例です。 データシートをSheet1、Sheet2に抽出します。 Sheet1タブ上で右クリック→コードの表示→サンプルコード貼り付け→Sheet1上でAlt+F8キー押下→sample実行 Sub sample() Dim i As Long Set Db = CreateObject("Scripting.Dictionary") For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row c = Cells(i, "c") h = Cells(i, "H") If Db.Exists(c) Then If Db(c) < h Then Db(c) = h Else Db(c) = h End If Next With Sheets("sheet2") wk = Db.keys For i = LBound(wk) To UBound(wk) .Cells(i + 1, "A").Value = wk(i) .Cells(i + 1, "B") = Db(wk(i)) Next End With Set Db = Nothing End Sub
- aokii
- ベストアンサー率23% (5210/22063)
ピボットテーブルで重複のないC列のデータの種類を作り、H列で降順に並べ替えてから、VLOOKUPでH列のMAXを抽出してはいかがでしょう。