- ベストアンサー
EXCELのIF関数 複数のセルを参照することはできますか?
以下のようなことをIF関数もしくは別の手段で実現できますか? 条件1)貸出時:B2を参照し、空白でなければCに"貸出中"が入る A | B | C | D | E 管理番号 貸出日 STATUS 返却予定日 返却日 001 2005/11/1 貸出中 2005/11/8 条件2)E(返却日)に値があれば、Cに"返却済"を入力 A | B | C | D | E 管理番号 貸出日 STATUS 返却予定日 返却日 001 2005/11/1 返却済 2005/11/8 2005/11/7 つまり、条件1と2はBとEの異なるセルを参照し、 優先度 E>B と判断 Bに値が入っていても、Eに値があれば、"返却済"という値を返すようにしたいのです。 推測で次のような関数を埋め込んだところエラーになりました。。。 =IF(C2>1000/1/1,IF(I2>1000/1/1,"返却済",FALSE)"貸出中",FALSE) 基本的なところからの再学習が必要かもしれませんが、どなたか知恵をお貸しいただければ幸いでございます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
入れてみた関数惜しいですね。考え方はほぼ合っています。 やりたい条件を優先順に整理してみましょう。 1.Eに値があれば"返却済" 2.Eに値がないとき、Bに値があれば"貸出中" ということですよね。 順に式にして行きましょう。 1.IF(NOT(ISBLANK(E2)),"返却済",次の優先順位条件) 次の優先順位条件は、 IF(NOT(ISBLANK(B2)),"貸出中",FALSE) なので、結果は =IF(NOT(ISBLANK(E2)),"返却済",IF(NOT(ISBLANK(B2)),"貸出中",FALSE)) と言うことになります。 ちょっとややこしいので、整理します。 IF(NOT(条件1),A,B)の式と IF(条件1,B,A)の式が等価であることはご理解いただけると思います。 これを使えば、上記の式は、 =IF(ISBLANK(E2),IF(ISBLANK(B2),FALSE,"貸出中"),"返却済") となります。 なお、この式の場合、B,E列とも空白の場合、FALSEと表示されてしまいます。 何も表示させたくなければ、FALSEを""に変えてください。 ご参考: ISBLANK関数はセルに何か入力されているかどうかを判定する関数です。従って、B,E列にスペースでも文字列でも入力されていれば反応します。 日付(EXCELでは内部的に数値として扱います)が入力されていることを確認したければ、 NOT(ISBLANK(B2))をISNUMBER(B2)とかに置き換えてください。 ISNUMBER関数は数値が入力されているかどうかを調べる関数です。
その他の回答 (2)
- mshr1962
- ベストアンサー率39% (7417/18945)
C2>1000/1/1ですか?これだとC2>1000(日付だと1902/9/26)で判定になります。 後、"貸出中"の前に[,]がなく、最後の[,FALSE]は余分です。 =IF(ISNUMBER(B2),IF(ISNUMBER(E2),"返却済","貸出中"),FALSE) B2が数値でない場合はFALSEを表示 B2が数値でE2が数値でない場合は"貸出中"を表示 B2,E2が共に数値の場合は"返却済"を表示
お礼
ありがとうございます。私はifの基本を理解しないままのようでした。 とても勉強になりました。
- moon00
- ベストアンサー率44% (315/712)
こんな感じでいかがでしょうか。 E列が空白("")ならば、入れ子のIFでB列が空白かどうかを判定、 空白でないなら「貸出中」、空白ならC列も空白。 E列が空白でなければ、C列に「返却済」と表示 という流れになります。 =IF(E2="",IF(B2="","","貸出中"),"返却済")
お礼
できました!ありがとうございます。 これで半日は節約できました。感謝です。
お礼
ありがとうございます。また詳細な説明感謝です。関数も奥が深いですね。いろいろ正確にやろうと思ったら関数の適切な選択は必須であると痛感しました。助けていただきありがとうございます。