プロが教えるわが家の防犯対策術!

説明が難しいので、貼付画像をご覧下さい。

項目1-7のデータエリアの中に一つでも存在すれば、H列とI列で指示有りと問題ありを
数字の1を入れます。データエリアが全て問題なしの場合は、それぞれ0を入れます。

そして、J列の判定では、H列とI列で一つでも1があれば、数字の1を入れます。

最終行の合計は、単なるH、I、J列の合計数字です。

H、I、J列のスマートな命令文を教えて下さい。

「エクセルで文字の少し変わった計を取りたい」の質問画像

質問者からの補足コメント

  • データの一部に問題なしの「なし」が「無し」となっているセルがありますが、
    すべて「問題なし」と読み替えをお願いします。

      補足日時:2023/05/30 23:25
  • 申し訳ありません。「指示あり」についても、「指示有り」と漢字が入っているセルがありますが、
    すべて「指示あり」と読み替えをお願いします。

      補足日時:2023/05/30 23:26

A 回答 (6件)

No.4さんの回答を支持します。



No.4さんの回答とNo.1さんの回答の考え方は同じだと思います。H列およびI列はCOUNTIF関数を用いて、「指示あり」または「問題あり」のセル数を数えて、0より大きければ1、0なら0(つまり正の数なら1、0なら0)と表示させるという考え方だと思います。

しかし、「正の数なら1、0なら0」と表示させるための数式が「SIGN関数」を用いるか「論理式*1」を用いるかという部分が異なります。

どちらでも求められるということを理解すればよいわけですが、SIGN関数はMicrosoftによると「数値が正の数のときは 1、0 のときは 0、負の数のときは -1 となります」と解説されています。「正の数なら1、0なら0」という要件にピッタリの関数です。

優劣をつけるという意味ではなく、関数の使い使い方のお手本として、こちらを支持したという訳です。

ただ、No.4さんの回答にある数式は右側の括弧が一つ多いようです。従ってH2に記述する数式は

=SIGN(COUNTIF($A2:$G2,H$1))

となります。これを下方向へ必要な数、右方向に一つコピーするということになります。

同じくJ列の「判定」についてもNo.4さんNo.1さんともに(例えばH2+I2のように)H列とI列の和を求めています。ここでも、「正の数なら1、0なら0」と表示させるための数式が「SIGN関数」を用いるか「論理式*1」を用いるかという部分が異なります。どちらでも求められるということを理解すればよいと思います。

ご質問者が掲出された内容に実際に入力してみたものを添付画像としました。
「エクセルで文字の少し変わった計を取りたい」の回答画像6
    • good
    • 0

>データの一部に問題なしの「なし」が「無し」となっているセルがありますが、すべて「問題なし」と読み替えをお願いします。


>申し訳ありません。「指示あり」についても、「指示有り」と漢字が入っているセルがありますが、すべて「指示あり」と読み替えをお願いします。

「なし」「無し」のセルをすべて「問題なし」に置換し、
「指示あり」「指示有り」のセルをすべて「指示あり」に置換すればいい。
そうすればcountifなどの関数で可能でしょう。
    • good
    • 0

=SIGN((COUNTIF($A2:$G2,H$1))


とか
=SIGN(H2+I2)
とかでどうでしょうか?

実際には表記ゆれはなく、文言は統一されているという前提ですが。
    • good
    • 0

●H列・I列に、1以上の数値が出るパターン。



H列に、
=COUNTIF(項目1:項目7,"指示あり")

I列に、
=COUNTIF(項目1:項目7,"問題あり")

J列に、
=IF(H列+I列>=1,1,0)

とすれば、指示ありと問題ありに1以上の数字は出るが、個数のチェックにいいと思う。
J列には、1と0が表示される。

●H列・I列に、1以外が出ないパターン。

H列に、
=if(COUNTIF(項目1:項目7,"指示あり")>=1,1,0)

I列に、
=if(COUNTIF(項目1:項目7,"問題あり")>=1,1,0)

J列に、
=IF(H列+I列>=1,1,0)

これでどうかな?
    • good
    • 0

H2に


=IF(COUNTIF($A2:$G2,H$1),1,0)
を入れて、I列の必要行までコピー。
添付画像だとJ4までコピーになりますね。

J2に
=IF(SUM(H2:I2),1,0)
を入れて、下へコピー。

式は他にも考えられますが、参考に。
    • good
    • 0

こんばんは



スマートかどうかは知りませんけれど・・・
H2セルに
 =(COUNTIF($A2:$G2,H$1)>0)*1
を入力し、H、I列にフィルコピー

J2セルに
 =(H2+I2>0)*1
を入力し、下方にフィルコピー

ではいかが?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!