ここから本文です

複数条件のIF関数について。自分でやってみて上手くいかなかったので質問します。 ...

bla********さん

2018/3/1811:37:10

複数条件のIF関数について。自分でやってみて上手くいかなかったので質問します。
A1、B1、C1、D1 のセルには1または0が入っています。

A1のセルのみに1、B1,C1のセルに0が入っていた場合にE1のセルに1(A1に入っている数字という意味ではなく1=A,2=B、3=Cの意味)が入るような関数を作りたいです。
また複数のセルに1が入っていた場合、またはD1に1が入っていた場合には4を、すべてのセルが0の場合には0とE1セルに入力したいのですがこの場合の関数はどうなりますか?

補足すみません分かりずらかったですね。
実際はA1列に化合物の分子式を一覧として載せています。そしてB列の名前を塩素、C列の名前をフッ素、D列の名前を臭素として、もし分子式の中にCl.F.Brが入っていたら個数関係なく該当の列に1が入るようになってます。
これから同じようにMgやNaなどの列を足していく予定なのですが、列が多くなってしまうので一旦この個別の列をまとめて非表示にして、新たにハロゲン列を作りたいのです。
ハロゲン列に1が入っていたら一目で塩素のみが分子式に入っていると分かり、2が入っていたらフッ素のみが入っていると分かります。そして複数のハロゲンが入っていたら4とハロゲン列に入るようにしたいのです。 ヨウ素に関しては該当の分子式が極端に少ないので、この複数のハロゲンが入っていることを意味する4にまとめたいのです。

閲覧数:
124
回答数:
6

違反報告

ベストアンサーに選ばれた回答

mac********さん

2018/3/1812:13:15

>A1のセルのみに1、B1,C1のセルに0が入っていた場合にE1のセルに1(A1に入っている数字という意味ではなく1=A,2=B、3=Cの意味)が入るような関数を作りたいです。

この質問の意味はB列に1と入力されている場合は「2」、C列に1と入力されている場合は「3」とその合計値を表示したいという意味でしょうか?

>また複数のセルに1が入っていた場合、またはD1に1が入っていた場合には4を、すべてのセルが0の場合には0とE1セルに入力したいのですがこの場合の関数はどうなりますか?

確認ですが、この質問は上の質問(B列が2点、C列が3点)とは全く関係ない独立した条件の話でしょうか?

  • mac********さん

    2018/3/1812:50:09

    >ハロゲン列に1が入っていたら一目で塩素のみが分子式に入っていると分かり、2が入っていたらフッ素のみが入っていると分かります。そして複数のハロゲンが入っていたら4とハロゲン列に入るようにしたいのです。 ヨウ素に関しては該当の分子式が極端に少ないので、この複数のハロゲンが入っていることを意味する4にまとめたいのです。

    ヨウ素が入っていた場合も、ヨウ素を除くすべてのハロゲンが含まれていない場合もB~D列はすべて0になりますので「4」と表示するには別の式が必要となります。

    ひとまず、その条件を除いた数式は以下のようになります。

    =IF(SUM(B2:D2)=0,0,IF(SUM(B2:D2)=1,MATCH(1,B2:D2,0),4))

    ところで、わざわざB列からD列に1を表示するような方法ではなく、直接A列の文字列から含まれている元素を検索する方法にしたほうが簡便なように思うのですが、わざわざ補助列に分ける意味があるのでしょうか。

  • その他の返信(5件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

was********さん

2018/3/1821:26:04

二進数を使うべきでしょう。(表示は十進数)

他の方へのご返信より、分子を構成する原子や官能基の有無を表現するなら複数有っても個々の有無を判断する方が良いのではありませんか。
その際、連番では破たんするでしょう。
二進数として扱えば、48種類まで有無を表現できます。(最大値 2^48-1)

1,2,3,4,・・・ではなく、1,2,4,8,・・・

all********さん

2018/3/1817:33:53

必ず0 か1 か空白なら
E1
=SUMPRODUCT((A1:D1)*(COLUMN(A1:D1)))
下方向にコピーで出来ます

必ず0 か1 か空白なら
E1
=SUMPRODUCT((A1:D1)*(COLUMN(A1:D1)))...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

2018/3/1813:17:40

sumproduct(B列:E列, {1,2,3,4}) とすると、B列からE列の値にそれぞれ1、2、3、4を掛け算した結果を合計します。B列が1なら1、D列が1なら3ですね。

これだけだとB列とC列が1の場合に3になってD列と区別がつきません。そこで、sum(B列:E列) を掛け算します。2個あったら2倍、3個あったら3倍なので、最低でも6ですね。複数あるんだとすぐに区別できます。

で、複数あってもE列だけでも4が欲しいので、min関数で上限を4と定めます。

=min(4, sumproduct(B列:E列, {1,2,3,4})*sum(B列:E列))

match関数で1の位置を探すなら、全部0だった時にエラーになることを忘れないようにしましょう。
=min(4, iferror(match(1, B列:E列,0),0)*sum(B列:E列))

プロフィール画像

カテゴリマスター

taihenda****さん

2018/3/1812:02:24

IF関数の入れ子で

=IF(D1,4,IF(C1,3,IF(B1,2,IF(A1,1,0))))

mit********さん

2018/3/1811:54:20

E1セルには次の式でもよいでしょう。

=IF(COUNT(A1:D1)=0,"",IF(SUM(A1:D1)=0,0,MATCH(1,A1:D1,0)))

A1セルからD1セルがすべて空白なら空白、0で1がなければ0、そうでなければ1が入力された列のよって数値が変わることになります。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる