• ベストアンサー

Excel 条件に従い自動的に文字入力するには

よろしくお願いします。 A列に1年分の日付、 B列に休日(国民の祝日("元旦"や"成人の日"など)と"夏季休暇"と"年末年始休暇"が文字列で)が入力されています。 C列に自動的に"休日"と"休暇"が入るようにしたいのですが、 そのルールとして 木曜日と日曜日と国民の祝日を"休日"にし、 夏季休暇と年末年始休暇を"休暇"にしたいのです。 C列にはどのような数式を入れればいいでしょうか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

C2セルに =IF(OR(B2="夏期休暇",B2="年末年始休暇"),"休暇",IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=5,B2<>""),"休日","")) のような具合です。 #休暇と休日の計算の順番を逆にするとうまくないので注意してください。

gotomasa
質問者

お礼

ご返答ありがとうございました。 非常に参考になり、おかげさまでやりたいことはできました。 ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

エクセル関数というものが、よく分かてないのでは。知っていてC列を使うのかもしれないが、B.C列が重複的。 B列に文字が入っていると、そのB列で文字の入っていないセルだけに、他の文字列を入れる関数式は入れることが事実上不可能。式の以下全行複写が使えないから。 其れでB,C列2行を考えているのだろうが、B列などはVLOOKUP関数で出せるのをご存知か(別列に検索表を作る必要はあるが)。 2010-2011のはなしなので注意 G1:I10(以後の年間祝日は略) 12/23 2010/12/23 祝日 12/29 2010/12/29 年末休暇 12/30 2010/12/30 年末休暇 12/31 2010/12/31 年末休暇 1/1 2011/1/1 年始休暇 1/2 2011/1/2 年始休暇 1/3 2011/1/3 年始休暇 1/4 2011/1/4 年始休暇 1/10 2011/1/10 祝日 ・・・ 2の式は=DATEVALUE($A$1&"/"&G2) A1には年数字の2010を入れておく ーー 例データ 2010-2011年の話なので注意 A列とB列 2010 <--年数字 2010/12/21 2010/12/22 2010/12/23 祝日 2010/12/24 2010/12/25 2010/12/26 休日 2010/12/27 2010/12/28 2010/12/29 年末休暇 2010/12/30 年末休暇 2010/12/31 年末休暇 2011/1/1 年始休暇 2011/1/2 年始休暇 2011/1/3 年始休暇 2011/1/4 年始休暇 2011/1/5 2011/1/6 休日 2011/1/7 2011/1/8 2011/1/9 休日 2011/1/10 祝日 2011/1/11 2011/1/12 B2の式は =IF(ISERROR(VLOOKUP(A2,$H$2:$I$100,2,FALSE)),IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=5),"休日",""),VLOOKUP(A2,$H$2:$I$100,2,FALSE)) 下方向に式を複写。 木日と祝日などは有線関係が式に込められている。 結果上記B列。 ーー 上記のB列文字列は質問の場合と違うので注意。質問のようにも出来ると思う。 テストの都合がよいので、年始から年末の例を挙げたが、質問では同年の年末ー年始であることは存じている。 == 上記では質問者には結果内容が合わない点があったり 式が長いので、質問者は面倒に思う恐れは多いが、参考にして勉強してください。 === A列の日付について、他のやり方をするなら、A1:B1に2010、1 と年月を入れておいてA2に =DATE($A$1,$B$1,1)+ROW()-2 と入れて下方向に式を複写すると、日付が出せる。

gotomasa
質問者

お礼

ご返答ありがとうございます。 VLOOKUP関数は使っています。今回はその延長で、VLOOKUPで表示させたところのN/Aエラーの処理で大変でした。 が、現在やりたいことはできました。 ありがとうございました。

  • normanx
  • ベストアンサー率66% (6/9)
回答No.3

私が思いついたものですが、参考にして下さい。 まず「曜日」の列と「休日・休暇」の列を追加します。 例えば、D列に=TEXT(A1,"aaa")という風に曜日を表示させて 次にE列に休日もしくは休暇を表示させます。 それを踏まえた上でC列に =IF(D1="木","休日",IF(D1="日","休日",IF(E1="休日","休日",IF(E1="休暇","休暇","")))) でいけると思います。

gotomasa
質問者

お礼

ご返答ありがとうございました。 おかげさまでやりたいことはできました。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

C2=IF(COUNTIF(B2,"*休暇"),"休暇",IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=5,B2<>""),"休日")) これを下方にコピー 上記の内容 B列の文字が休暇で終わっていれば休暇を表示 A列の曜日をWEEKDAY関数で数値化して1(日曜日)か5(木曜日) またはB列に文字列があれば休日を表示

gotomasa
質問者

お礼

ご返答ありがとうございました。 非常に参考になり、おかげさまでやりたいことはできました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう