下のような勤務表を作成しました。
1日を午前/午後/夜間の3分割にして、3チームで輪番制です。
使用階数によって出勤者の人数が変更します。
(使用階数の合計が1なら1名のみ、2なら3名、3なら4名)
使用階数の合計は塗りつぶされたセルをColorCountでカウントしてます。
今は下の数式を各セルに入力しています。
=IFS(OR($J3="午前①",$J3="午前②"),IF($H3>=1,"出勤",""),OR($J3="午後①",$J3="午後②"),IF($H4>=1,"出勤",""),OR($J3="夜間①",$J3="夜間②"),IF($H5>=1,"出勤",""))
休暇などもセルに入力したいと要望を受けていますが、直接入力すると数式に上書きされて変更があった時に対応できなくなってしまいます。
VBAで上記の数式を実現は可能でしょうか?ご教示のほど、宜しくお願い致します。
No.10ベストアンサー
- 回答日時:
No.9
- 回答日時:
No.8
- 回答日時:
下記にアップしました。
https://ideone.com/vGSnjR
下記の件、対応済みです。
1)3チームから4チームに変更
2)待機①、待機②の場合、空白表示
3)関数を埋め込むセルに待機等の文字がある場合、その文字を残す。(関数を設定しない)
(その文字を削除しても、関数式は復活しません。関数式を設定するには再度マクロを実行する必要があります)
No.7
- 回答日時:
No6の訂正です。
補足要求①
>(数式は、,OR($セル="待機①",$セル="待機②"),"")を追加)
該当セルが待機①又は待機②なら、空白を表示と理解しました。
No.6
- 回答日時:
No5の補足拝見しました。
補足要求①
>(数式は、,OR($セル="待機①",$セル="待機②"),"")を追加)
この場合、セルに表示する文字は”出勤”でよいのでしょうか?
補足要求②
>休暇など事前に入力された文字は残す事は可能でしょうか?
マクロを実行し、対象となるすべてのセルに、関数式を埋めんだ後で、そのセルに”休暇”と打ち込むと理解していました。
つまり、マクロ実行後に、セルに”休暇”を打ち込みます。
そうすると、そのセルの関数式が破壊されます。
その為に、次の月の設定時、対象となる全セルに関数式を埋め込む
必要があるのでマクロで一発でできるようにする。
ということかと思いました。
マクロ実行前に、休暇対象となる全てのセルに”休暇”を打ち込み、
そのあとで、マクロを実行するということでしょうか。
マクロ実行時にそのセルをスキップすることは可能ですが、
そうすると、
合計が1の場合、Aは本来、出勤のはずですが、休暇の文字があるので、スキップします。B,C,Dは関数式を埋め込みますが、合計が1なので、全て空白になります。
つまり
A B C D
休暇 □ □ □
(□は空白)
のようになりますが、これはあなたの期待する結果でしょうか?
それで良ければ、休暇など事前に入力された文字は残す事は可能です。
No.5
- 回答日時:
2案採用の前提での補足要求です。
1.B3に6月が記入されていますが、(結合セルなのでB3になります)
①6の数字は半角の前提であってますか。
②月の文字は実際に打ち込んでますか、それとも、6のみ入力し、書式設定で月を表示していますか。
2.西暦年の記入についてです。
①B2セル(結合セルなのでB2になります)に入力してある前提でよろしいでしょうか。
②2022のように半角の西暦4桁で入力する前提で良いですか。
③年の文字ですが、月の文字と同じ扱いにしますがよろしいでしょうか。
月が実際に打ち込んでいるなら、年も実際に打ち込む。
月が書式設定で表示しているなら、年も書式設定で表示する。
No.4
- 回答日時:
No3です。
誤記訂正:
「例では6月のため、30日分(月末日=90行)の関数式を接っていすれば良いわけですが、」
は
「例では6月のため、30日分(月末日=90行)の関数式を設定すれば良いわけですが、」
の誤りです。訂正いたします。
No.3
- 回答日時:
補足要求です。
1.数式について
>D者には下の数式
=IFS(OR($J3="午前①",$J3="午前②"),IF($H3>=2,"出勤",""),OR($J3="午後①",$J3="午後②"),IF($H4>=2,"出勤",""),OR($J3="夜間①",$J3="夜間②"),IF($H5>=2,"出勤",""))
の
$H3>=2
$H4>=2
$H5>=2
は
$H3>=3
$H4>=3
$H5>=3
ではないでしょうか。
2.設定すべき月末日
例では6月のため、30日分(月末日=90行)の関数式を接っていすれば良いわけですが、
2月の場合、西暦が不明なため、月末日が28日なのか29日なのかがわかりません。どのようにすればよいですか。
1案:無条件に31日分作成し、不要分は手動で削除する。
2案:どこかに年の情報を追加し、月末日をきちんと求め、月末日まで設定する。
等が考えられます。
No.2
- 回答日時:
こんにちは
表の説明をしていただいていますが、表の左半分の意味しか分かりません。
多分、具体的な回答をお求めなのだと想像しますが、その割にはセル位置が不明のままで、式を見せられてもさっぱりです。
VBAと言われても、同様にセル位置がわからないので、回答のしようもありません。
とは言え、ご質問の内容だけであれば、固定作業なので「マクロの記録」を利用すれば簡単に作成可能です。
以下、作成方法。
1)各セルにご提示の式を入力
2)セル範囲をコピー、値をペーストで固定値化
で可能です。
(記録作成の際のコツは、要領の良い操作で、簡潔に行うことです)
以上で、ご質問のマクロは作成できますが、想像するところ、それは本当にお求めのものではないのではないかと思います。
(もっと、質問者様を忖度してくれるマクロをお望みなのではないかと・・)
ということでから、No1様がご提案の方法が良さそうに思いますけれど・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- CGI VBAで条件から範囲を指定して色を塗る方法を知りたいです 1 2022/06/30 16:05
- Excel(エクセル) 出退勤管理の早退時間について 4 2023/08/21 15:22
- Excel(エクセル) Excel関数で日またぎの勤務時間にしるしを立てる 2 2022/04/20 17:22
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- 会社・職場 夜勤中の眠気について 3 2022/09/02 07:49
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
A1セルに入力したら、入力時間...
-
参照先セルに値が入っていない...
-
Excelで同じセルに箇条書きをし...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
エクセルで、特定のセルの内容...
-
Excel:文字と数字の組合せ、次...
-
エクセルの数式がかぶって、選...
-
yyyy/mm/ddからyyyy/mmへの変換
-
EXCELのセル上のURLを...
-
エクセルで時間の判定をしてい...
-
空白でないセルの値を返す方法...
-
入力したところまでを自動的に...
-
エクセルで10分ごとの時刻の...
-
Excel 大小比較演算子による「...
-
値を入力後、自動的にアクティ...
-
マイナス同士の前年比
-
エクセルの数式で計算結果に文...
-
エクセルで複数の条件で掛け算...
-
Wordのセル内にある文字の上部...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
参照先セルに値が入っていない...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
空白でないセルの値を返す方法...
-
Excelでセルに入力されたカラー...
-
Excel:文字と数字の組合せ、次...
-
値を入力後、自動的にアクティ...
-
エクセルで時間の判定をしてい...
-
yyyy/mm/ddからyyyy/mmへの変換
-
入力したところまでを自動的に...
-
エクセルで、特定のセルの内容...
-
エクセルの数式がかぶって、選...
-
エクセルで複数の条件で掛け算...
-
EXCELのセル上のURLを...
-
excel 関数にて文字を0として認...
-
エクセルの数式で計算結果に文...
-
マイナス同士の前年比
-
バーコードが読み取れない原因...
おすすめ情報
説明不足で申し訳ないです。行や列番号を載せてませんでした。
チーム1は、1日は午前中が出社時間で尚且つ1日は使用数が合計3なので、4名供とも出社
2日も午前中が出社時間だが、使用数が2なので出社は3名って表現です
B・C者には下の数式
=IFS(OR($J3="午前①",$J3="午前②"),IF($H3>=2,"出勤",""),OR($J3="午後①",$J3="午後②"),IF($H4>=2,"出勤",""),OR($J3="夜間①",$J3="夜間②"),IF($H5>=2,"出勤",""))
D者には下の数式
=IFS(OR($J3="午前①",$J3="午前②"),IF($H3>=2,"出勤",""),OR($J3="午後①",$J3="午後②"),IF($H4>=2,"出勤",""),OR($J3="夜間①",$J3="夜間②"),IF($H5>=2,"出勤",""))
返信ありがとうございます。
1については、ご指摘のとおり出勤条件は3以上なので
$H3>=3
$H4>=3
$H5>=3
です。
2ですが、2案が実現できれば・・・と思います。
tatsumaru77様、ご連絡ありがとうございます。
1.B3に6月が記入されていますが、(結合セルなのでB3になります)
①6の数字は半角です。
②数字のみを入力して書式設定で月を表示しています。
2.西暦年の記入についてです。
①B2セル(結合セルなのでB2になります)で問題ありません。
②西暦4桁の入力で問題ありません。
③同様の扱いで問題ありません。
後出しで申し訳ないのですが、夏休みなど多忙期は4チームでの輪番となり、「待機」として休暇などの補填にあたります。今までは別シートでしてたが、今後は4チームを同じシートで管理したいです。
(数式は、,OR($セル="待機①",$セル="待機②"),"")を追加)
休暇など事前に入力された文字は残す事は可能でしょうか?
宜しくお願い致します。
tatsumaru77様
こちらの意図もくみ取っていただき、ありがとうございます!!
数式を入れ込む?設定?する事が可能であれば、添付した表のようにセルにより参照先が違い表示する文字も違う場合も実現は可能でしょうか?
A者は、参照先が「F列」で表示文字が「Ⅰ棟」
=IFS(OR($Q3="午前①",$Q3="午前②"),IF($F3=1,"Ⅰ棟",""),OR($Q3="午後①",$Q3="午後②"),IF($F4=1,"Ⅰ棟",""),OR($Q3="夜間①",$Q3="夜間②"),IF($F5=1,"Ⅰ棟",""),OR($Q3="待機①",$Q3="待機②"),"")
B者は、参照先が「I列」で表示文字が「Ⅱ棟-2F」
C者は、参照先が「I列」で表示文字が「Ⅱ棟-3F」
D者は、参照先が「O列」で表示文字が「Ⅲ棟」
宜しくお願いします。