
重複を除いてデータ数をカウントする「関数」を教えてください。よろしくお願いいたします。
単純に全データからカウントするのであれば、sumproduct等を使えばできますが、困っているのは、一部のデータ(晴のみ)から、重複データを除いて(同じ日に複数回稼働していても1とカウント)集計するという点です。
稼働日 天気 管理番号
2月10日 晴 10022
2月20日 晴 31555
2月20日 晴 10022
2月20日 晴 10022
2月20日 晴 10022
2月24日 晴 44200
2月25日 雨 31555
2月25日 雨 10022
【導きたい答え】
「晴れの日」の「管理番号10022」の稼働日数は、「2」日でした。
(4個ではなく、2個(2日)とカウントしたい)
*Excel2016を使用しています。
*実際はもっと多くのデータが対象となります。あくまで例は簡略化したものです。
*ピボットやVBA?ではなく、エクセル関数で求めたいです。
*可能であれば、作業領域でいったん計算して再集計する等ではなく、一度で求められる方法がいいです。
No.3ベストアンサー
- 回答日時:
No.1です。
ユーザー定義関数の方法をと思っていましたが、VBAはダメ!というコトなので・・・
ただ作業用の列は使ってもOKのようなので、一例です。
↓の画像のようにD列を作業用の列としています。
作業列D2セルに
=IF(AND(B2=G$1,C2=G$2),IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)=1,1,""),"")
という数式を入れこれ以上データはない!というくらいまで下へフィル&コピー!
結果のG3セルには
=SUM(D:D)
という数式を入れています。m(_ _)m

ありがとうございます。
とてもすっきりとした式で求められるのでびっくりしました。
=IF(AND(B2=G$1,C2=G$2),IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)=1,1,""),"")
この式なんですが、IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)=1,1,""),"")
の部分って何を計算?しているんでしょうか。
稼働日の情報、天気の情報、管理番号の情報が 1,1,空白 ならば、空白?
No.4
- 回答日時:
No.3です。
>IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)=1,1,""),"")
>の部分って何を計算?しているんでしょうか。
説明を少しだけ・・・
前半部分の
>IF(AND(B2=G$1,C2=G$2)
は問題ないですよね。
(画像のB列がG1、C列がG2と一致するものだけを対象としています)
さて、上記のIF関数が「TRUE」の場合ですが
前回アップした画像の配置で
2行目から検索し
A列・B列・C列が重複するデータがある場合、最初に出現する行だけに「1」が表示されるようにしています。
これが質問文の中で一番重要な部分になると思います。
※ どこか使っていない列の2行目に
=COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)
という数式を入れ、フィルハンドルで下へコピーしてみてください。
2行目以降、A~C列が重複するデータの出現回数が表示されます。
その中の最初に出現した行だけ(「1」の行だけ)を作業列に表示するようにしています。
あとは単純にプラスすれば質問の回答がそのまま簡単に導き出せます。
No.2
- 回答日時:
添付図参照
D1: =A2&"_"&B2&"_"&C2
E2: =IF(COUNTIF(D$2:D2,D2)>1,"",A2)
F2: =IF(AND(B2=G$3,C2=G$2),E2,"")
F1: =COUNT(F2:F500)

ご回答ありがとうございます。
関数を入れてみたのですが、下記の通り「0」となります。
色がついている箇所(稼働日数や管番、天)というのがよくわかりません。
そこは手入力すべきなのか、自動で返ってくるものなのでしょうか。
Fの列はちゃんと計算式を入れても空白の結果となります。
稼働日 天気 管理番号 稼働日_天気_管理番号 0
2月10日 晴 10022 43141_晴_10022 2月10日
2月20日 晴 31555 43151_晴_31555 2月20日
2月20日 晴 10022 43151_晴_10022 2月20日
2月20日 晴 10022 43151_晴_10022
2月20日 晴 10022 43151_晴_10022
2月24日 晴 44200 43155_晴_44200 2月24日
2月25日 雨 31555 43156_雨_31555 2月25日
2月25日 雨 10022 43156_雨_10022 2月25日
No.1
- 回答日時:
こんばんは!
関数で作業列なしで!となると結構厄介だと思います。
手っ取り早くVBAでの一例です。
↓の画像のような配置になっていて、
F1・F2セルに各条件を入力した時点でマクロが実行されるようにしてみました。
シートモジュールにしてください。
Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("F1:F2")) Is Nothing Or Target.Count > 1 Then Exit Sub
Dim myDic As Object
Dim i As Long, lastRow As Long, cnt As Long
Dim myStr As String
Dim myR
If WorksheetFunction.CountBlank(Range("F1:F2")) = 0 Then
Set myDic = CreateObject("Scripting.Dictionary")
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, 2) = Range("F1") And myR(i, 3) = Range("F2") Then
myStr = myR(i, 1) & "_" & myR(i, 2) & "_" & myR(i, 3)
If Not myDic.exists(myStr) Then
myDic.Add myStr, ""
cnt = cnt + 1
End If
End If
Next i
Range("F3") = cnt
Set myDic = Nothing
Else
Range("F3").ClearContents
End If
End Sub '//この行まで//
※ A~C列の変更ではマクロは動きません。
F1またはF2セルのデータが変わった時点でマクロが実行されます。m(_ _)m

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- 中途・キャリア 契約社員で在職中ですが、正社員目指して転職活動中です。 20代半ばの男です。 2社から内定を頂きまし 5 2022/04/29 13:39
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) excelで同日を除いて数えたい 5 2023/01/15 22:08
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCELで条件に合致したデータから、さらに重複するデータを1と数える
その他(Microsoft Office)
-
SUMPRODUCT 複数条件の重複データ件数
Excel(エクセル)
-
日付を重複を除いてカウントしたいです
Excel(エクセル)
-
-
4
Excel関数で重複と空白を除いてデータの件数を求める方法
Excel(エクセル)
-
5
EXCEL 重複するデータを1としてカウントする方法
Excel(エクセル)
-
6
エクセルで重複を除いた日付のカウント(条件付き)
その他(Microsoft Office)
-
7
フィルターかけた後、重複を除いてカウントしたい。 すみませんアドバイスお願いします! 取引コード 販
Excel(エクセル)
-
8
(エクセル関数)指定期間内で重複を除いて数え上げる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
エクセル
-
【マクロ】アクティブセルの時...
-
【マクロ】A列にある、日付(本...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
【マクロ】WEBシステムから保存...
-
【マクロ】オートフィルターの...
-
Excel 複数のセルが一致すると...
-
エクセルに、105と入力すると、...
-
3〜400人分のデータをExcelで管...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報
「作業領域でいったん計算して再集計する等ではなく、一度で求められる方法希望」と書きましたが、無理そうであれば、いったん「作業領域」で計算する方法でもかまいません。
改めてピボットやVBAは対象外でお願いします。
出来ました!
すみません、いろいろ試していたら、2になりました!
入力項目だったんですね。
ありがとうございます。