• ベストアンサー

ExcelのIF関数でORやANDで簡素化したい

=IF(B4="日勤",J63,IF(B4="宿直",N63,IF(B4="宿明",P63,IF(B4="年休(日勤)",J63,""))) の関数を使ってます。 適用項目 B4のセルで日勤、年休(日勤)、欠勤(日勤)を選択した場合 日勤の所定時間(7:30が入力されたセル)を返すというようにしたいのですがORやANDをいれたらもっと簡単な式になりますか? どのたかご教授ください 宜しくお願いしたします。

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

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

=IF(OR(B4="日勤",B4="年休(日勤)",B4="欠勤(日勤)"),J63,IF(B4="宿直",N63,P63)) こういう事でしょうか? B4の値が 日勤 年休(日勤) 欠勤(日勤) の時にJ63 宿直 の時にN63 それ以外の時にP63の値を返します。 でも、必ず"日勤"を含んでいるなら、 =IF(FIND("日勤",B4),J63,IF(B4="宿直",N63,P63)) でも可能ですが…。

chon1977ez
質問者

お礼

edomin2004さん ありがとうございました。 解決しました。

その他の回答 (1)

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.2

現状の数式をOR関数を使って変更するなら、共通のセルは「J63」だけなので、 =IF(OR(B4="日勤",B4="年休(日勤)"),J63,IF(B4="宿直",N63,IF(B4="宿明",P63,""))) ですが、 上記の数式にない「欠勤(日勤)」を追加すると、次のようになります。 =IF(OR(B4="日勤",B4="年休(日勤)",B4="欠勤(日勤)"),J63,IF(B4="宿直",N63,IF(B4="宿明",P63,"")))

関連するQ&A

  • Excelでの勤務表作成 *夜勤がある場合の計算式

    Excelで勤務表を作成しているのですが 関数の作成に困っています。 私の職場には日勤(9:30~18:00)と夜勤があります 夜勤は 宿直(17:00~24:00)、宿明け(0:00~10:00) の時間帯です。 セルA 開始時間 セルB 終了時間 セルC 休憩時間 セルD 稼働時間 セルE 所定時間 セルF 時間外残業 セルDの稼働時間を求める関数に =IF(OR(A1="",B1=""),0,B1-A1-C1) セルEの所定時間の関数を =IF(D1>$N$44,$N$44,D1)  としました。*N44には7:30を投入 この場合は日勤の場合の勤務時間は正しく反映されますが 夜勤(宿直、宿明け)の勤務時間を投入した場合 時間外残業が正しく反映されません。 所定時間を日勤の場合は7:30(7時間30分) 宿直の場合は6:00(6時間) 宿明けの場合は9:00(9時間) と設定すればうまくいくと思うのですが どのように設定したらよいでしょうか?

  • excelのand関数、IF関数について

    エクセルのand関数、IF関数について質問です。 非常に簡単なことで申し訳ないのですが、仮にセルA2が5でかつセルB2が0の時にtrueとしたいときの関数は=and(A2=5,B2=0)であっているでしょうか。また、これをIFの関数で表す場合、=IF(A2=5,IF(B2=0,1,0),0)で同じ意味になるでしょうか?(IFの方は条件を満たす場合を1、満たしていない場合を0としたつもりです) ANDの方の関数は、多分合っていると思うのですが…。エクセルに入力しても、正しい結果が得られなかったので、質問させていただきました。初心者です。つまらない質問で申し訳ないのですが、よろしくお願いします。 

  • エクセル関数 IF関数・OR関数・ISNA関数

    いつもお世話になります。 IF()と OR()と ISNA()を組み合わせて行数を返したいのですが、 セルの値が 0 ではない もしくは #N/A なら行数を、そうでなければスペースを返したいのです。 A列に関数が入っており、数値か#N/Aが返されています。 B2セルに、 =IF(OR(A2<>0,ISNA(A2)),ROW(),"") と入力しB列最下行までオートフィルしたら、 A列が0の場合は行数が返りましたが、#N/Aの場合、、#N/Aと返され行数が返りません。 どこに問題があるか、わかる方教えてください。よろしくお願いします。

  • IF関数についておしえてください。

    お世話になります。 作成している表の中で、利用しようとおもっている関数について教えてください。 A1セルに下記のようなIF関数を作成しました。 =IF(AND(B2>=1,C2<=0),"○",IF(AND(C2>=1,B2<=0),"○",IF(AND(B2>=1,C2>=1),"○",IF(AND(B2<=1,C2<=1),"")))) B2セルは別シートからVLOOKUPを利用して検索してきて、数字を表示させているセルのため、 該当しない場合”#N/A”と 表示されるところがありました。それで、”=IF(ISERROR”を利用して、#N/Aと表示される場合、空白で表示される数式にしたところ、今度はA1セルが条件にあっていないのに”○”と表示されるようになりました。≪”B2=空白(”#N/A”),C2<=1の場合にあたるのだと思います。≫ *B2セルを”空白”ではなく”0”で表示させるようにしても同様に”○”となりました。 A1セルに、  B2>=1,C2<=0の場合”○”  C2>=1,B2<=0の場合”○”  B2>=1,C2>=1の場合”○”  B2<=1,C2<=1の場合"空白" で表示できる方法をご存じの方、ご教示お願いいたします。 簡単なことなのかもしれませんが、エクセル関数初心者のため、大変困っております。 うまく、不明な点を説明できていませんでしたら、申し訳ございません。何卒 よろしくお願いいたします。

  • エクセルでIFとANDを使った関数について教えて下さい

    A B C D E F G 1 1 2 3 結果 2/3 2/4 2/5 2 2/3 2/4 2/5 合格 0 0 1 3 上記のような表を作成しようとしています。条件が、 D1が「合格」で、 C2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じなら「1」、 違うなら「0」、 B2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」なら「1」、違うなら「0」、 A2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」で、B2が「空欄」なら「1」、違うなら「0」 を返しなさい。 という関数を作りたいのですが、上手くいきません。 IFとANDを使えばいいと思うのですが、どのように組み合わせれば 良いでしょうか。 真を返す、優先順位は、C2、B2、A2、のセルです。 C2に日付が入ってるときはB2とA2に日付が入っていても カウントされないように(偽が入るように)したいのです。 ちなみに、最初は、 =IF($D2="合格",IF($C2=E$1,1,IF($B2=E$1,1,IF($A2=E$1,1,0))),0) と、入れてましたが、これだと、C2に日付が入った時にC2だけカウント したいのに、B2もA2もカウントされてしまいます。 どうか、良きアドバイスをお願いします!!

  • エクセル IF関数について

    エクセルのIF関数で困っています。 A1のセルは、他のセル(B1)から飛ぶような設定をしている(=B1) B1に入力しない事があるで、A1の「0」に表示しないようにユーザー設定で「#,##0;"△ "#,##0; 」としている。 A2のセルには、A1に文字が表示されたときのみ「日」と表示するようにIF関数を入れた。「=IF(A1="","","日")」 しかし、A1に何も表示されていないのに、「日」が表示されてしまう。 試しに「=IF(A1="0","","日")」としたが、これでも「日」が表示されてしまう。 このような場合、IF関数はどうすればいいのでしょうか。 説明が下手ですいません。 どうか教えてください。

  • エクセル IF関数を教えて下さい。

    エクセル初心者です。関数を教えて下さい。 IF関数でできるのかも解りません。 A組 番号1 山田 花子 A組 番号2 河崎 洋子 B組 番号1 高木 健太 セルA2にA1と入力するとセルB2に山田花子、セルA3にB1と入力するとセルB3に高木健太と自動的に表示する方法を教えて下さい。 IF関数でできるのでしょうか?

  • エクセルでIF関数について教えていただきたいです

    よろしくお願いします。 A1セルに「5/20」と入力してあり、これは日付を意味します。 A1セルには上記の形式で日付が入力されるとして C1セルに「A1が5月だったらB1を参照」というIF関数を設定したいのですが、わかりません 教えていTだきたいです。 なんとなく =IF(A1="5#",B1,"")かな、と思ったのですが違うようでした。

  • Excel 長すぎるif関数

    こんにちは。Excelを使って、条件によって表す表示を変える場合、 例えばa1のセルには0~100までの任意の数字を入れるとして、b1のセルにa1の数字に応じていろいろな表示をしたい場合(具体的には100ならAを表示、90~99ならB、70~89ならC、55~69ならD・・・といったように)、if関数を使うと思いますが、 =if(a1=100,"A"1,if(a1>=90,"B",if(a1>=70,"C",if・・・・)))というように長々と続きますね。条件が少ないうちはいいのですが、条件が多くなると、大変複雑な式になり、入力もしづらいし、頭も使うし、閉じる括弧の数もわからなくなるし、作成に時間もかかりますよね。2つ以上の条件が重なる(例えばA1が90~99の範囲でかつa2がAならb1にB1と表示するなど)など複雑になってくるともうお手上げです。 これらを短時間で要領よく作成する方法はないでしょうか?次の観点で教えてください。 1 if以外の良い関数はあるか?または良い機能はあるか?それとも複雑であってもif関数が妥当なのか? 2 (if関数が妥当であるとして)複雑なif文の作成を簡単にできる方法があるか?あるいはそんなソフトがあるか? 3 やっぱりそういうのはVBAとかで作った方がいいのか?(できれば使いたくないのですが。)

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

専門家に質問してみよう