お世話になります。
重複を含まずに件数を数える方法を教えて下さい。
下のような表がSHEET1にあるとしてC列に●が入っているもので
A列にある種類に対してB列にある産地の件数を重複を含まずに数えたいです。
ちなみに実際の表はA~S列まであり、1万行近くあります。
ピポットだと重複を含んで計算してしまい、困っています。
どうぞよろしくお願いします。
※EXCEL2010を使用です
SHEET1
A列 B列 C列
種類 産地 チェック
リンゴ 青森 ●
ぶどう 山梨
みかん 愛媛 ●
リンゴ 福島 ●
リンゴ 青森 ●
みかん 愛媛 ●
SHEET2
A列 B列
種類 産地件数
リンゴ 2(※青森2、福島1件で重複分は含まないので2件)
みかん 1(※愛媛2件で重複分は含まないので1件)
※ぶどうはC列に●がないので記載しない
No.2ベストアンサー
- 回答日時:
No.1です。
>1万行近くあります。
となるとオートフィルではかなり面倒なので、VBAでの一例です。
>ちなみに実際の表はA~S列まであり・・・
D列以降のデータも対象になるのか不明なので、質問文どおりA~C列までのデータとしてみました。
標準モジュールです。
Sub Sample1()
Dim myDic1 As Object, myDic2 As Object
Dim i As Long, lastRow As Long
Dim myStr As String, wS As Worksheet
Dim myKey, myItem, myR
Set myDic1 = CreateObject("Scripting.Dictionary")
Set myDic2 = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow, "B")).ClearContents
End If
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(2, "A"), .Cells(lastRow, "C"))
For i = 1 To UBound(myR, 1)
If myR(i, 3) <> "" Then
myStr = myR(i, 1) & "_" & myR(i, 2)
If Not myDic1.exists(myStr) Then
myDic1.Add myStr, ""
If Not myDic2.exists(myR(i, 1)) Then
myDic2.Add myR(i, 1), 1
Else
myDic2(myR(i, 1)) = myDic2(myR(i, 1)) + 1
End If
End If
End If
Next i
End With
myKey = myDic2.keys
myItem = myDic2.items
myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B"))
For i = 0 To UBound(myKey)
myR(i + 1, 1) = myKey(i)
myR(i + 1, 2) = myItem(i)
Next i
Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B")) = myR
Set myDic1 = Nothing
Set myDic2 = Nothing
wS.Activate
MsgBox "完了"
End Sub
とりあえずはお望みの結果になると思います。m(_ _)m
No.3
- 回答日時:
データベースクエリでやれば何てことない処理です。
SELECT 種類, Count(種類) As 産地件数
FROM
(SELECT Distinct 種類, 産地, チェック
FROM [Sheet1$A:C]
WHERE チェック = '●')
GROUP BY 種類
No.1
- 回答日時:
こんにちは!
一案です。
↓の画像のように作業用の列を設けてみてはどうでしょうか?
作業列1(Sheet2のA列に重複なしに種類を表示するため)のD2セルに
=IF(AND(C2<>"",COUNTIF(A$2:A2,A2)=1),ROW(),"")
作業列2(産地件数を求めるため)のE2セルに
=IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2)=1,1,"")
という数式を入れフィルハンドルでこれ以上データはない!という位まで下へコピーしておきます。
Sheet2のA2セルに
=IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!D:D,ROW(A1))),"")
B2セルに
=IF(A2="","",SUMIF(Sheet1!A:A,A2,Sheet1!E:E))
という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーすると
画像のような感じになります。
※ 作業列が目障りであれば、遠く離れた列にするか
非表示にしておいてください。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelでASCを使って全角を半角...
-
今まで文字化けなく開けていたc...
-
Microsoft 365Excelの見開きペ...
-
Excel関数について教えてくださ...
-
マクロの処理が遅くなった
-
スプレッドシートで指定された...
-
エクセルの質問です。 F列からL...
-
Excel関数について教えてくださ...
-
エクセルのセル内に分数などの...
-
作成した数式を値として表示し...
-
ワークシートに出現したこの画...
-
条件付き書式設定で罫線を引き...
-
EXCELの散布図で日付が1900年に...
-
タイムスタンプとテキストから...
-
シートの情報を別のシートへま...
-
Excelでの文字色
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルの文字が途中から消える
-
エクセルの数式バーのフォント...
-
エクセルでファイルの最終更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報