• 締切済み

勤務表の○がついている人をグレーアウトするには

勤務管理を休みの日は○が入っている以下のファイルがあります。        8月1日  8月2日   8月3日 田中 ひろし   ○ 井藤 尚子          ○ 後藤 克彦                 ○ 別のファイルには1日から31日まで別でシートがあり、上記メンバの名字だけが記載されており、休んだ人のみグレーにしたいです。 なにか良い方法はありますでしょうか? よろしくお願いいたします。

みんなの回答

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

前提条件として、最初の「○」を付けているファイルを「Master.xlsx」(こちらの名前は使用していませんが)とし、31個のシートのある、お名前が羅列されているファイルを「Name.xlsx」とします。 また、「Master.xlsx」と「Name.xlsx」のお名前の順番は完全に一致しているものとし、「Master.xlsx」の方は、2行目から、「Name.xlsx」の方は1行目から始まっているものとします。 最後に、「Master.xlsx」の1行目は、日付の項目行とし、2行目以降にお名前が入っています。 ちなみに、お名前の羅列の途中に、空白があってはいけません(最終行が正確に取得できません)。 以上の条件下で、「Master.xlsx」を開いて、「Alt+F11」(「Alt」(“オルト”と読みます)を押しながら「F11」を押す)。 新しく現れた画面のメニューから「挿入」→「標準モジュール」。 右側に白い大きな画面が現れたと思いますので、そこに以下のマクロをコピー&ペーストし、「F5」で実行すると、結果が出ています。 なお、「Name.xlsx」や「Name.xlsx」の存在する場所などは、質問者の状況に合わせて書き直してください。 Option Explicit Sub Test() Dim w As Workbook Dim s As Worksheet Dim i, j As Integer Set w = Workbooks.Open("D:\Programming\Name.xlsx") For i = 2 To ThisWorkbook.Worksheets(1).Range("B1").End(xlToRight).Column Set s = w.Worksheets(i - 1) For j = 2 To ThisWorkbook.Worksheets(1).Range("A2").End(xlDown).Row If ThisWorkbook.Worksheets(1).Cells(j, i).Value = "○" Then s.Cells(j - 1, 1).Interior.ColorIndex = 48 End If Next j Set s = Nothing Next i w.Save w.Close Set w = Nothing End Sub

peace5577
質問者

お礼

解決できました。 丁寧な説明ありがとうございました。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは それぞれのファイル名と、関連性? 例えば、○がついているファイル名は、年月.xlsx になっているとか。 1日から31日までのシートが有るファイル名は、年月日.xlsx になっているとか。 シート名は数字だけか?、「日」まで入っているのかとか。 苗字だけの名前は 、○がついているファイルと同様に姓名に出来ないのか、とか。 同姓、同姓同名の事は考えなくて良いのか、とか。 それぞれのファイルは同時に開いておけるのか、とか。 各シートのデータのセルへの配置がどうなっているのか、とか。 不明な点や、問題が有り過ぎますね。

関連するQ&A