• ベストアンサー

勤務表で

IF関数を使い =IF(D24="a","0",IF(D24="b","0",IF(D24="c","0",IF(D24="d","8",IF(D24="e","11",IF(D24="f","7",IF(D24="g","6",IF(D24="h","8",IF(D24="i","8","10"))))))))) と入力したいのですが、 『入力した数式は正しくありません』と出ます。 正しく出す方法を教えて下さい。

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

  • ベストアンサー
  • hi6hi6
  • ベストアンサー率43% (13/30)
回答No.2

エラーになる理由はifの繰り返しの階層が深すぎるようです。 式から以下のようにしたいのだと思います。 (a,11のみ全角でしたが間違いかとおもい半角にしています) D24の値 → 結果 a,b,c → 0 d,h,i → i e → 11 f → 7 g → 6 その他 → 10 or関数を使って階層を深くしないようにすることができます。 これでどうでしょうか? =IF(OR(D24="a",D24="b",D24="c"),"0",IF(OR(D24="d",D24="h",D24="i"),"8",IF(D24="e","11",IF(D24="f","7",IF(D24="g","6","10")))))

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

関数のネスト数は8層までなので「IF(D24="H"」でエラーになります。 別の関数は如何でしょうか。 =IF(ISTEXT(D24),LOOKUP(D24,{"a","b","c","d","e","f","g","h","i","j"},{"0","0","0","8","11","7","6","8","8","10"}),"")

全文を見る
すると、全ての回答が全文表示されます。
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

excelのバージョンは? 古いバージョンなら入れ子の数オーバーです a,b,cの"0"を止めてElseで "0"にすると通ります

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

 勤務表との事ですので、「変形労働時間制のシフト名とその労働時間なのかな」と推定しましたが、この情報だけではエラーの原因が判断できません。勤務表の様式はどのような様式か、このif関数を様式中のどのセルに入力するのか、IF関数の入力されたセルは他のセルの計算式の引数になっているのか等、不明な事ばかりです。  もう少し、詳細な説明を付けて、質問して下さい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで勤務表作成について

    昨日もご相談させていただき、色んな方からご回答をいただき、やったぁ~と喜んでいたんですが、色んな検証をすすめていくと、修正が必要だと判明したので、また助けていただけますでしょうか? 以下のような項目で表を作成しているんですが、G7:普通残業の部分でずっとひっかかっております。 宜しくお願いいたします。 A7:月日 B7:区分(土日・祝日に1を入力) C7:始業時間 D7:終業時間 E7:休憩時間 F7:所定時間(7:30までしか表示しない)   =IF(B7>0,"",IF(D7-C7-E7>7.5/24,$F$1,IF(C7="","",D7-C7-E7))) G7:普通残業(実働7:30を超え、8時間までの時間表示) ※ ここが上手く出来ません =IF(B8>0,"",IF(D7-C7-E7>7.5/24,IF(D7-C7-E7-7.5/24>=0.5/24,0.5/24,D7-C7-E7-7.5/24),""))という式を入れたんですが、C7:始業時間が9:30、D7:終業時間が18:30(18:30以外の時間は全て表示するようです)、E7:休憩時間が1:00の時、G7:普通残業には0:30とはいらないんです。 =IF(D7-C7-E7>7.5/24,IF(D7-C7-E7-7.5/24>=0.5/24,0.5/24,D7-C7-E7-7.5/24),"")という式では上の問題は解決するが、B7:区分に「1」を入力した場合に表示されてしまう。 B7:区分に「1」が入力された場合はJ7:休出残業とK7:休出深夜に数字が飛ぶようにしてあるんです。 H7:時間外(実働8時間を超え、10時間までの時間表示) =IF(B7>0,"",IF(D7>"22:01",D7-C7-E7-"8:00"-I7,IF(D7-C7-E7>8/24,D7-C7-E7-"8:00",""))) I7:深夜残業(実働10時間を超えた場合の時間を表示)   =IF(B7>0,"",IF(D7>"22:00",D7-"22:00","")) J7:休出残業=IF(B7="","",IF(B7=1,IF(C7="","",IF(K7="",D7-C7-E7,D7-C7-E7-K7)),"")) K7:休出深夜=IF(B7="","",IF(B7=1,IF(D7>"22:01",D7-"22:00",""),""))

  • 教えてください。

    教えてください。 関数IFを仕様して、A=1、B=2、C=3、D=4、E=5、F=6,G=7、H=8,I=9の数字を返すとき、A1記号を入れ、A2に=IF(”A",1、IF(”B",2、IF・・・・・・・・・と入力すると、有る一定を超えると入力できなくなります。多い数字を返すときの方法を教えてください。

  • スケジュール管理表を作っています。数式があれば教えてください。

    たとえば、下記のような表があります。 E 総数量 に対し、A~B期間内の日数を F~の月ごとのカレンダーに数量を反映させる事は出来ますでしょうか。 現在、数式を入れた例をのせましたが、F2 ~ I2 までに入る数式に苦戦しています。現在、数式例を載せましたが、一日の本数が反映するようになってしまいました。 A、Bを読み取る事はできたのですが、下のように、G2=93 H2=6というような結果になるように、どなたか知恵をお貸しください。 m( _ _ )m    A    B     C     D     E     F    G   H   I 1  開始  終了 期間日数 一日本数 総数量本 7月  8月  9月  10月 2   8/1  9/2     33     3     100      93  6 C2=(DATEDIF(A3,B3,"d")+1) D2=ROUNDDOWN(D3/C3,0) F2=IF(AND(MONTH(G$1)>=MONTH($A3),MONTH(G$1)<=MONTH($B3)),$E3,"")   

  • エクセルの条件文で抽出したセルに改行を入れたい

    条件文で作成した文字列内に改行を入れる方法を教えてください。 下記のようなエクセル(以後、数百行あります)があり、○がついているところの1行目にある文字をK2セルに入力したいと思います。   A  B  C  D  E  F  G  H  I  J K  1 あ い う  え  お  か  き  く け  こ   2 ○       ○       ○    ○  ○ 3   ○      ○    ○  ○ K2セルには、○印のついている あ え き け こ と改行して出力されるように関数を組むにはどうしたらいいのでしょうか? =IF(A2=○,A1&"","")&IF(B2=○,B1,"")&IF(C2=○,C1,"")&IF(D2=○, D1,"")&IF(E2=○,E1,"")&IF(F2=○,F1,"")&IF(G2=○,G1,"")&IF(H2=○,H1,"")&IF(I2=○,I1,"")&IF(J2=○,J1,"") と入力してみましたがうまくいかず、これではうまくいったとしても 改行なしで あえきけこ と出てしまう気がします・・・。 一晩悩みましたがどうしてもうまくいかないのでどなたか教えてください。 よろしくお願いいたします。

  • 2つの表を合わせた表3作成したい

    表1 A B  C  D  E  F G  H  I  名称 1 01 00 00 00 00 000 00 00 00  あ 2 01 01 00 00 00 000 00 00 00  い 3 01 01 01 00 00 000 00 00 00  う 4 01 01 01 01 00 000 00 00 00  え 5 01 01 01 01 01 000 00 00 00  お 6 01 01 01 01 01 001 00 00 00  か 7 01 01 01 01 01 001 01 00 00  き 8 01 01 01 01 01 001 01 01 00  く 9 01 01 01 01 01 001 01 01 01  け 10 01 01 01 01 01 001 01 01 02  こ 20 01 01 01 01 01 001 01 02 00  阿 21 01 01 01 01 01 001 01 02 01  居 22 01 01 01 01 01 001 01 02 02  卯 100 02 00 00 00 00 000 00 00 00  亜 101 02 01 00 00 00 000 00 00 00  医 102 02 01 01 00 00 000 00 00 00  宇 AからIの欄には入る数字によって名称が変わります。 表2 A  B  C  D  E  F G  H  I   1 01 01 01 01 01 001 01 01 01  2 01 01 01 01 01 001 01 01 02  3 01 01 01 01 01 001 01 01 03  4 01 01 01 01 01 001 01 02 01  5 01 01 01 01 01 001 01 02 02  6 02 01 01 01 01 001 01 01 01  この2つの表を合わせた表3を作成したいのです。 表3 A  B  C  D  E  F  G  H  I 1 01あ 01い 01う 01え 01お 001か 01き 01く 01け 2 01あ 01い 01う 01え 01お 001か 01き 01く 02こ  3 01あ 01い 01う 01え 01お 001か 01き 01阿 01居  4 01あ 01い 01う 01え 01お 001か 01き 01阿 02卯

  • 勤務表の計算式で困っています

    勤務表で A列に日付 B列に曜日 ---------- Xさん C列 出勤は◎ 休みは空欄 D列 D1=IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- Yさん E列 出勤は◎ 休みは空欄  F列 F1=IF(E1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- Zさん G列 出勤は◎ 休みは空欄 H列 H1=IF(G1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- といった表での計算式につきまして 日付行の例えば1日(A1行)の出勤が 3名出勤の場合 C1◎E1◎G1◎となり D1F1H1にはそれぞれ「3」と出力 2日(A2行)の出勤が Xさん1名の場合 C2◎ 、E2と G2 は空白となり D2には「1」と出力 F2H2は空白 とさせる場合 D1セルの計算式を =IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") としていますが計算式エラーとなり数字だけ残って表示されてしまう場合があります その場合には下記の式に書き換えると表示が消えることもあるのですが =IF(C1="","",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") 毎回手作業でエラーを見つけて式を入れなおしています 計算式が違うのか根本が間違っているのか改善策をご教授ください ◎自体は別シートの方から参照コピーしております

  • 集計表の合計欄を入力に応じた表示にしたい

        添付しているのは1月~12月に分けたA~Gの品物の集計表ですが、各合計欄を空白時は空白、  「0」を入力した時は「0」の表示のように、入力に応じた表示させたいと思っています。   私は関数利用の初心者ですが私なりに次のように数式を入力しました。  例えば   1月のA~Gの合計欄の数式は      =IF(B6&B7&B8&B9&B10&B11&B12="","",SUM(B6:B12))   1月~12月の品名Aの合計欄の数式は      =IF(B6&C6&D6&E6&F6&G6&H6&I6&J6&K6&L6&M6="","",SUM(B6:M6))  この数式で一応は各合計欄が入力に応じた表示をしました。   1月~12月の品名Aの合計欄の数式ですが、最初はB6&・・・・・・・・・としているところを、  B6~M6という解釈で単純に(B6:M6="","")としてみましたがだめでした。  それで、もっと圧縮した数式にならないだろうかと色々試行錯誤してみましたが  どうしても上手く行きませんでした。   何かいい方法があればお知恵をお貸しいただければと思い質問を致しました。  宜しくお願いします。                        

  • C言語の配列の使い方について質問です。

    以下のプログラムを配列を使って見やすくしたいのですが、どのように作ったら良いでしょうか? 宜しくお願いします。 #include<stdio.h> int main(void) { int a, b, c, d, e, f, g, h, i, j, k, l, m ,n, o; /*5段目の処理*/ for(a = 1; a <= 15; a++) { for(b = 1; b <= 15; b++) { if(a == b) continue; for(c = 1; c <= 15; c++) { if(a == c || b == c) continue; for(d = 1; d <= 15; d++) { if(a == d || b == d || c == d) continue; for(e = 1; e <= 15; e++) { if(a == e || b == e || c == e || d == e) continue; // printf("%d %d %d %d %d\n", a, b, c, d, e); ////4段目//// if(a>b){ f=a-b; } else if(a<b){ f=b-a; } if(b>c){ g=b-c; } else if(b<c){ g=c-b; } if(c>d){ h=c-d; } else if(c<d){ h=d-c; } if(d>e){ i=d-e; } else if(e<d){ i=e-d; } // printf(" %d %d %d %d \n", f, g, h, i); /////3段目//// if(f>g){ j=f-g; } else if(f<g){ j=g-f; } if(g>h){ k=g-h; } else if(g<h){ k=h-g; } if(h>i){ l=h-i; } else if(h<i){ l=i-h; } // printf(" %d %d %d \n", j, k, l); /////2段目//// if(j>k){ m=j-k; } else if(j<k){ m=k-j; } if(k>l){ n=k-l; } else if(k<l){ n=l-k; } // printf(" %d %d \n", m, n); /////三段目///// if(m>n){ o=m-n; } else if(m<n){ o=n-m; } // printf(" %d \n", o); if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o){ printf("%d %d %d %d %d\n", a, b, c, d, e); printf(" %d %d %d %d \n", f, g, h, i); printf(" %d %d %d \n", j, k, l); printf(" %d %d \n", m, n); printf(" %d \n", o); } } } } } } }

  • エクセルで困ってます。

    今、データ処理をしているのですが、関数がわかりません。よろしくお願いします。 ++++++++++++++++++++++++++++ セルD2(D2:D583)の数値を 0         a 0以上5未満    b 5以上10未満   c 10以上20未満  d 20以上30未満  e    ・    ・    ・ 90以上100未満 f 100       g 言う感じに分類したいので、 IF(D2=0,"a",IF(D2<5,"b",IF(D2<10,"c",IF(D2<20,"d",IF(D2<30,"e",IF(D2<40,"f",IF(D2<50,"g",IF(D2<60,"h")))))))) という関数を書きました。hまではうまくいったのですが、h以降つまり「60以上70未満をiと表示する」 というところを書くと「入力した式にはエラーがあります」とでてきてしまいます。なぜでしょう? 若しくはもっと良い関数があれば教えてください。 よろしくお願いします。

  • エクセルの表作成(横のデータを縦にしたい)

    こんにちは、いつもお世話になっております。 エクセルの表作成で困っています。  A B C  D E F G H I ・・・ 1 7 ○ 東京 A 1 B 2 C 1 ・・・ 2 5 △ 札幌  C 5 B 8 D 6 3 このようなデータがあり、これを別シートに転記(数式でリンクを貼りたい)を したいのですが、 A~Cは固定で、DEがセット、FGがセット・・・といった感じで 横になっているものを縦にしたいのです。 (解かりにくくて申し訳ありません) ↓  A B C  D E F G H I 1 7 ○ 東京 A 1 2 7 ○ 東京 B 2 3 7 ○ 東京 C 1 4 5 △ 札幌 C 5 6 5 △ 札幌 B 8 (具体的にはD~のデータは9セットあります) 一個分のデータの数式は組めたのですが、(=でつないでるだけです) 縦にもデータがいくつもあり、(MAX200程度ですが) オートフィルで上手く数式をコピーすることが出来ません。 マクロは使用不可なので、何とか関数で上手く作成ができないものか 悩んでおります。 どうか、お知恵を拝借できれば幸いです。 どうぞよろしくお願いいたします。

専門家に質問してみよう