• 締切済み

EXCEL 重複する番号をひとつにする

EXCELについて教えて頂きたい内容がありますのでよろしくお願い致します。 C列の重複する番号を一つにまとめ、 一つにまとめた中でもH列の数字のMAXを抽出したいです。 【例】 1236148  3 1236148  5 ↓ 1236148  5のみに表示 このように出来る関数などはありますでしょうか? もしくはマクロなどを教えて頂きたいです。 よろしくお願い致します。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

お示しのデータがシート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)
回答No.3

>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)
回答No.2

マクロ(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)
回答No.1

ピボットテーブルで重複のないC列のデータの種類を作り、H列で降順に並べ替えてから、VLOOKUPでH列のMAXを抽出してはいかがでしょう。

関連するQ&A