[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シフト表をもとに平等な掃除当番表を作成』(カピピ)
はじめまして。
毎日、職場での3種類の掃除を所属するスタッフさん7名に交代でしていただいておりますが、
出勤日や休みが不規則な上、急にお休みされることも多く、当番を決めるのが困難です。
トイレ掃除、掃除機、拭き掃除の3種類を出来るだけ不公平が出ないよう、任意にしていただいてますが、しっかり当番が決めていないこともあり、しれっといつもされない方、いつもトイレ掃除を頑張ってしてくださってる方など、このままでは今後、人間関係に支障がでそうです。
2週間ごとに提出していただくシフト表をもとに、3種類のお掃除当番とだれかお休みされた方がいらっしゃった場合、補助当番を決めれるような表を作成したいと考えておりますが、手作業で割り当てるとなると難しく、公平に作れる方法があれば教えていただきたいです。
マクロの知識が全くないため、基本的なことから教えていただけると大変助かります。
どうぞよろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
>手作業で割り当てるとなると難しく、公平に作れる方法があれば教えていただきたいです。 このルールを決めるのはご自身ですよ。 あくまで、カピピさんが決められたルールに基づいてデータを加工するお手伝いはできますが、 「公平なルール決め」までは法令等に無い限り、回答者では決めかねると思います。 (稲葉) 2023/02/23(木) 18:23:04
公平というのは、当番の回数や掃除の種類ができるだけ偏ることなく決めたいということです。
(カピピ) 2023/02/23(木) 18:29:23
では トイレ・掃除機・掃き掃除はそれぞれ何名が担当していて 1日最大何人が出てきて 最低何名出てこなくちゃいけなくて 多いときは出勤日減らしてもらって 7人全員の出勤日数はどうなっていて 土日祝日も出勤する必要があるのないのか 出勤できる曜日・できない曜日が人それぞれあって 個人個人で月々の最大出勤日数が決まっていて 組み合わせてはいけない人がいて 午前午後で分かれる必要があって とかこういうのまでこっちで考えなくちゃだめですかね?
現状だと何にも見えないんですよ。
(稲葉) 2023/02/23(木) 19:14:19
↓の方のように質問者の方で用意すべき基準すら 回答者に求める方が多いような気が・・・。
[[20230223135033]] 『入力した数字を均等かつ、上限を超えないよう振り』(愛)
(とおりすがりんご) 2023/02/23(木) 19:20:22
>このままでは今後、人間関係に支障がでそうです。
それは困りましたね。なんとかせねば...
>手作業で割り当てるとなると難しく、公平に作れる方法があれば教えていただきたいです。 >マクロの知識が全くないため、基本的なことから教えていただけると大変助かります。
関数でも、出来たような気がするが、マクロでした方が楽かもですね。 マクロの知識が全くないためって、ほぼお願い丸投げ、お任せします状態でしょうか?
ところでシフト表のレイアウトは決定されているんですよね? したらレイアウトの情報が必要です。
参考になればですが、以前見た動画です。 下記を参考にしたらできんかな〜です。できなければ...ごめんなさい。
【Excel講座】98%おまかせ!超便利な「シフト表」の作り方 ★ALL STEP 総集編★ https://www.youtube.com/watch?v=X7yHIMyVX1s&t=2977s
(あみな) 2023/02/23(木) 19:23:46
もう一つ参考になりそうなのが...
掃除当番表を作成したい:エクセル Q&A(Tips) http://www4.synapse.ne.jp/yone/excel2010/faq/keisan_soujitouban.html
(あみな) 2023/02/23(木) 20:27:24
説明不足で申し訳ありません。
出勤日は月〜金です。
シフト表はエクセルで作っています。
シフト人数は、その日によって人数は違いますが、特に上限はありません。
ただ、毎日だいたい4〜5名の方が出勤され、だいたい週3か4でみなさんシフトが入ってます。
3種類のお掃除は、毎日、来られた方の中で一掃除、1人という感じです。
掃除が終われば、自分のネームプレートの横にされた掃除プレートを貼って、
すでに今日はその掃除が終わったことがわかるようにしてくださってます。
一日、当番は3人必要ですが、お休みされた場合に補助当番も決めたいなと思ってます。
誰と誰を組み合わせてはいけないなど、複雑なルールはありません。
単純に各掃除の回数をだいたい同じ回数にできたらという趣旨でした。
(カピピ) 2023/02/23(木) 21:36:07
>掃除が終われば、自分のネームプレートの横にされた掃除プレートを貼って、 こういう良い習慣があるのでしたら、「名前−掃除内容」のプレート渡しておいて 楽な仕事の上限を決めちゃえば早そうな気がします。 7人に各掃除のプレートを3枚ずつ渡しておいて、なくなり次第次のプレートの束を渡せば 補助なんて決めずに公平になるんじゃないですかね? 20日÷7名=約3枚なので、概ね1か月でなくなるかと。
1日4、5人いるとのことで、人気の掃除箇所は先にプレートが無くなるなどした場合は、改めてルール を作成するなど、走りながら改善がいい気がします。 逆に人気が無くて特定の人だけ従事している状況で、その日はその人しかいないが、 プレートを使い切っている場合は、翌月のプレートから差し引く・お菓子引き換え券贈呈等、モチベにつながりそうな運用でもよいかも。 慣れないシフト管理するよりかは楽かなーと。
エクセル関係ないですが、こんな感じで印刷して、はさみで切って渡しておくとかどうでしょう?
|[A] |[B] |[C] |[D] [1]| |トイレ |掃除機 |掃き [2]|さとう|さとう-トイレ|さとう-掃除機|さとう-掃き [3]|いとう|いとう-トイレ|いとう-掃除機|いとう-掃き [4]|むとう|むとう-トイレ|むとう-掃除機|むとう-掃き [5]|ごとう|ごとう-トイレ|ごとう-掃除機|ごとう-掃き [6]|にとう|にとう-トイレ|にとう-掃除機|にとう-掃き [7]|かとう|かとう-トイレ|かとう-掃除機|かとう-掃き [8]|みどう|みどう-トイレ|みどう-掃除機|みどう-掃き (稲葉) 2023/02/24(金) 10:06:22
単純な割り振り程度でしたらExcel関数やマクロ等でアドバイスできますが
「あんな場合、こんな場合、、、あの人の都合、、、」
言い始めると一つのアプリに相当すると思いますよ。
蛇足と思いますが、
「不公平感」って人それぞれなので
「私には高齢の両親と小さな子供が、、、」
まで考慮するまで考えると・・・
個人的に思ったのは、
(前提として、短絡的に「アプリ=お金とるよ?」と思ってください)
ここって善意でアドバイス等頂ける場なので
あまりに複雑なのは難しいと思います。
稲葉さんのプレート束案がいいと思いますよ。
[D2:さとう-掃き]をむとうさんが行使してもいいってルールを入れたり含め。
(金銭のやりとりは知りませんが)
どうしても、であれば例えば、
2週間ごとのシフト表をもとに3種類のお掃除当番を割り振るまでを
Excelで行い、急なシフト移動はメモなり残す。
翌々週(?)の割り当て時に(理由はどうあれ)前回までの実績を入力し
そこから個人ごとの割合を考慮したシフトをくむ。
ようなことなら(時間かかりますが)なんとかなるかも?と思います。
(たつ) 2023/02/24(金) 10:39:11
>単純に各掃除の回数をだいたい同じ回数にできたらという趣旨でした。 各人の出勤回数って、ほぼ同じなんですか? 同じくらいじゃないと、掃除を同じ回数にすると却って不公平になるんですが・・
どれくらいの期間で考えるんですか? (過去の実績データもそれに応じて入手できる仕掛けにする必要があります)
新人が中途で入ったとき、過去データはないので、下手するとその人に割振りが集中するので、 全員の平均程度にはやったという仮想実績を付与する必要性も感じます。 長い休みを取った人も同じ問題が起こりそう。(そもそも、こんな事は想定不要ですか?)
予定外に休んだ人が居る場合、そのリカバリーはどうするんですか? 本命当番と補助当番の二人で個人間的な調整をするんですか? 当番がトイレ掃除で、本命当番が「しれっとした人」だった場合、 問題が起きそうな気がしますけども。
(半平太) 2023/02/24(金) 10:43:31
コメントありがとうございます。
仰るとおり、いろいろなケースが考えられますね。
いろいろなケースを想定した上できっちり公平にというのは本当に難しいことだと、
ご相談していて改めて感じました。
稲葉さまご提案のプレート束案もとてもいい案だと思います。
補助当番決めると余計ややこしくなってしまうのかもしれないですね。
たつさまの仰る、「2週間ごとのシフト表をもとに3種類のお掃除当番を割り振るまでを
Excelで行い」というのはExcelの関数などでできることなのでしょうか。
半平太さまがコメントしてくださるように、休まれた方と補助当番の方との調整、難しそうです。
補助当番を作るのであれば予めルール付けしておいた方がよい気がします。
スタッフさんの出勤回数は全く同じではないですが、ほぼ同じくらいなので、出勤回数に関係なく、当番の
あたる回数を平等にと考えており、
まずは単純に2週間のシフトの中で掃除当番の回数、種類をExcelで割り振りできたらと思ってます。
縦軸にスタッフさんの名前、横軸に日付(2週間分)という形で表を作成し、
予めお休みの方は休と入力しておき、その表をもとにExcelの関数で割り振りできたらと
思ったのですが。
みなさん仕事はしっかりしてくださいますし、穏やかな職場だとは思うのですが、
些細なことで人間関係、揉めてきますし難しいです。
(カピピ) 2023/02/25(土) 21:45:22
>スタッフさんの出勤回数は全く同じではないですが、ほぼ同じくらいなので、 それが大前提とします。 ※2週間で3日しか出てこない人がいたら、皆と同数の掃除が出来る訳ないので・・
1.スタッフさんに以下のレイアウトで休を埋めて貰います。
<サンプル> 行 _____A_____ __B__ __C__ _D_ _E_ _F_ _G_ _H_ _I_ _J_ _K_ _L_ _M_ _N_ _O_ 1 2/20 2/21 ・ ・ ・ 2 スタッフ名 月 火 水 木 金 月 火 水 木 金 3 A 休 休 4 B 休 休 休 5 C 休 休 6 D 休 休 7 E 休 8 F 休 休 9 G 休 休
2.後記マクロを標準モジュールに貼り付けて、そのマクロ(ShiftMaking)を実行します ※気に入るのが出来上がるまで、何度実行しても構いません。
<実行結果の1例> 行 _____A_____ __B__ __C__ __D__ __E__ __F__ __G__ __H__ __I__ __J__ __K__ __L__ __M__ __N__ __O__ 1 2/20 2/21 ・ ・ ・ 2 スタッフ名 月 火 水 木 金 月 火 水 木 金 Toil Vcum Wipe 合計 3 A Toil 休 Wipe 休 Toil Vcum 2 1 1 4 4 B 休 Vcum 休 Vcum 休 Toil Wipe Wipe 1 2 2 5 5 C Toil 休 Wipe Vcum Toil 休 2 1 1 4 6 D 休 Wipe Toil 休 Vcum Toil 2 1 1 4 7 E Vcum 休 Wipe Toil Vcum Wipe 1 2 2 5 8 F Vcum Toil 休 休 Vcum Wipe 1 2 1 4 9 G Wipe 休 Vcum Wipe Toil 休 1 1 2 4
3.標準モジュールに貼り付けるマクロ
Sub ShiftMaking() Const strShift As String = "B3:K9" Const TTL = 4 Dim RandOrder, Adr As String Dim rShifts As Range, vTSFCount() Dim CL As Long, i As Long, NameRow As Long Dim PriorityAry, NormatOrder, pos, spl, Kind Dim trial As Long
Set rShifts = Range(strShift) '希望シフト格納 ReDim vTSFCount(1 To rShifts.Rows.Count, 1 To 4) '回数管理用(T,S,F,TOTAL) Range("L3").Resize(UBound(vTSFCount), 4) = Empty '集計用数式を消去
On Error Resume Next '前回算出した結果をクリアする(つまり数式を消去) rShifts.SpecialCells(xlCellTypeFormulas, 23).ClearContents On Error GoTo 0
spl = Split("Toil,Vcum,Wipe,合計", ",") Range("L2:O2") = spl
Adr = rShifts.Offset(, 10).Resize(, 1).Address 'シフトデータ入力範囲のアドレス NormatOrder = Evaluate("row(1:" & rShifts.Rows.Count & ")") '単純配列作成(2次元配列)
With Range(Adr) '優先(劣後?)順位をランダムに決める。 .FormulaR1C1 = "=RAND()" .Value = .Value RandOrder = Application.Match(Application.Aggregate(15, 6, .Value, NormatOrder), .Value, 0) .Value = Empty End With
Application.ScreenUpdating = False
For trial = 1 To 20 For Kind = 0 To 2 For CL = 1 To 10 '日ごとに順次決定する
'担当回数の少ない人から割り振る(職種は、Toil,Vcum,Wipeの順で決定する) PriorityAry = getPriorityDATA(vTSFCount, RandOrder, Kind, rShifts, CL)
For i = 1 To rShifts.Rows.Count pos = Application.Small(PriorityAry, i) '回数の少ない人から可否をチェックする NameRow = Right(pos, 2)
If rShifts(NameRow, CL) = "" And Not (rShifts(NameRow, CL).HasFormula) Then rShifts(NameRow, CL) = "=""" & spl(Kind) & """" vTSFCount(NameRow, Kind + 1) = vTSFCount(NameRow, Kind + 1) + 1 vTSFCount(NameRow, TTL) = vTSFCount(NameRow, TTL) + 1 Exit For End If Next i Next CL Next Kind
Range("L3").Resize(rShifts.Rows.Count, 3).FormulaR1C1 = "=COUNTIF(RC2:RC11,R2C)" Range("O3").Resize(rShifts.Rows.Count).FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
If isSatisfied(Range("L3").Resize(rShifts.Rows.Count, 4)) Then Exit For Else Range("L3").Resize(rShifts.Rows.Count, 4).Value = Empty rShifts.SpecialCells(xlCellTypeFormulas, 23).ClearContents End If Next trial
Application.ScreenUpdating = True End Sub
Private Function getPriorityDATA(vTSFCount(), RandOrder, Kind, rShifts As Range, CL As Long) Const TTL As Long = 4 Dim i As Long, numOfNoBlank As Long Dim temp(), lastWeekMess As Long
ReDim temp(1 To UBound(vTSFCount))
For i = 1 To 7 '残存期間までの当番可能な日数を考慮する lastWeekMess = Application.Max(CL, 7) numOfNoBlank = 99 - Application.CountBlank(rShifts(i, lastWeekMess + 1).Resize(, 11 - lastWeekMess))
temp(i) = vTSFCount(i, TTL) * 100000000 + vTSFCount(i, 1) * 1000000 + _ numOfNoBlank * 10000 + RandOrder(i, 1) * 100 + i Next i
getPriorityDATA = temp End Function
Private Function isSatisfied(result As Range) As Boolean Dim col As Range For Each col In result.Columns If Application.Max(col) - Application.Min(col) > 1 Then Exit Function End If Next
isSatisfied = True End Function
4.本命当番が休んだ場合 アナログで対応する。
週の初めにその事態が起きた場合は、後の方で、同じ掃除の種類をやる予定の人を見つけて、その人の予定とチェンジする。
週も押し迫って、上記のチェンジがむずかしい場合は、誰か臨時で代わってもらい、その旨メモをしておく。 そして、次回のシフト作成時、とりあえず普通にシフト表を作ったあと、 メモに基づいて、代わってくれた人のシフトの一つを前回本命の人にハメ込む。
(半平太) 2023/02/26(日) 21:23:47
こんなにすごいプログラムを作っていただき、本当にありがとうございます!!
お休みの方が出たときのルール案もありがとうございます。
作っていただいたプログラムを標準モジュールに貼り付け、ツール→マクロ→実行で
シフト表に反映することができまして!!(この操作方法あってましたでしょうか?)
プログラムが反映したときは感動しました!!すごいです。
もし今後、スタッフさんの人数に変更が出た場合には、
Const strShift As String = B3:K8のところを変更すればよいのでしょうか??
そんな単純なことではないのでしょうか。
(カピピ) 2023/02/28(火) 01:37:39
また、今回は当番が3つでしたが、例えば当番の数が4つに増えた際には、
職種は、Toil,Vcum,Wipeの順で決定する)
の項目に増えた仕事を組み込めばよいのでしょうか。
全くの素人考えですみません。
(カピピ) 2023/02/28(火) 01:54:33
コードを見直したら、褒められたものではなかったです。m(__)m
>(この操作方法あってましたでしょうか?) 合っています。
>今回は当番が3つでしたが、例えば当番の数が4つに増えた際には、 当番の種類が増えることは想定してなかったです。
・・と言うのは、当番が増えて、人数が増えないと、だんだんギリギリの割振りになっていきます。 すると、出勤した者は有無を言わせず掃除をやって貰う、なんて日がだんだん増えて、 「回数を平準化したい」とか贅沢を言ってられない状況に突き進んで行きます。
レイアウトを以下に変更し、ご自分で「連番・名前・掃除の種類」を書き込んでください。
<以下は、1人増えて、掃除の種類が1つ増えた例ですが、実態に合わせて作ってください。> 行 __A__ _____B_____ __C__ __D__ _E_ _F_ _G_ _H_ _I_ _J_ _K_ _L_ ___M___ ___N___ ___O___ __P__ __Q__ 1 2/20 2/21 ・ ・ ・ 2 連番 スタッフ名 月 火 水 木 金 月 火 水 木 金 トイレ 掃除機 拭掃除 追加1 合計 3 1 A 4 2 B 5 3 C 6 4 D 7 5 E 8 6 F 9 7 G 10 8 H
※掃除の種類は、M2セルに必ず「トイレ掃除を意味する語」、最終列には必ず「合計」と入れてください。 「連番の最大値」及び「合計の位置」から、シフト表の大きさを自動判定します。
以上のひな形表が出来たら、いつもの通り、スタッフさんに「休」を入れて貰ってください。
マクロは後記のものに変更しました。 トイレ掃除を多目にやった人は割損しない様に配慮しました。 トイレ掃除以外は、種類の区別はしない作りになっています。(合計が同じなら、個別のバラつきは無視)
旨く作成できなかったと機械が判定した時は「マズい」とメッセージが出ますので、何回か実行してください。
※何度やっても「マズい」が出る場合は、無理な人員構成・休暇取得が原因かも知れないので、 その時は諦めて鉛筆舐めて作ってください。
<結果一例> 行 __A__ _____B_____ ___C___ ___D___ ___E___ ___F___ ___G___ ___H___ ___I___ ___J___ ___K___ ___L___ ___M___ ___N___ ___O___ __P__ __Q__ 1 2/20 2/21 ・ ・ ・ 2 連番 スタッフ名 月 火 水 木 金 月 火 水 木 金 トイレ 掃除機 拭掃除 追加1 合計 3 1 A 拭掃除 休 掃除機 トイレ 休 拭掃除 追加1 1 1 2 1 5 4 2 B 休 トイレ 休 掃除機 休 拭掃除 追加1 掃除機 1 2 1 1 5 5 3 C 拭掃除 休 トイレ 追加1 追加1 休 トイレ 2 0 1 2 5 6 4 D 休 掃除機 トイレ 追加1 休 拭掃除 掃除機 1 2 1 1 5 7 5 E 追加1 休 拭掃除 掃除機 トイレ 追加1 1 1 1 2 5 8 6 F トイレ 追加1 拭掃除 休 掃除機 休 トイレ 2 1 1 1 5 9 7 G 掃除機 追加1 休 トイレ 拭掃除 休 掃除機 1 2 1 1 5 10 8 H 休 掃除機 拭掃除 トイレ 追加1 休 拭掃除 1 1 2 1 5
Sub ShiftMaking() Const trialMax As Long = 100 Dim nStaffs As Long, PosOfTTL As Long Dim TTL As Long Dim RandOrder Dim rShifts As Range, rScores As Range, rKinds As Range Dim rGrand As Range, vTSFCount() Dim CL As Long, i As Long, NameRow As Long Dim PriorityAry, NormOrder, pos, spl, KindNo Dim trial As Long
PosOfTTL = Application.Match("合計", Rows(2), 0) TTL = PosOfTTL - 12 nStaffs = Application.Max(Columns("A"))
Set rShifts = Range("C3").Resize(nStaffs, 10) '希望シフト格納 Set rScores = Range("M3").Resize(nStaffs, TTL) Set rKinds = Range("M2").Resize(1, TTL) Set rGrand = Range("C3").Resize(nStaffs, 10 + TTL)
ReDim vTSFCount(1 To nStaffs, 1 To TTL) '回数管理用
Range("M3").FormulaLocal = "=""Dummy""" rGrand.SpecialCells(xlCellTypeFormulas, 23).ClearContents '全数式をクリア NormOrder = Evaluate("row(1:" & nStaffs & ")") '単純配列作成
Application.ScreenUpdating = False
For trial = 1 To trialMax With rScores.Columns(1) '優先(劣後?)順位をランダムに決める。 .FormulaR1C1 = "=RAND()" .Value = .Value RandOrder = Application.Match(Application.Aggregate(15, 6, .Value, NormOrder), .Value, 0) .Value = Empty End With
For KindNo = 1 To TTL - 1 For CL = 1 To 10 '日ごとに順次決定する
'担当回数の少ない人から割り振る(職種は、Toil,Vcum,Wipe,・・の順で決定する) PriorityAry = getPriorityDATA(vTSFCount, RandOrder, rShifts, CL, TTL)
For i = 1 To rShifts.Rows.Count pos = Application.Small(PriorityAry, i) '回数の少ない人から可否をチェックする NameRow = Right(pos, 2)
If rShifts(NameRow, CL) = "" And Not (rShifts(NameRow, CL).HasFormula) Then rShifts(NameRow, CL) = "=""" & rKinds(1, KindNo) & """" vTSFCount(NameRow, KindNo) = vTSFCount(NameRow, KindNo) + 1 vTSFCount(NameRow, TTL) = vTSFCount(NameRow, TTL) + 1 Exit For End If Next i Next CL Next KindNo
rScores.FormulaR1C1 = "=COUNTIF(RC3:RC12,R2C)" rScores.Columns(TTL).FormulaR1C1 = "=SUM(RC13:RC[-1])"
If isSatisfied(rScores, TTL, rShifts, rKinds(1, 1).Value) Then Exit For ElseIf trial = trialMax Then Application.ScreenUpdating = True MsgBox "マズい" Exit For Else rGrand.SpecialCells(xlCellTypeFormulas, 23).ClearContents '全数式をクリア End If Next trial
End Sub
Private Function getPriorityDATA(vTSFCount(), RandOrder, rShifts As Range, CL As Long, TTL) Dim i As Long, numNonBlank As Long Dim Temp(), lastWeekMess As Long
ReDim Temp(1 To UBound(vTSFCount))
For i = 1 To rShifts.Rows.Count Temp(i) = vTSFCount(i, TTL) * 1000000 + vTSFCount(i, 1) * 10000 + RandOrder(i, 1) * 100 + i Next i
getPriorityDATA = Temp End Function
Private Function isSatisfied(rScores As Range, TTL As Long, rShifts As Range, Kind) As Boolean Dim i As Long, k As Long, CL As Long Dim Max1, Min1, MaxTTL, MinTTL, MaxSofar, MinAmongLessTOILET MinAmongLessTOILET = 1000 Max1 = Application.Max(rScores.Columns(1)) Min1 = Application.Min(rScores.Columns(1)) MaxTTL = Application.Max(rScores.Columns(TTL)) MinTTL = Application.Min(rScores.Columns(TTL))
If Max1 - Min1 > 1 Or MaxTTL - MinTTL > 1 Then Exit Function Else For i = 1 To rScores.Rows.Count MaxSofar = Application.Max(IIf(rScores(i, 1) = Max1, rScores(i, TTL), 0), MaxSofar) MinAmongLessTOILET = Application.Min(IIf(rScores(i, 1) = Min1, rScores(i, TTL), 1000), MinAmongLessTOILET) Next i
If MaxSofar > MinAmongLessTOILET Then '1回差でも、トイレ掃除の人を割損させない様に配慮する For i = 1 To rScores.Rows.Count If rScores(i, 1) = Max1 And rScores(i, TTL) > MinAmongLessTOILET Then '入替得るべきスタッフ(i) For CL = 1 To 10
If rShifts(i, CL) <> Kind And rShifts(i, CL) <> "休" Then '出勤で、Toilじゃない For k = 1 To rScores.Rows.Count If k <> i Then If rScores(k, 1) = Min1 And rScores(k, TTL) = MinAmongLessTOILET Then '入替可能か検討 If rShifts(k, CL) = Empty Then '入替可能 rShifts(k, CL).FormulaLocal = rShifts(i, CL).FormulaLocal rShifts(i, CL) = Empty GoTo warpOutLoop End If End If End If Next k
End If warpOutLoop: Next CL End If Next i
If i > rScores.Rows.Count Then '入替不能 Exit Function End If End If
isSatisfied = True End If End Function
(半平太) 2023/02/28(火) 20:57:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.