• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数を使ったシフト表についての質問です。)

エクセル関数を使ったシフト表についての質問

このQ&Aのポイント
  • エクセル2003を使って1ヶ月ごとのシフト表を作成しているが、いくつか問題がある。
  • 年月を変えると自動的に曜日が変わり、休みの曜日には「休」が表示される式を入れている。
  • 問題1:空いている行に正社員のみ○という印をつけて表示したいが、どうすればいいかわからない。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

回答No3です。返事が遅れまして申し訳ありません。 H列に〇が付く場合には必ず第1公休日はB列に第2公休日はC列にその曜日があることにしますと次の式をJ13セルに入力してから右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR($I13="",J$5="",COUNTIF($B13:$G13,J$5)=0),"",IF($H13="○",IF($B13=J$5,"A",IF($C13=J$5,"B","休")),"休"))

wtmwbr75
質問者

お礼

お返事が遅くなり申し訳ありません。 今回頂いた式で私の作りたかった表がほぼ完成し、さらにエクセルについても大変勉強になったので今後にも活かしていきたいと思います。 もし今後またこちらで質問をする機会があれば、またお力添えをお願いできればと思います。 本当にありがとうございます。

その他の回答 (7)

  • nine999
  • ベストアンサー率44% (512/1140)
回答No.8

#1です。 もういらないかもしれないけど、私がJ4と書いた部分は、推測なので日付が入っているセルを選んでください。日付がない場合は表示しないということでしたね。

wtmwbr75
質問者

お礼

補足ありがとうございます。 J4には日付が入っているので、前回頂いた式で正常に機能しています。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.4・5です! 何度もごめんなさい。 前回の数式に間違いがありました。 =IF($H15<>"",IF(J$5=$B15,"A",IF(J$5=$C15,"B","")),IF(COUNTIF($B15:$C15,J$5),"休","")) に訂正してみてください。 検証せずに投稿してごめんなさいね。m(__)m

wtmwbr75
質問者

お礼

お返事が遅くなり申し訳ありません。 こちらの式にも使ったことの無い式があり勉強になります。 他の方々に頂いたものと合わせて表に当てはめてみたいと思います。 色々と検証までしていただき本当にありがとうございます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.4です! たびたびごめんなさい。 H列の「○」の件をまったく無視していました。 H列は「○」以外は入らないという前提で・・・ もしかして、 J15セルの数式は =IF(AND($H15<>"",J$5=$B15),"A",IF(AND($H15<>"",J$5=$C15),"B",IF(OR(J$5=$B15,$C15),"休",""))) ということですかね? 以上、お役に立てば良いのですが、 今回も外していたらごめんなさいね。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 横からお邪魔します! 日付と曜日の表示方法はすでにNo.3さんの方から出ていますので、 その形式で曜日が表示されているとしての方法です。 第1公休日は「A」・第2公休日は「B」と表示させたいという希望みたいなので、 J15セルの数式を =IF(J$5=$B15,"A",IF(J$5=$C15,"B","")) (曜日の表示方法がNo.3さんの方法と違った場合は正確に表示できないかもしれません。) として列方向と行方向にオートフィルでコピーしてみてはどうでしょうか? 以上、参考になれば良いのですが 的外れなら読み流してくださいね。m(__)m

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

いくつかの点を改良したほうがよいと思われます。 次の参考にしてみてください。 J4への入力の式ですが次の式を入力して右横方向にオートフィルドラッグします。AN4セルまで。 =IF(MONTH(DATE($L$3,$N$3,COLUMN(A1)))=$N$3,DATE($L$3,$N$3,COLUMN(A1)),"") これでJ4セルから横方向には日付が5月なら5月だけの日付、2月なら2月だけの日付が表示されます。 次にJ5セルには次の式を入力し右横方向にオートフィルドラッグします。 =IF(J4="","",TEXT(J4,"aaa")) その月々の日にちに対応した曜日が表示されます。 各人のデータが13行目から下方に入力されるとして、また、各人の休みの取れる曜日がBれつからG列までの行に、また、〇はH列に入力され、氏名はI列に入力されるとします。 J13セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR($I13="",J$5=""),"",IF(COUNTIF($B13:$G13,J$5)=0,"",IF($H13="○",CHAR(65+COUNTIF($I13:I13,"?*")-1),"休"))) これでお望み通りの結果が表示されると思います。一度お試しください。

wtmwbr75
質問者

お礼

補足についての補足をどこに書くべきかわからなかったので、お礼欄で失礼します。 すみません、先程の補足で間違いがありました。 第1公休日と曜日が合致している5の行には「A」、第2公休日と曜日が合致してる5の行には「B」と表示される2パターンのみの式にする場合はどうすればよろしいでしょうか? この部分は 第1公休日と5の行の曜日が合致した場合「休」でなく「A」、第2公休日と5の行の曜日が合致した場合「休」でなく「B」と表示される・・・ の誤りです、失礼しました。

wtmwbr75
質問者

補足

お返事ありがとうございます。 =IF(MONTH(DATE($L$3,$N$3,COLUMN(A1)))=$N$3,DATE($L$3,$N$3,COLUMN(A1)),"") =IF(J4="","",TEXT(J4,"aaa")) 上記の2つの式はまさに私がしたかったことが凝縮されていました、ありがとうございます。 使ったことのない関数もあり、見てるだけで勉強になります。 =IF(OR($I13="",J$5=""),"",IF(COUNTIF($B13:$G13,J$5)=0,"",IF($H13="○",CHAR(65+COUNTIF($I13:I13,"?*")-1),"休"))) 上記の式についてですが、ほぼ私の思い描いていた通りの式です。 ただ私の説明が不足していた点がありまして、社員には第1と第2の2日間しか公休日が無いのです。 なので、もし社員ということでもしHの行に○があった場合、第1公休日と曜日が合致している5の行には「A」、第2公休日と曜日が合致してる5の行には「B」と表示される2パターンのみの式にする場合はどうすればよろしいでしょうか? 大変お手数かとは存じますが、どうぞよろしくお願いいたします。

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

第一段階:J5がB15:G15のどれかなら休みにする =IF(COUNTIF($B$15:$G$15,J5)=1,"休","") 第二段階:休みを,さらに正社員なら公,そうでないなら休にする =IF(COUNTIF($B$15:$G$15,J5)=1,IF(H5="○","公","休"),"") H列のどこに○を入れてあるのを見ればよいのか,情報提供不足です。 第三段階:公(すなわち○)の1個目2個目3個目をABCにする? =IF(COUNTIF($B$15:$G$15,J5)=1,IF(H5="○",MID("ABCDEF",COUNTIF($H$5:H5,"○"),1),"休"),"") しかしそもそも第1とか第2とは一体何のことで,エクセルのどこを見たら良いのか全く情報不足です。 第四段階:その日の日付表示が無い時は,まったくの最初から計算しない =IF(J4="","",IF(COUNTIF($B$15:$G$15,J5)=1,IF(H5="○",MID("ABCDEF",COUNTIF($H$5:H5,"○"),1),"休"),""))

wtmwbr75
質問者

補足

お返事ありがとうございます。 説明が不足しており大変失礼いたしました、申し訳ございません。 B~G列の欄で、氏名欄の列に対応した人の第1~第6の公休日の曜日を設定しています。 Hの列についてですが、氏名欄の左側のH列のセルに、社員でなければ未記入、社員であるなら○と書くようにしようと思っています。 そして例えばAさんが社員でなく、左側のセル(H14)が未記入な場合は先程お答えいただいた=IF(COUNTIF($B$15:$G$15,J5)=1,"休","")を適用しようと思います。 そしてもし社員であり上記のセルに○があった場合は、社員の場合は公休日が2日のみなので、質問欄に書きました第1=第1公休日を「休」でなく「A」、第2=第2公休日を「休」でなく「B」と表示する式を入力したいのです。 私がぶつかっている点が、この○表示があるかないかの条件付けと、もしないなら「休」表示の式を適用、もし○があるなら第1公休はA、第2公休はBという表示を適用するという条件を1つの式にまとめる方法です。 もしまだ説明が不足している個所がございましたら、大変お手数かと存じますがお返事をいただければと思います。どうぞよろしくお願いいたします。

  • nine999
  • ベストアンサー率44% (512/1140)
回答No.1

とりあえず、31日未満の月に休を表示させない方法について。 =IF(OR(J5=$B15,J5=$C15,J5=$D15,J5=$E15,J15=$F15,J15=$G15),"休","") これが休を表示している式でしたよね。ここを直せば良いということです。 =IF(AND(OR(J5=$B15,J5=$C15,J5=$D15,J5=$E15,J15=$F15,J15=$G15),J4<>""),"休","") J4が空白でない場合は、休を表示する条件を最初のORで結んだ条件とANDでまとめてあります。

wtmwbr75
質問者

お礼

早速のお返事ありがとうございます。 早速入力してみたところ「循環参照」という初めて見るメッセージが出てしまったので、これについては調べつつ入力していこうと思います。 もし他に何かお気づきの点がございましたら、またよろしくお願いいたします。

関連するQ&A