>「Sub 色付け()」から「End Sub 」までを・・・
(1)開発タブ>Visual Basicを選択。VBE画面が表示されます。(Alt+F11でも可)
(2)表示されたVBE画面のメニューで、挿入>標準モジュールとします。
(3)表示された標準モジュールに「Sub 色付け()」から「End Sub 」までをコピーして貼り付けます。
(4)Excel Sheetに戻ります。(Alt+F11でも可)
(5)色を付けたいセル領域を選択します。
広いセル領域の選択は、領域の左上セルを選択した状態で、
名前ボックスに右下セルを入力して、「B2:h34」のようにして、
Shift+Enterとすれば簡単に選択できます。慣れれば簡単です。
(6)開発タブ>マクロ>色付け を実行します。
マクロは、選択したセル領域の色付けをクリアした後、色付けを行っています。
従って、1回色付けをした後、データ修正があれば、修正した後、再度マクロ色付けを実行してください。
マクロは色付けを行った後、選択領域が選択されたままです。どこかセルをクリックすればいいんですが、最後の2行目の「End With」の前に、「 .Cells(1, 1).Select」を挿入すれば、選択した領域の左上セルが選択された状態で終わります。試してみてください。
Next
.Cells(1, 1).Select
End With
End Sub
実を言うと、Excelでフィルター機能を使ったことはほとんどありません。
理由は、質問に書かれているように、面倒くさいのと作業や処理が個人の知識や技量に依存して、大事な確認が難しくなることです。
経験からですが、Excelで1つの同じ作業が時間単位の場合、何らかの別方法がありました。Excelの機能を使ったり、無ければマクロということになります。
社内では、5分以上かかる作業は別方法(正確、確認が簡単、誰でもできる作業)があると言っていました。
この質問の場合、フィルターをかけることに注力した方法を考えてもあまり効果がないように思えます。
添付図を見る限り、色付けは簡単な理屈に見えます。しかし、内容について少し疑問があります。
(1)この添付図は、1日から7日(8日)までに対応する結果?
(2)10008行と10011行の3日にオレンジ色が付いているのはなぜ?
(3)例えば、10002行で、10日に「2」とかになってもどこにも色はつかない?
(4)1日から7日までの処理の次は、8日から14日、15日から21日となっていく?
(5)前月末のデータは今月初めに影響しない?
(6)3回以上の返品は無い?
私なら、2か月分のデータを登録し、2か月分で色をつけるか、選択して1週間ごとに色を付けると思います。
「1週間」ごとの作業の意味が、月初めの1日からだと、月末の数日はどうする?というような疑問も起きてきます。
実際の処理内容が分からないので、勝手なことを書いているとおもいます。ご容赦を。
フィルターのかけ方は難しいので、マクロを考えました。
色をつけたいセル(日付の方)を選択して、マクロ「色付け」を実行します。
10008行と10011行の3日にはオレンジ色が付きませんでした。広いセル領域の選択は、名前ボックスを使えば簡単です。
Sub 色付け()
Dim rng As Range '// セル
Dim rw As Long '// 行カウンタ
Dim topRw As Long '// A列の行
Dim col As Long '// 列カウンタ
Dim col1 As Long '// 1回目の列
Dim col2 As Long '// 2回目の列
Dim col3 As Long '// 3回目の列
With Selection
.Interior.ColorIndex = 0 '// 塗りつぶしを消す
topRw = .Cells(1, 1).Row '// A列の行
'// 選択した範囲を行単位で調べる
For rw = 1 To .Rows.Count
'// 返品を調べる
If Range("A" & (topRw + rw - 1)) = "返品" Then
'// 各日の入力を調べる
For col = 1 To .Columns.Count
If .Cells(rw, col) <> "" Then
If col1 = 0 Then '// 1回目
col1 = col
ElseIf col1 <> 0 And col2 = 0 Then '// 2回目
col2 = col
Else
col3 = 99 ''// 3回目以上の入力を避ける
End If
End If
Next
'// 色付け
If col1 <> 0 And col2 <> 0 Then
.Cells(rw, col1).Interior.ColorIndex = 40 '// オレンジ
.Cells(rw, col2).Interior.ColorIndex = 37 '// 青
End If
col1 = 0: col2 = 0
End If
Next
End With
End Sub
お礼
お礼が遅くなり申し訳ありません。。 結局今回教えて頂いたやり方ではうまくできませんでしたが 何度となく親切丁寧にお答えくださったので こちらをベストアンサーにさせていただきます。 この度はありがとうございました(^^♪
補足
先程実際に登録して実行してみましたが 色が消えただけでした。。 金曜日から木曜日まで列をまるごと選択してから実行したり 列まるごとではなく、表の部分だけ選択してみたりしましたが やはり結果は同じでした。。 選択の仕方がおかしったのでしょうか?