- ベストアンサー
エクセルのIFについて
エクセル(Windows2000xp)にて。 わかりにくい質問でもうしわけないのですが A B C D 1 スズメ suzume 3 127 2 カラス karasu 4 128 : : 8 スズメ suzume 3 127 9 カラス karasu 5 130 というような表があって A1~D1(A2~D2)とA8~D8(A9~D9)が一緒だったら○ 違っていたら×というような式を作りたいのですが。 可能なのでしょうか? 現在、=IF(A1:D1=A9:D9,"○","×")という数式をつくりましたが○や×が表示されず式が表示されてしまいます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
セルの書式が「文字列」になっているのではないでしょうか? 「文字列」のセルに式を書いても、計算されずにそのまま表示されます。 式を書いた後に「文字列」にするのは有効ですが。
その他の回答 (6)
- tibikoro
- ベストアンサー率26% (27/103)
違うセルに数式を入力しても”○””×”が表示されないのですか? あと、数式では =CONCATENATEを使う方法もありますよ E1に =CONCATENATE(A1,B1,C1,D1)と入力してA1:D1迄の値を繋げた文字列にします 他の行も同様にし、 F列でIf関数を使う方法 F1に =IF($E$1=E8,"○","×") これで計算は成り立ちます あとは結果の表示ですね
- imogasi
- ベストアンサー率27% (4737/17069)
人間のイメージでは、=IF(A1:A3=B1:B3,"Y","N")などは 「A1:A3とB1:B3が等しい場合は」と言いいたいということで良く判ります。しかし「1セルの値同志を比べる」以外の、複数セル同志を、1対1で比べるのを上記の式で行うのは、エクセルでは出来ないと思います。 C2に入れると、=IF(A2=B2,"Y","N")になるようです。 ですから結果(TRUE、FALSE)は返すが、思ったイメージと 違うわけです。こういうイメージの比較を関数でしたければ、ユーザー(私製)関数をVBAでFunctionProcejureで 作らないといけないと思います。 下記のような(一例)ものです。 Function compa(a As Range, b As Range) Dim cl As Range r = b.Row: c = b.Column r1 = a.Row: c1 = a.Column For Each cl In a x = r + cl.Row - r1 y = c + cl.Column - c1 If cl = Cells(x, y) Then Else compa = "×" GoTo p01 End If Next compa = "○" p01: End Function セルに=COMPA(A1:A3,B1:B3)とか入れると、A1:A3とB1:B3の内容が同じかどうかに従い、そのセルに○か×が入ります。 (上記VBAは小数例ではOKでしたが、テスト不十分ですので よろしく)
=IF(A1=A3,IF(B1=B3,IF(C1=C3,IF(D1=D3,"○","×")))) こういう感じでしょうか?
>計算はできたのですがセルに計算式が表示されて >○、×が表示されません。 考えられることとしては、 1)ツール=>オプションの表示タブで数式にチェックが入っている。この場合、チェックを外す。 2)セルの書式が文字列になっていて、計算式としてではなく、文字列になっている。この場合、書式を標準に変え、F2キー・リターンで更新する。 が思いつくくらいです。
もっと単純な方法 =IF(AND(A1=A8,B1=B8,C1=C8,D1=D8),"○","×")
こんな感じでしょうか? =IF(SUMPRODUCT((A1:D1=A8:D8)*1)=4,"○","×")
お礼
すぐのご回答ありがとうございます! こちらの方法で、計算はできたのですが やはりセルに計算式が表示されて○、×は表示されませんでした。 書式が違うのでしょうか?
お礼
すぐのご回答ありがとうございます! 計算はできたのですがセルに計算式が表示されて ○、×が表示されません。 書式が違うのでしょうか?