• ベストアンサー

EXCELでの当番表入力

地元の育成会で役員を押し付けられました。いやになるほど書類を作らされています。 本当に困っているのが、EXCELで作る当番表です。E列に2021年度の年月日、F列に曜日が入っています。土日祝日と夏休み等の特別休暇の間には当番がありませんのでそういった日付を飛ばして、G列に班番号、H列に名前を自動で入れたいのですが、なんとかならないでしょうか。 班番号と名前の順番はA列とB列に用意しました。当番は70名ほどで来年の3月までループします。 なんとか入力だけでも簡易に済ませたいのですが、お力を貸して下さい。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

添付画像のようなものでしたら F列はF2に =TEXT(E2,"aaa") として下までコピーします。 G2に =A2 H2に =B2 として G3に =IF(OR($F3="土",$F3="日"),"",OFFSET(A$2,COUNTA(G$2:G2)-COUNTBLANK(G$2:G2),0)) として 右(H2)と下に必要なだけコピーします。 A列とB列は来年3月末まで対応できるようにループしておいてください。 画像の場合A14に=A2として右(B14)にコピーしてAB列をそこから下に必要なだけコピーしています。

verify
質問者

お礼

すごいです。打ち込む手間がなくなり、修正があってもすぐに対応できそうです。睡眠時間を確保できます。本当にありがとうございました。

その他の回答 (2)

  • SI299792
  • ベストアンサー率47% (789/1649)
回答No.3

画像のような表でいいですか。 まず、Holiday というシートを作って、 https://excel-ubara.com/EXCEL/EXCEL910.html をコピペして下さい。タイトル等はいれず、A1から日付にして下さい。 これに、夏休み等の特別休暇を追加して下さい。(面倒かもしれませんが) 人数が必要なのでC2を使います。 C2: =COUNT(A:A) E2: 開始日付 F2: =E2 セルの書式設定、ユーザー定義「aaa」 G2: =INDEX(A:A,MOD(ROW()-2,$C$2)+2) H2: =INDEX(B:B,MOD(ROW()-2,$C$2)+2) E3: =WORKDAY(E2,1,Holiday!A:A) F2~H2をF3~H3へコピペ。 E3~H3を下へコピペ。 休日をの祖いたカレンダーの例です。 休日も表示して、そこは空白にしたい場合、補足に書いて下さい。

verify
質問者

お礼

いろいろな方法があるのですね。ありがとうございます。助かりました。感謝しております。

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

Excelでの処理には関数のほか、VBAでの処理、というのがあります。 それでやってみる。 ーー A2からA32まで日付を入れる。 B2セルに=TEXT(A2,”aaa") 下方向に式を複写 。曜日文字1文字が出る。 A列の日で、祝日のB列(曜日文字)を「祝」に変える 。 3月20日など。 L列に当番者の名を入力 し、リストを作る。 そのうち免除者はM列に「免」を入れる 例 氏名 山田 木村 鈴木 免 大野 田中 中野 ’ーーー 標準モジュールに Sub test01() Set sh = Worksheets("Sheet3") sh.Activate m = 2 n = 2 '--- p1: '--祝、土、日をスキップ If Cells(m, "B").Value = "祝" Then m = m + 1 If Cells(m, "B").Value = "土" Then m = m + 1 If Cells(m, "B").Value = "日" Then m = m + 1 '--免をスキップ If Cells(n, "M").Value = "免" Then n = n + 1 '--当番セット Cells(m, "C") = Cells(n, "L") '--土日祝でない 両方+1行 m = m + 1 If m > 30 + 1 Then Exit Sub '30は月中日数 n = n + 1 If n > 7 Then n = 2 '7は当番候補者人数 GoTo p1 End Sub コピペするとか。 ーーー 上記を実行すると、 A、B、C列は 2021/4/1 木 山田 2021/4/2 金 木村 2021/4/3 土 2021/4/4 日 2021/4/5 月 大野 2021/4/6 火 田中 2021/4/7 水 中野 2021/4/8 木 山田 2021/4/9 金 木村 2021/4/10 土 以下略。 ーー 関数式を工夫する場合に比べて、 もし手作業で作業をやる場合の手順から、類推して、ロジックを考えて、VBAが組める場合がある。 本件もそのタイプの処理法でしたもの。 質問者にはお呼でないだろうが、考えてみたもの。

verify
質問者

お礼

ありがとうございました。こういったプログラムを書いて提供していただける方を本当に尊敬しております。

関連するQ&A