- ベストアンサー
期間と条件を指定してカウントする関数。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答No.1の数式に一部誤りがありましたので訂正します。 G4=COUNTIFS($D:$D,F4,C:C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1) ↓ G4=COUNTIFS($D:$D,$F4,$C:$C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1) 数式中のC:Cを$C:$Cに、F4を$F4に修正しました。 誤りの内容はセルの指定で$が不足しているため右にコピーしたとき検索条件範囲が移動してしまうことです。 検証時にはH3セルとI3セルの範囲に入るデータが存在しなかったのでチェック漏れになりました。 あなたの検証で全てが0と表示されることとは異なるチェックミスです。
その他の回答 (3)
- bunjii
- ベストアンサー率43% (3589/8249)
>そこは○○、××、△△に変更致しましたが0のままなのです…。 他の原因としてはC列の日付が文字列になっているときは条件に合致する値を見つけられないので計数の結果は0になります。 検索条件が文字列のときは"8/18">="8/16"と言う論理式は成り立ちません。 従って、C列の日付が文字列のときはシリアル値に置換してください。 文字列をシリアル値に変換する数式は次の通りです。 =VALUE(C3) → VALUE("8/16") → 41867 もう1つ考えられる原因はG3、H3、I3の各セルに入力の文字列が質問の貼付画像と異なる場合は検索条件の日付を取り出せないことになりますので検索条件に合致する値を見つけられません。 従って、計数の結果が0になるでしょう。
- bunjii
- ベストアンサー率43% (3589/8249)
>そうするとG4からI6まで全て0という表記になってしまうんですがこの関数をどこかいじらなければならない んでしょうか?? 関数ではなくF列とD列の比較対象関係を見直してください。 D列の条件はF列にしましたのであなたが提示した画像ではF4に"○"、F5に"×"、F6に"△"としてありますのでそれを"○○"、"××"、"△△"のように変更しないと該当が見つかりませんので結果が0になるでしょう。
お礼
そこは○○、××、△△に変更致しましたが0のままなのです…。
- bunjii
- ベストアンサー率43% (3589/8249)
>この8/16~8/21という指定の仕方がわかりません。 >どういう関数を入れればカウントできますでしょうか? F列には販社の名前を入力してあるものとします。 作業日の期間を3行目のG列から右に提示のような書き方のときで参照します。 G4=COUNTIFS($D:$D,F4,C:C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1) G4セルの数式を右と下へ必要数コピーすれば良いでしょう。 貼付画像はExcel 2013で検証した結果です。 Excel 2007以降のバージョンで再現できるはずです。
お礼
早速の回答ありがとうございます。 G4セルに COUNTIFS($D:$D,F4,C:C,">="&LEFT(G$3,FIND("~",G$3)-1)*1,$C:$C,"<="&MID(G$3,FIND("~",G$3)+1,LEN(G$3))*1) という関数をそのままコピーして貼り付けばいいんですよね…? そうするとG4からI6まで全て0という表記になってしまうんですがこの関数をどこかいじらなければならないんでしょうか??
お礼
文字列でカウントされていませんでした^^ ありがとうございます^^