[[20250501105608]] 『当番表』(ゆぅ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『当番表』(ゆぅ)

土日と会社指定の休日以外の月曜と金曜にのみ
当番表を作成したい。

4人をローテーションに出勤日の毎週月曜日と金曜日に
自動でふりわけるには どうしたら良いか教えてください。

5/1
5/2
5/3 休
5/4 休
5/5 休
5/6 休
5/7
5/8
5/9
5/10 休
5/11 休
5/12   Aさん Bさん
5/13
5/14
5/15
5/16   Aさん Bさん
5/17 休
5/18 休
5/19   cさん Dさん
5/20
5/21
5/22
5/23   cさん Dさん
5/24 休 
5/25 休
5/26   Aさん Bさん
5/27
5/28
5/29
5/30   Aさん Bさん
5/31
 

よろしくお願いします。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 5/2(金)とか 5/9(金)とかはどうなるの? 出勤日なのでしょ。

 振り分けるルールが良く分からない。
 ・AさんとBさんコンビが2日間、CさんとDさんコンビが2日間でローテーションってことなら、
  5/2(金)と 5/9(金)は、CさんとDさんコンビってこと?
 ・週番ってことなら、5/2(金)は AさんとBさんコンビ、5/9(金)は CさんとDさんコンビ?
(ん?) 2025/05/01(木) 11:58:24

ん? 様
ありがとうございます。
5/2・5/9が抜けていました。
5/2は A・Bさん
5/9は C・Dさん
5/12と5/16は A・Bさん
5/19と5/23は C・Dさん
といった具合です。

申し訳ありませんでした。
よろしくお願いします。
(ゆぅ) 2025/05/01(木) 13:26:42


 他の部分の返答がないですね。
 ?@A-B C-D のペアは固定なのか?
 ?A2日間でローテーションなのか?(完全にランダムなのか、回数を均一にしたいのか?)
(TKG) 2025/05/01(木) 13:35:33

TKG様 
ありがとうございます。
TKG様の回答で先ほどの私の返事が間違っていることに気が付きました。

ABとCDは固定にしないと当番回数に差がでるのかなと思います。
月曜は検針 金曜は測定のような当番ですが
5/2はA・B
5/5が休日なので5/9もA・B
5/12はC・D 5/16 C・D
5/19はA・B 5/23 A・B
といった具合に
A・B 検針・測定 が1回づつ済んだら
C・Dに交代するといった当番表を作成したいです。
よろしくお願いします。

(ゆぅ) 2025/05/01(木) 13:58:44


 週番という訳ではなく、AさんとBさんコンビが2日間、CさんとDさんコンビが2日間で
 ローテーション(2日当番したら交代)と理解しました。

 日付がA列、「休」マークがB列に入力されていて、C・D列へ当番の2名を出力するって
 前提での VBA案です。

 Sub Sample()
    Dim i As Long, Last As Long
    Dim P1 As Long, P2 As Long, N As Long
    Dim Name As Variant
    Name = Array("Aさん", "Bさん", "Cさん", "Dさん")

    Last = Cells(Rows.Count, "A").End(xlUp).Row
    Range("C1:D" & Last).ClearContents
    P1 = 0: P2 = 1: N = 1
    For i = 1 To Last
        If Weekday(Cells(i, "A")) = 2 Or Weekday(Cells(i, "A")) = 6 Then
            If Cells(i, "B") <> "休" Then
                Cells(i, "C") = Name(P1): Cells(i, "D") = Name(P2)
                N = N + 1
                If 2 < N Then
                    P1 = P1 + 2: P2 = P2 + 2
                    If P1 > UBound(Name) Then P1 = P1 - UBound(Name) - 1
                    If P2 > UBound(Name) Then P2 = P2 - UBound(Name) - 1
                    N = 1
                End If
            End If
        End If
    Next i
 End Sub
(ん?) 2025/05/01(木) 14:34:11

ん?様
ありがとうございます。

勉強不足で自動マクロしか使っておりません。
作って頂いたVBA案も 一致しないとエラーが出てしまい 修正箇所もわからずじまいです。
エクセルで作成できないでしょうか?

よろしくお願いします。

(ゆぅ) 2025/05/01(木) 15:09:12


「エクセルで作成できないでしょうか?」とあるので
VBAは、望まなくて関数のみでの処理を望んでいるようですが

ん?さんのコードをこちらで検証結果、
エラーは無く
あなたが、希望する以下のよう出力が記載されます。

5/2はA・B
5/5が休日なので5/9もA・B
5/12はC・D 5/16 C・D
5/19はA・B 5/23 A・B
といった具合に

’------------------------------------------
(少なくともVBA試した結果で
どこでエラーが出たのかはっきりさせる必要は有ると思います。)

(ROM) 2025/05/01(木) 15:35:05


ん様 ROM様
ありがとうございます。

再度 新しいシートでためしたところ
教えて頂いたようにできました。
6月と日付を変えても 上手くいきました。

ありがとうございました
大変失礼いたしました。

(ゆぅ) 2025/05/01(木) 15:54:21


ROMさん、検証までしていただいて恐縮です。 お手数をお掛けしました。

ゆぅさん、上手くいって良かったです。
もし、当番者が増えるようであれば、配列に "Eさん", "Fさん" を追加して下さい。

(ん?) 2025/05/01(木) 16:10:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.