[[20220907214851]] 『重複を省き条件により日数をカウントしたい』(リンゴ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『重複を省き条件により日数をカウントしたい』(リンゴ)

質問させていただきます。
以下のような表があります。
Sheet1のA2=西暦、B2=月、C2=日数カウント結果を表しています。
すると、Sheet2から月内の日数をカウントさせたいのです。
その際の条件は、以下のとおりです。
・同じ日付は「1」としてカウント
・E列が「1」の場合をカウント(「0」はカウントしない)
よろしくお願いいたします。

Sheet1
___A_______B______C
1__2022____9______2

Sheet2
__A_____________B_______C________D________E
1__2022/9/1______2022____9________253______1
2__2022/9/1______2022____9________255______0
3__2022/9/1______2022____9________254______1
4__2022/9/2______2022____9________253______0
5__2022/9/3______2022____9________255______0
6__2022/9/3______2022____9________254______1

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 ・Sheet1 の条件は説明通り 2行目
 ・Sheet2 のデータ範囲は 2〜100行目

 Sheet1
 C2 =COUNT(0/FREQUENCY(IF((Sheet2!B2:B100=A2)*(Sheet2!C2:C100=B2)*(Sheet2!E2:E100=1),Sheet2!A2:A100),Sheet2!A2:A100))
 Ctrl+Shift+Enter で確定 ← 配列数式

 ■作業列を使ってもいいのなら・・・
 Sheet2のF列
 F2 =IF(AND(B2=Sheet1!$A$2,C2=Sheet1!$B$2,E2=1),A2,"")
 下コピー

 Sheet1
 C2 =COUNT(0/FREQUENCY(Sheet2!F2:F100,Sheet2!F2:F100))
 普通に Enter だけで確定

 以上
(笑) 2022/09/07(水) 23:09

笑様、夜分遅くに失礼します。
=COUNT(0/FREQUENCY(IF((Sheet2!B2:B100=A2)*(Sheet2!C2:C100=B2)*(Sheet2!E2:E100=1),Sheet2!A2:A100),Sheet2!A2:A100))
この関数で早速試してみたところ、見事にカウントしてくれました。素晴らしいです。
ありがとうございました。
(リンゴ) 2022/09/08(木) 00:01

まだ 途中までなのですが、

=FREQUENCY(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1)*OFFSET(Sheet2!$A$1,0,4,COUNT(Sheet2!$A:$A),1),DATE($A$1,$B$1,ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+1,1))-1))

此の 式の、
最初と、最後の、
項を 省き、
集計すると、

出ると 思うのですよ。
(Nouble) 2022/09/09(金) 14:50


出来ました、

少し 方針を、
変えまして 省くのではなく、
0にすれば、

集計に 含めても、
構わないと、

寝たら 気付きましたので、
其方に 変えました。
_

此方です、

=SUMPRODUCT(SIGN(ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+2,1))<>1)*(ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+2,1))<>DAY(EOMONTH(DATE($A$1,$B$1,1),0))+2)*FREQUENCY(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1)*OFFSET(Sheet2!$A$1,0,4,COUNT(Sheet2!$A:$A),1),DATE($A$1,$B$1,ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+1,1))-1)))

Enterでの 確定だけで、
機能します、
お試し 頂けますか?
_

動作証明ファイル、

https://1drv.ms/x/s!AjviygfJDgV_gZAJrr1K9Pq5Cd8CFw

(Nouble) 2022/09/10(土) 19:33


お邪魔します。(解決済みですよね)

Power Queryで、こんなことができるという紹介です。
関数が苦手の方向け。長い数式が苦にならない方は無視してください。

グループ化という機能で、重複を除外して行数をカウントできます。
今回のお題にピッタリです。初めて使ってみました(たぶん)。

 1)元データ
 YMD            Y        M       CD      FLG
 2022/9/1       2022     9       253      1
 2022/9/1       2022     9       255      0
 2022/9/1       2022     9       254      1
 2022/9/2       2022     9       253      0
 2022/9/3       2022     9       255      0
 2022/9/3       2022     9       254      1
 2022/10/1      2022     10      254      1
 2022/10/1      2022     10      256      1

 2)結果(月別の一覧)
   Y       M     カウント
   2022    9        2
   2022    10       1

 3)操作手順
 ・[FLG]列でフィルターで1を抽出
 ・[YMD][Y][M]列以外を削除
 ・[Y][M]列を選んでグループ化
      新しい列名;カウント 操作:個別の行数のカウント
 ・閉じて読み込む

指定の年月の結果のみ表示ということも可能ですが
あえて一覧表での出力としています。

(マナ) 2022/09/10(土) 22:41


駄目ですね、

徹夜明けの 疲れた、
発想を 引きずると。
_

・同じ日付は「1」としてカウント

此の 意味が、
掴めず 含めてませんが、

もっと 簡単に、
できますよね。
_

式、

=SUMPRODUCT((YEAR(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1))=$A$1)*(MONTH(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1))=$B$1)*OFFSET(Sheet2!$A$1,0,4,COUNT(Sheet2!$A:$A),1))
_

逆に、

同日 複数件数を、
全て 延べてしまい、
1と するならば。
_

式、

=SUMPRODUCT(SIGN(FREQUENCY((YEAR(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1))=$A$1)*(MONTH(OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1))=$B$1)*OFFSET(Sheet2!$A$1,0,0,COUNT(Sheet2!$A:$A),1)*OFFSET(Sheet2!$A$1,0,4,COUNT(Sheet2!$A:$A),1),DATE($A$1,$B$1,ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+1,1))-1))*(ROW(OFFSET($A$1,0,0,DAY(EOMONTH(DATE($A$1,$B$1,1),0))+2,1))<>1)))

此方で 十分では、
ないですかね。
(Nouble) 2022/09/11(日) 00:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.