A あ
B あ
A い
B う
C あ
B い
B あ
C あ
A い
↑のようなセルがあったとします。
これを、左側の項目ごとに、重複を無視して右側の項目の数を数えたいです。
例えば、
Aについては"あ"と"い"の2つだから2、
Bについては"あ"と"い"と"う"で3、
Cについては"あ"だけなので1
という具合です。
補助列を使ったりマクロで数えたりすればできるのですが、
関数のみを使ったやり方はないでしょうか。
※ある範囲内で重複を無視してカウントするだけなら
=SUMPRODUCT(1/SUBSTITUTE(COUNTIF(範囲,範囲),0,0))
でできました。
これを使って、Aについて、Bについて、Cについての条件も
加えようとしましたが、
やり方がわかりません。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
例データ
A2:A12(第1行は空白とする)
1セルに「A あ」のように値が入っているとする。A,B列に分かれて入っているのではないということ)
A あ
B あ
A い
B う
C あ
B い
B あ
C あ
A い
A う
B え
Aの行について
=SUM((LEFT(A2:A12,1)="A")*(COUNTIF(OFFSET($A$2,0,0,ROW(A2:A12)-1),A2:A12)=1)*1)
と入れてSHIFT,CTRL,ENTERの3つのキーを同時押しする。
配列数式。
結果 3
ーー
Bの列については、同じく
=SUM((LEFT(A2:A12,1)="B")*(COUNTIF(OFFSET($A$2,0,0,ROW(A2:A12)-1),A2:A12)=1)*1)
と入れてSHIFT,CTRL,ENTERの3つのキーを同時押しする。
結果 4
配列数式に関心があるものなので、やってみた。
配列数式はSUMPRODUCT関数と双対的のようなので、そちらで出来るかも。
多数例で正しいかチェックして無いのでよろしく。
No.3
- 回答日時:
こんな感じでは
=SUMPRODUCT((MATCH(A1:A9&B1:B9,INDEX(A1:A9&B1:B9,),0)=ROW(A1:A9))*(A1:A9="A"))
ありがとうございます。
まさに求めていた回答です。
ちょっとまだ私の知識ではその式の意味までは理解できないですが、
各関数について調べて理解しようと思います。
SEか何かをされているのでしょうか?
No.2
- 回答日時:
A B C D E F G
1 fld1 fld2 fld3 fld4 fld1 fld4
2 A あ A_あ 1 A 2
3 B あ B_あ 0.5 B 3
4 A い A_い 0.5 C 1
5 B う B_う 1
6 C あ C_あ 0.5 合計/fld4
7 B い B_い 1 fld1 合計
8 B あ B_あ 0.5 A 2
9 C あ C_あ 0.5 B 3
10 A い A_い 0.5 C 1
C2: =A2&"_"&B2
D2: =1/COUNTIF(C$2:C$10,C2)
G2: =SUMPRODUCT((A$2:A$10=F2)*(D$2:D$10))
参考までに、範囲 F6:G10 には範囲 A1:D10 を[データ範囲]とする[ピボットテーブルレポート]による結果を示しておきました。
この回答への補足
ありがとうございます!
教えていただいた上記の方法でできました。
C2、D2の補助列を使わずに、
一気に一行だけで関数を組み合わせてやることは
可能でしょうか?
補助列を使わないやり方はsige1701さんのやり方でできました。
mike_gさんのやり方もとても参考になりました。
ありがとうございました。
No.1
- 回答日時:
こんばんは!
参考になるかどうか判りませんが・・・
↓の画像のように表を作ってみました。
作業列としてA列を3回挿入しています。
A2セルは
=IF(COUNTIF($D$2:D2,D2)=1,ROW(A1),"")
B2セルは
=IF(C2="","",IF(COUNTIF($C$2:C2,C2)=1,ROW(A1),""))
C2セルは
=D2&E2
として、A2~C2セルを範囲指定した後に、オートフィルで下へコピーします。
(数式は1000行目まで対応できるようにしていますので、1000行くらいまでコピーしても構いません)
そして、G2セルに
=IF(COUNT($A$2:$A$1000)>=ROW(A1),INDEX($D$2:$D$1000,SMALL($A$2:$A$1000,ROW(A1))),"")
H2セルに
=IF(G2="","",SUMPRODUCT(($D$2:$D$1000=G2)*($B$2:$B$1000<>"")))
という数式を入れ、G2・H2セルを範囲指定の後、これもオートフィルで下へずぃ~~~!とコピーすると
画像のような感じになります。
(新しくデータが増えても対応できるようにしています)
作業列が多すぎて目障りであれば作業列を「表示しない」にしてもOKかと思います。
以上、参考になれば幸いですが、
少し手間がかかりますので
他に良い方法があれば読み流してくださいね。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) SUMIFとCOUNTIFの違いについて 4 2022/09/29 14:13
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- その他(クラウドサービス・オンラインストレージ) Googleスプレッドシートについて 1 2022/05/11 15:26
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- Excel(エクセル) エクセルの複写について 4 2022/04/10 01:02
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
Accessでフォームに自動入力し...
-
アクセスクエリで教えて下さい...
-
Accessのリンクテーブルのパス...
-
CSVファイルの「0落ち」にVBA
-
ACCESS2019でのエラーメッセージ
-
ACCESS VBA でのエラー解決の根...
-
Access Error3061 パラメータが...
-
Access DAOのExecuteメソッドの...
-
Accessのクエリの結果を、既存...
-
Access VBA [リモートサーバー...
-
Access VBA を利用して、フォル...
-
Accessで作ったデータベースをw...
-
Accessのクエリで、replace関数...
-
AccessVBAについて テーブルの...
-
Accessのフォーム上のテキスト...
-
AccessのDBを理解するコツは?
-
Microsoft365の outlookについて
-
ms access 2013で、チェックボ...
-
Microsoft Accessをクレジット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
ACCESS VBA でのエラー解決の根...
-
Accessのスプレッドシートエク...
-
Access VBA を利用して、フォル...
-
【Access】Dcount関数の複数条...
-
accessデータを指定したExcel、...
-
Accessレポートのチェックボッ...
-
Access VBA [リモートサーバー...
-
Vba Userformを前面に出すについて
-
Accessのリンクテーブルのパス...
-
実行時エラー3131 FROM 句の構...
-
Accessのフォーム上のテキスト...
-
CSVファイルの「0落ち」にVBA
-
Access 複数条件検索の設定が上...
-
アクセス 削除するレコードを含...
-
Access で半角スペースと全角ス...
-
access 更新クエリについて
-
Accessのクエリの結果を、既存...
おすすめ情報