• ベストアンサー

if(A=B,"",B)の式の効率的な組み方

エクセル2010を使っている者です。 =if(A=B,"",B)という趣旨の式を立てたいのですが、式のわかりやすさ、長さを考えたときに、Aはセル番号なので問題ないのですが、Bが長文の関数式なので、「=if(A=B,"",B)」とするとBの式を2度書くことになり、非常に長文でわかりづらくなってしまいます。 どなたか、効率的に短く書く方法があれば、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.4

[No.3お礼]へのコメント、 》 「=B1*(A1<>B1) 」とは、どういう意味でしょうか? 1.(A1<>B1 等の)論理式の返り値は TRUE または FALSE です。 2.TRUE や FALSE は四則演算にも使うことが可能で、その場合はそれぞれ数値の 1 や 0 と同じ働きをします。 「A1とB1が違った場合」、論理式 A1<>B1 は TRUE を返しますね 従って、「A1,B1が数値であれば」、=B1*(A1<>B1)=B1*TRUE=B1*1=B1 となる次第です。、

qazxcvfr4
質問者

お礼

丁寧に教えていただき、ありがとうございます。 勉強になりました。

その他の回答 (3)

noname#204879
noname#204879
回答No.3

[No.2お礼]へのコメント、 》 …とは、どういう意味でしょうか? その前に、貴方が試した結果を教えてください。 期待する結果にならない式を解説するなんて、バカみたい!?

qazxcvfr4
質問者

お礼

結果についてですが、A1,B1が数値であれば、期待したとおりになったのですが、 今回は文字列でして、エラーが表示されてしまいます。 また、長文の式であるB1を2度記載することは変わりありません。 しかし、「=B1*(A1<>B1) 」とは、私の知らない表現を使った式だったので伺いました。 A1とB1が違った場合、B1の値がそのまま入るようなのですが、なぜ、そうなるのでしょうか。

noname#204879
noname#204879
回答No.2

[No.1]の別解です。 セル C1 に次の[条件付き書式]を施しておけば、セル C1 の式を =B1*(A1<>B1) とすれば好いのでは?お試しください。  セルの値が  次の値に等しい  0  フォント色  白

qazxcvfr4
質問者

お礼

ありがとうございます。 すみません。 理解できなかったのですが、「=B1*(A1<>B1) 」とは、どういう意味でしょうか?

noname#204879
noname#204879
回答No.1

C1: =IF(A1=B1,"",B1) を考えたとき、 B1 の「長文の関数式」の繰り返しを避けるには、 D1: =B1 として C1: =IF(A1=D1,"",D1) とすれば良いだけのこと。

qazxcvfr4
質問者

お礼

ありがとうございます。 しかし、そのやり方だと列が新たに必要になるため、避けたいのです。

関連するQ&A