エクセルについて質問です。シフトを作成しています。
sheet1
B1からc1d1.....の順に1日から31日まで日付が入っています。
A2からa3a4....の順に氏名が入っています。
B2から下はそれぞれのシフトが入力されています。(a b c d 欠 など)
sheet2
A列にはsheet1と同順で氏名が入っています。
B1からc1d2...と時間が入力されており15フン単位で刻まれています。
例えばaシフトが9~18時までのシフトだった場合、sheet2のその氏名に応じて氏名の横のセルに上の時間の範囲だけ色を入力できる設定方法を教えてください 。加えてsheet2上の何処かで日付を変更するとsheet1の同日の列のシフトを読んで、その日の書式を自動設定する方法を教えてください。Abcd...以外の欠などのシフトの場合は、書式設定は不要です。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
マクロの一例です
Sub Macro4()
Set kiten = Sheets(1).Range("A1")
hiduke = Day(Sheets(2).Range("A1").Value)
Sheets(2).Select
Range("A2").Select
While Selection.Value <> ""
Rows(Selection.Row).Interior.ColorIndex = xlNone
Select Case kiten.Offset(Selection.Row - 1, hiduke)
Case Is = "a"
With Range(Selection.Offset(0, 1), Selection.Offset(0, 5)).Interior
.Color = vbRed
End With
Case Is = "b"
With Range(Selection.Offset(0, 3), Selection.Offset(0, 8)).Interior
.Color = vbRed
End With
Case Is = "c"
With Range(Selection.Offset(0, 5), Selection.Offset(0, 10)).Interior
.Color = vbRed
End With
Case Is = "d"
With Range(Selection.Offset(0, 7), Selection.Offset(0, 12)).Interior
.Color = vbRed
End With
End Select
Selection.Offset(1, 0).Select
Wend
End Sub
Sheet2のA1セルにシフトを表示したい日付を入れて実行すると塗りつぶします
各ケースの
With Range(Selection.Offset(0, 1), Selection.Offset(0, 5)).Interior
Offsetで指定した範囲を塗りつぶします上記の場合2列目から6列目までを塗りつぶします
タイムシフトにあわせて範囲を指定してください
このマクロはあくまで一例、変更する要素は多数有りますので後はご自信で工夫を
No.3
- 回答日時:
追記:
先のマクロのSheet2!A1セルに入力する日付はX月X日と入力する必要が有ります3/6とか4-15などと入力してください
単純に1とか5と入力する場合は3行目の
hiduke = Day(Sheets(2).Range("A1").Value)
の部分を
hiduke = Sheets(2).Range("A1").Value
と変更してください
変更すると日付形式の入力では逆に正常動作しませんので、入力形式をどちらかに固定する必要が有ります
No.1
- 回答日時:
セルの塗りつぶしのみであれば、条件付書式で可能ですね
Sheet1のA1セルに[kiten]、Sheet2の日付を入力したセルに[hiniti]と名前付け
Sheet2へ条件付書式
OFFSET(kiten,ROW()-1,DAY(hiniti))="a"
を設定すると塗りつぶしがされます
シフトによって時間帯が変化するの場合、そのセルが塗りつぶされる時間帯のシフトの計算式をor関数で連記する
例:aのシフトがB列からD列まで、bのシフトがC列からF列まで、cのシフトがF列からI列までの場合
条件付書式計算式
B2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="a"
C2セル~D2セル:OR(OFFSET(kiten,ROW()-1,DAY(hiniti))="a",OFFSET(kiten,ROW()-1,DAY(hiniti))="b")
E2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="b"
F2セル:OR(OFFSET(kiten,ROW()-1,DAY(hiniti))="b",OFFSET(kiten,ROW()-1,DAY(hiniti))="c")
G2セル~I2セル:OFFSET(kiten,ROW()-1,DAY(hiniti))="c"
と設定し、B2:I2を選択して下方向に書式をコピーで
この回答への補足
Web2525さんありがとうございます。
正直、言いますと上記書式設定ではうまく動作しません。やり方が悪いのか、作動しません。
できれば、マクロで設定することは可能でしょうか。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- Excel(エクセル) エクセルでシフト表を作成しています。 シフト詳細 朝 7:30〜12:00 4:30 昼 12:00 2 2023/06/18 11:01
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
-
【Excel VBA】指定行以降をクリ...
-
セル色なしの行一括削除
-
特定行の色を変えたい(FlexGrid)
-
実行時エラー438 オブジェクト...
-
エクセルVBAでコピーして順...
-
指定した条件で行セルを非表示...
-
Excel2003 複数セル1列の入力済...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
VBA初心者です。 VBAで行単位で...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
DataGridViewのセル編集完了後...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
VBAの計算で@が出てしまう件
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
VBA ユーザーフォーム ボタンク...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
-
VBAを使用した時間管理
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
おすすめ情報