• ベストアンサー

エクセル/式 =OR(A1="A",A1="B",A1="C")について

A1セルの値がA、B、Cのいずれかであるか否かの判定式は =OR(A1="A",A1="B",A1="C") だと思います。 しかし、いちいちA1=と書くのが面倒なので、 =OR(A1={"A","B","C"}) としてみたら案の定正しく判定されません。たぶんA1が単独の値で、{ }内が配列だからだと思いますが、その理解であっていますか? 次に、 =OR(A1:A1={"A","B","C"}) としたら今度は正しく判定するようですが、この式は=OR(A1="A",A1="B",A1="C")と同じ判定として正しいですか? 正しいとしたら、A1:A1と同じセル指定なのにこれを配列とみなしているのでしょうか?

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

  • ベストアンサー
noname#123709
noname#123709
回答No.1

=OR(A1={"A","B","C"}) ちゃんと判断しますよ。 値がA・B・Cの場合にTRUEとなります。

merlionXX
質問者

お礼

え?!・・・っと思って今やってみたら正しく判定できました。 じゃあ、さっきのは何だったんだろう? きっとなにか別の間違いをしてたのでしょうね。お騒がせしました。 ありがとうございました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

=OR(A1={"A","B","C"}) と入力後にCtrl+Shift+Enterで確定して配列数式にしてください。 配列数式以外だと下記のようになります。 =SUMPRODUCT(({"A","B","C"}=A1)*1)=1 =COUNT(FIND(A1,"ABC"))=1

merlionXX
質問者

お礼

いろいろありますね、ありがとうございます。 ただ、=OR(A1={"A","B","C"})はCtrl+Shift+Enterで確定して配列数式にしなくとも作動しました。(正しくないと思ったのはわたしの間違いでした)

noname#176215
noname#176215
回答No.2

最初から「?」です。 > =OR(A1={"A","B","C"}) > としてみたら案の定正しく判定されません。 それでいいはずですが どうなるのが「正しい」のでしょう。

merlionXX
質問者

お礼

すみません、きっとなにか別の間違いをしてたのでしょう。 お騒がせしました。 ありがとうございました。

関連するQ&A

  • エクセルで(A1:C1)のセルにD1をかけるには

    例えばA1,B1,C1のセルが以下のようになっていて、  [ 20 ][ 30 ][ 40 ] D1のセルに式を書く事で、A1,B1,C1の表示を10倍にしたり20倍にしたりしたいのですが、  [ 200 ][ 300 ][ 400 ][ 式 ] (10倍の例) そのような事は可能ですか。 A1,B1,C1セルには値だけが書かれていて、これらのセルは変更したくありません。 D1の式を弄るだけで、A1,B1,C1の値が指定した倍率になって表示されるようにしたいです。 D1の式を削除すれば、元通り[ 20 ][ 30 ][ 40 ]が表示されてほしいです。 D1にかける数を入れておいて、各セルに[ =20*D1 ][ =30*D1 ][ =40*D1 ] とするのは避けたいです。 (このような列がたくさんあるので) よろしくおねがいいたします。

  • 条件付き書式 A1,B1,C1の何れかのセルに「B」があったらA1,B1,C1セルを塗りつぶす。

    Excel2007です。 条件付き書式について教えてください。 画像をご覧ください A1,B1,C1の何れかのセルに「B」があったらA1,B1,C1セルすべてを塗りつぶしたいのですが 「次の数式を満たす場合に値に書式設定」に =OR(A1="B",B1="B",C1="B") と入力し、書式を塗りつぶしにすると 画像のように行1は、A1:B1、行2はA1、行4は、A1:A3と 「B」のある列までしか塗りつぶされません。 行4のように「B」のある行の3列をすべて塗りつぶすには どういう式を設定したらいいのか教えてください。

  • エクセル:AとBが同じ値であるのに、A-Bはゼロではない??

    excel2003です。 Aのセルの時刻と、Bのセルの時刻が同じであれば、Cのセルが 0(ゼロ)になるようにしようと試みました。 たとえば、Aが「9:30」、Bも「9:30」のとき、 A - B = C。これで、Cはゼロになるはずだと考えました。 シートのオプションでゼロを表示しないように設定しました。これで、上記の条件であれば、Cのセルは見た目空白になるはずです。 ところが、Cのセルには「#####」が表示されてしまいます。列幅の問題ではなく、負の時刻と認識しているようです。 実際にはA・Bのセルには、直接時刻を入力しているのではなく、数式が入っているのですが、A・Bの値のみを別セルにコピペして引き算した場合、結果はちゃんとゼロになります。 何故でしょうか??Cが「#####」になってしまう理由として、どういうケースが考えられますでしょうか? 実は問題は一応解決していて、Cのセルには下記の式を入れました: =if(A=B,0,A-B) 問題は解決したのですが全然納得できません。

  • B=1のとき、Aは1か2のとき(エクセル)

    考えていたら混乱してしまったので、お力をお貸しください。 Bの値がわかっているときに、Aを求める式をエクセルのセルに入れて計算したいのですが、どういう式を書きますか? Aが1づつ増えると、Bが次のように増えるような関係の値です。  A = 1,2,3,4,5,6…  B = 1,1,2,2,3,3… AからBを求めるとしたら、Aが奇数の時と偶数の時で式が違いそうです。 そして、BからAを求めるとすると、「B=1のとき、Aは1か2」という風に、B1つからAが2つ出そうです。 また、このようにして出したAの値の平均値も出したいので、大きい数字か小さい数字のどちらか一方にみなすような式となるとありがたいです。

  • a^2(b -c) +b^2(c -a) +c^2(a -b) この式

    a^2(b -c) +b^2(c -a) +c^2(a -b) この式を因数分解をする問題について質問をします。 この式を因数分解をすると (a -b)(a -c)(b -c) となりました。 しかし、解答を見ると -(a -b)(b -c)(c -a) となっているのですが、何故このような変形を行わなければいけないのでしょうか? この理由が分る方、説明をお願いします。

  • Excel 列がA,B,C...ではなく1,2,3になっている。これを直すには

    通常 A B C D E 1 2 3 4 5 のようになっているのですが、 1 2 3 4 5 1 2 3 4 5 となっています。処理等問題はないのですが、 セル指定が指定のセルからの位置指定になってしまい RC[1]:RC[1]のようになったりしています。 通常のように戻すにはどうしたらいいのでしょうか

  • 三つのベクトルa→、b→、c→の間にb→・c→=c→・a→=a→・b→=-1

    三つのベクトルa→、b→、c→の間にb→・c→=c→・a→=a→・b→=-1 a→+b→+c→=0→なる関係があるとき、 a→、b→のなす角Θを求めよ。 この問題わかりませんでした。 解らないところは、この題意を読んでいて b→・c→=c→・a→=a→・b→=-1 (A) a→+b→+c→=0→  (B) 上の二つの式の意味です。 たぶん、この二つの関係をもちいて、なんとかして、a,bのなす角を求めるとおもうのですが、 それには、内積の公式を利用すると考えましたが。。 (cosΘ=a・b / |a||b|) a・bの値と |a||b|の値を題意から、どのように考えて、導き出すかわかりませんでした。。。 どなたか、この問題教えてください>_< 宜しくお願いします!!

  • EXCEL2003で判定式について教えてください。

    仮にA1に12.9、B1に12、C1に11.4、D1に12.5とあるとして F1にはA1-B1の値を、G1にはB1-C1の値、H1にはC1-D1の値を それぞれ10倍して(小数点以下を無くし見易くする為に) 表示するものとします。 その後F1~H1の3つの値(+9、+6、-11)に対し、+5以上が 一つでもあるならなら「A」、+1~+4のみは「B」、 +の値が一つもなく0以下なら「C」と判定させたいのです。 そこで当初J1で =IF(F1:H1>=5,"A",IF(F1:H1<=0,"C","B")) としたところ複数のセルに対してはできないようなので 一旦J1でMAXを使い(+5以上か)を判定し、L1に =IF(J1>=5,"A",IF(J1<=0,"C","B")) と二つのセル、二つの式で結果的には出来たのですが、 なんとかすっきりと一つの関数式で判定させることは 出来ないでしょうか?

  • @$a = $b["c"] or $a = "text"; という記述の仕方

    これは $a = b["c"] がエラーだったら$aに"text"を代入できるので楽なんですが、 あまり使わない方がいい構文なのでしょうか? 配列の存在チェックをしていて if(isset($b["c"])){ $a = $b["c"]; }else{ $a = "text"; } こちらの方がいいのでしょうか? or の使い方が検索してもイマイチ分からないのです @はエラーが発生しているのに、それを表示しない方法だと認識しています だからエラーを出さないのが正しい記述なのであれば、後者が正しいのかと思ったり 1行で収まる上に、一応構文として理解も難しくないので問題ないのかなと思ったり タイトルの記述方法が不適切なのかどうかと、orの適切な使い方、@はあまり使わない方がいいのかを教えてください 本やネットで検索してみたのですが、どうしてもヒットしません 検索で分かるのでしたら、どのような検索の仕方がいいか教えてください! お願いします。

    • ベストアンサー
    • PHP
  • エクセルで、A=5、B=6,C=12など値を定めて、Aと入力すると5、

    エクセルで、A=5、B=6,C=12など値を定めて、Aと入力すると5、Bと入力すると6が表示される簡単な式、または操作を教えてください。

専門家に質問してみよう