- ベストアンサー
【Excel】重複データのカウント方法
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
サンプルの通りIDが数値で記入してある前提で。 C1に =COUNT(0/FREQUENCY(IF(B2:B15="果物",A2:A15),IF(B2:B15="果物",A2:A15))) と記入して,コントロールキーとシフトキーを押しながらEnterするなど。 #別のもっと簡単な方法: C2に =IF(AND(B2="果物",MATCH(A2,A:A,0)=ROW(A2)),A2,"") 以下C15までコピー C1: =COUNT(C2:C15)
その他の回答 (1)
Option Explicit Sub koumokutasu() Dim myDic As Object, myKey, myItem Dim myVal Dim i As Long Set myDic = CreateObject("Scripting.Dictionary") Range("D2", Range("E" & Rows.Count).End(xlUp)).ClearContents Range("D1:E1").Value = Range("A1:B1").Value ' ---元データを配列に格納 myVal = Range("A2", Range("A" & Rows.Count).End(xlUp)).Resize(, 2).Value ' ---myDicへデータを格納 For i = 1 To UBound(myVal, 1) If Not myVal(i, 1) = Empty Then If Not myDic.exists(myVal(i, 1)) Then '---新たなkeyの時はkeyとitemを追加します myDic.Add myVal(i, 1), myVal(i, 2) Else '---すでに存在しているkeyの時はitemを加算します myDic(myVal(i, 1)) = myDic(myVal(i, 1)) + myVal(i, 2) End If End If Next ' ---Key,Itemの書き出し myKey = myDic.keys myItem = myDic.items For i = 0 To UBound(myKey) Cells(i + 2, 4).Value = myKey(i) Cells(i + 2, 5).Value = myItem(i) Next Set myDic = Nothing End Sub これの後にSUMIF()使えばいいですが
お礼
早速マクロをご指示くださり、ありがとうございました。
お礼
作業用の列を追加したくなかったため、お教えいただいた FREQUENCY で 理想の結果となりました。配列関数を使うことは頭にありませんでした。 本当にありがとうございました。