既に閉じられた投稿ですが、
[Excel複数条件の式]
https://oshiete.goo.ne.jp/qa/12462480.html
に対して、fujillinさんが
=SUMPRODUCT((A1:A100<>"")*(WEEKDAY(A1:A100,2)>5)*(B1:B100=""))
という見事な回答をされています。
SUMPRODUCTは昔から存在する関数ですが、私が使用する Excel 2019 にある SUMIFS関数で上式と同じ戻り値を得る方法があれば教えてください。
No.2ベストアンサー
- 回答日時:
関数にはその特徴により、「向き・不向き」があります。
ご質問者は
>土日が赤になっていて、備考が空白のものをカウントしたい場合
と質問されています。
カウントしたいのであれば、トモクンアヤチャンさんの回答のように、素直にCOUNTIFSを使うか、
あるいはfujillinさんの回答のようにSUMPRODUCT関数を使うのが「王道」だと思います。
これが、例えば
(1)土日の売上を集計したい。
(2)ただし、売上の発生していない土日については備考欄に記載があり、売上発生の場合は空欄である。
というようなケースではSUMIFSの出番になります。(SUMPRODUCTはある意味万能でこのようなケースでも使用可能です)
つまり、「カウントする」のではなく「集計する」「加算する」というようなケースにはSUMIFS関数が向いているということになります。
したがって、ご質問のようなケースで無理やりSUMIFS関数を使おうとすると作業列を追加せざるを得ないことになります。
「関数の勉強」のため、SUMIFSの機能をもっと深く知りたいという目的なら意味がありますが、実務としてSUMIFS関数で「集計」ではなく「カウント」を行うことは無駄が多くお勧めできません。
どうしてもSUMIFSとおっしゃるのであれば、添付画像のように作業列を追加すれば可能です。(添付画像は2021年7月ひと月分のデータとします)
添付画像のC2には、
WEEKDAY(A2,2)
という数式を入れて下方向へコピーしてあります。また、D列は「全ての行に『1』を入力しておく」など、ある意味無駄と思える作業が必要になってしまいます。
この状態で「カウント」を表示したいセルに
=SUMIFS(D2:D32,C2:C32,">5",B2:B32,"")
を記述すればよいということになります。
No.1
- 回答日時:
SUMPRODUCTは配列を指定するのに対して、sumifsは検索範囲を指定するので、WEEKDAY(A1:A100,2)>5という記述はエラーになるようです。
そこで、c列(どこでも使ってないところ)に
=IF(A1="","",WEEKDAY(A1,2))(A1:A100までcopy)
とし、
=COUNTIFS(C1:C100,">5",B1:B100,"")
とすればできると思います。sumifは加算なので加算すべき数値を作る必要があります。sumproductは真なら1偽なら0を設定しています。
countifなら1を加算します。
トモクンアヤチャンさん、
コメント、多謝です。m(_._)m
古典的なSUMPRODUCTでできるものは、比較的新しいSUMIFSで実現可能と思い込んでいた私の能力不足で、実は良くは理解できておりません。
でも、ご提示いただいた「=COUNTIFS(…)とすればできる」ことは確認できました。
「sumifは加算なので加算すべき数値を作る必要があ」るとの由、該当する作業列を作成してでも、SUMIFSでの方法を教えていただけないでしょうか?それは無理難題なことでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) excel関数について 3 2022/06/06 21:58
- Excel(エクセル) Excel関数について質問です。 シート1に入力シートがあります。 =A1 =B1などで離れた数字な 5 2022/12/18 13:42
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) 隣り合っていないセルを まとめて税込表示したい 8 2022/09/25 14:32
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
エクセルで行の高さ及び列幅の...
-
【Excel VBA】指定した行の最大...
-
プルダウンに【なし、平均、デ...
-
時間の重複チェック
-
複数回答のクロス集計の方法
-
マクロで行の高さを設定したい
-
EXCEL 最終行のデータを他のセ...
-
EXCELで日付を比べ3か月以内の...
-
エクセルの時刻のカウントが出...
-
複数列の条件抽出したCOUNT
-
Excel VBA オートフィルター 期...
-
エクセル データの入力規制「リ...
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
列と行の名前(重複あり)が交...
-
excel / ピポッド 日数を出したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
急ぎ!色のついたセルを非表示...
-
【Excel VBA】指定した行の最大...
-
エクセル関数について
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
文字列を比較し、相違するフォ...
-
Excelで教えてください。 入力...
-
EXCEL 最終行のデータを他のセ...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル VBA 行間隔を飛ばした...
-
エクセル関数について
-
プルダウンに【なし、平均、デ...
-
時間の重複チェック
-
excel / ピポッド 日数を出したい
-
VBA 複数行の検索及び抽出
おすすめ情報