• ベストアンサー

エクセルの関数について

IF関数を使った条件参照について悩んでいます。そもそもIFではないかもしれません、お許しください。行いたいことは 1.E列が”実習日”ならば、D列の日付を返す(日付は別シートで手入力されたものから算出されています。) 2.E列が”休日”ならば、次の”実習日”のD列の日付を返す これを10回行いたいです。 現状 =IF(実習期間!E7="実習日",実習期間!D7,IF(実習期間!E7="休日","",実習期間!D7+1)) まで絞り出したのですが、行き詰まっています。どうかご教授ください。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

ANo.1です、 「実習期間」シートのセルG7に↓の式を入れて下にコピーします。 =IF(E7="実習日",D7,"") 次に結果を表示したいシートのセルB5に↓の式を入れ、B5:F6にコピー =SMALL(実習期間!$G:$G,ROW(A1)*5+COLUMN(A1)-5) これでどうでしょう。

blue-world7171
質問者

お礼

早速のご教授あり顔うございました!! うまくいきました!! 隣のセルB5であればC5にコピーしたときに関数中のA1がC1に変わり、参照がずれたのでB1に変更しましたところうまくいきました!正しい使い方かどうかわかりませんが、今の所うまく行っています!ありがとうございました(^o^)

その他の回答 (3)

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

ANo.1です。 > 答えを返したいのは別シートになり、 > > c5=実習日の1日目 > d5=実習日の2日目 > と5日目まで続き、 > c6=実習日の6日目 > と10日目まで参照させます 最初の質問文からは想像出来ませんでしたが、出力イメージはこんな感じですか? 1日目~5日目が別シートのC5:G5 6日目~10日目が別シートのC6:G6

blue-world7171
質問者

補足

分かりづらく申し訳ありません。まさにそのとおりです!!

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.2

コウユウことでしょうか F7=IFNA(IF(E7="実習日",D7,INDEX(D7:D18,MATCH("実習日",E7:$E$18,0),0)),"") 以下、必要数、下方向に複写

blue-world7171
質問者

お礼

ありがとうございます!縦方向へのコピーはうまくいきましたが、今回の横方向ではうまくいきませんでした。もっと勉強頑張ります!!ありがとうございました(^o^)

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

どこにどう日付を返したいのかが解りませんが、最終的に「休日」では無い日を上から10個取り出せればよいのでしょうか? 添付の図を見てください。 G列を作業列として使用します(G列が嫌なら別な列に変更して下さい) セルG7に =IF(E7="休日","",D7) と、入れて下にコピーします。 これで休日では無い日の一覧が出来ましたので、セルI7に =SMALL(G:G,ROW(A1)) と、入れてI16までコピーして下さい。

blue-world7171
質問者

補足

早速のご回答ありがとうございます。 答えを返したいのは別シートになり、 c5=実習日の1日目 d5=実習日の2日目 と5日目まで続き、 c6=実習日の6日目 と10日目まで参照させます。

関連するQ&A

  • Excel : 関数での分岐

    こんにちは。よろしくお願いします。 エクセルで英単語帳を作ったのですが、復習すべき日にちを決めるとき、D列に今日の日付、E列に1~7の整数、F列に関数を入れるとして、 1→1日後にやる 2→3日後にやる 3→5日後にやる 4→7日後にやる 5→13日後にやる 6→30日後にやる 7→60日後にやる というような設定を、IF関数を使って =IF(E2=1,D2+1,IF(E2=2,D2+3,IF(E2=3,D2+5,IF(E2=4,D2+7,IF(E2=5,D2+13,IF(E2=6,D2+30,IF(E2=7,D2+60,"入力し直し"))))))) のようなことやっているのですが、こういう関数の使い方は、壊れやすい(暴走しやすい)のではないかと不安です。(今のところ普通に動いてはいます。) このままデータが増えればこわれる可能性はあるのでしょうか。 また、関数を使ったもっと賢い方法があるのでしょうか。 マクロのことは分からないのでそれを使わない方法で、 関数だけを使ったより良い方法があれば教えてください。 分かりにくい文章ですいません。 よろしくお願いします。

  • 関数 数式 Excel

    すみませんが教えてください! E列に下のような関数を入れたところ正しく表示されませんでした・・・ どうぞよろしくお願いします。 A列(数字・空白を含む)が 1 の場合”◎” A列が1以外の場合は B列(別シートから参照のVLOOKUP関数が入っている)と C列(別シートから参照ののVLOOKUP関数が入っている) を足した数字が D列(別シートから参照ののVLOOKUP関数が入っている) が同じなら ”OK” 違うなら ”NG" と表示させたいので =IF(A1=1,"◎",IF(D181=(B181+C181),"OK","NG")) としてみましたが"◎"が表示される表示は正しいのですが "OK" "NG"が正しく表示されません。 これに加えていずれのセルにも空白が存在するのでエラーを出さないようにしたいです。 よろしくおねがいします!!

  • エクセルの関数でどうしても解らないことがあります。

    エクセルの関数でどうしても解らないことがあります。 例えば   A   B   C  D  E 1 2 3 4 5 このセルでA列に文字を入力した時、E列にその入力した日を表示させる関数で困っています。今は=+IF(A1="","",TODAY())をE1に入力しているのですが、翌日になると1日プラスされた日付に変更されています。 ツールの計算方法を自動にしているのですが、同じシート内に他の計算式を入力しているので手動に変更できません。翌日になっても日付が変更されない方法は無いでしょうか?詳しい方宜しく願います。

  • エクセルの簡単な関数ですが。

    私はエクセルで旅日記を書いています。 A列には「今日で何日目か」 B列には「日付」 C列には「曜日」 D列には「行動時刻」です E列には「内容」です。 質問です。 A3に =IF(B3="","",DATEDIF($B$2,B3,"D")) としB3に日付が入ったら、「一日目、2日目」と増える(つもり)で書いたのですが、2日目で【1】と入ります。2日目だから【2】としたいのです。 仕方なく、B2にダミーの日付を入れて誤魔化していますが、この場合どんな関数を使ったらいいんでしょうか。

  • EXCELで休日出勤を計算する

    お世話になります。 知恵をお貸しいただければ幸いです。 EXCELでひと月ごとのの出勤報告書を作っています。 そこで、休日(土、日、祝)出勤手当てを支払われる日が何日あるかを自動表示させようとしています。 今のシートの構成は A列:日付(2008/9/1の形で入力し、「1」のように表示 A5:A35) B列:曜日(A列から参照し、表示形式でaaaとし「月」のように表示) C列:休日(仕方なく手入力で「休」と入れている) D列:休日出勤したか判定(=IF(OR((C5>0)*(E5>0)),"休出","")C列とE列とも入力された場合に休日出勤とし「休出」と表示) E列:出勤した日はその日の仕事内容を入力 D列の最下部で「休出」が何回あるかカウント(=COUNTIF(D5:D35,"休出")) 祝日は関数が無いので、祝日一覧を作り該当する日付から祝日を割り出すのは分かったのですが。 =IF(WEEKDAY(A5)=1,"休","")&IF(WEEKDAY(A5)=7,"休","") よろしくお願いします。

  • Excelの関数について教えて下さい。

    Excelの関数で分からない事があるので教えて下さい。 D9のセルにD9=DATEDIF(D3,E3,"d")という式を設定しています。 D3に2004/5/31、E3に2004/6/30という日付を入力しており、その期間を 計算させる式です。従ってD9の答えは30となります。 この関数自体は問題なく機能しているのですが、DATEDIF(D3,E3,"d")の 1つ1つの意味を教えて頂けないでしょうか。 IF関数の使い方がそもそも理解出来ていません。 質問の意味が分かりにくい場合は補足致しますので言って下さい。 宜しくお願い致します。

  • エクセルの関数を教えてください。

    エクセルの関数を教えてください。 添付のシート(「参照シート」と呼ぶことにします。) 「残高」の一番下の値をLOOKUP(10^10,参照シート!G:G) という関数で取り出すことができました。 やりたいことは ある期間の残高を取り出したいと思っています。 期間は「参照シート」のH4にはfrom、J4にtoの日付を入力しています。 その期間内の一番下の残高を取り出したいと思っていますが、複雑すぎてわかりません。 これを関数でできるでしょうか?

  • Excelの関数がうまく使えません。

    Excelで関数がうまく使えません。 「=IF(E2>=2000,200,IF(E2>=1000,100,IF(E2>=500,50," ")))」というのをH列のセルに入力しています。 計算はうまく?いくのですが、偽の場合に空白にしているのに、E列が空白でも200と反映されてしまいます。 ちなみにE列には「=IF(ISNUMBER(D2),(C2*D2)," ")」このような関数を使っております。 H列が空白のときに正しく空白にするにはどうしたらよいのでしょうか? 教えてください。

  • EXCELの関数について

    EXCELの関数について エクセルの関数で複数条件の場合の計算について 例 A列…日付 B列…支店名 C列…処理科目 D列…金額 ある支店の日付の範囲を指定し科目別金額の合計値を別シートに算出したいのですが、 SUMIF関数では、条件の範囲が設定できないみたいなので SUMPRODCUTを使っても同一列での条件設定でうまくいきません。 なにかうまい方法はありませんか

  • エクセルの関数

      A B C D E F 1 × 8/1 8/2 8/3 8/4 8/5 2 ○ 3 4 3 4 5 3 △ 0 1 4 3 2 4 ■ 6 0 2 1 2 5 □ 5 3 2 1 1 6 ● 3 4 2 1 2 上記の表がSheet1にあり sheet2 に ○の8/3の数値を抽出する関数がわかりません。 =SUMIF(Sheet1!A1:Sheet1!A6,"○",Sheet1!D1:Sheet1!D6) で抽出できるものの、日付が変わったとき対応が全く出来なくて行き詰ってしまいました。行、列ともに条件が必要だと思うのですが、どなたか教えて頂けると助かります。

専門家に質問してみよう