添付画像の通り、アクティブシートに教科名が入っているセルがあります。この任意セルの背景色を、2番目の画像の条件(設定シート)により変えて、一番右側のようなセル背景色にしたいと思っています。ただし、条件となる教科名は設定シートの通り、クラスにより変化しています。条件付き書式にならなくてもかまいません。よろしくお願いします。
これは条件付書式だけでできます。
設定シートの表を選択し「設定」などと名前をつけます。
次に条件付書式を設定するセルをF5から右下に選択し
条件付書式から
数式が =OR(F5=VLOOKUP($A5,設定,2,FALSE),F5=VLOOKUP($A5,設定,3,FALSE))
にして塗りつぶしパターンをピンクにすればいいです。
で、質問はExcelVBAでということなので上記の処理をするマクロはこちら。
Sub Macro() Dim lastRow As Long Dim lastColumn As Long lastRow = ActiveSheet.Cells(Rows.Count, "F").End(xlUp).Row lastColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column Worksheets("設定シート").Range("B2").CurrentRegion.Name = "設定" ActiveSheet.Range("F5").Select With Selection.Resize(lastRow - 4, lastColumn - 5) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=OR(F5=VLOOKUP($A5,設定,2,FALSE),F5=VLOOKUP($A5,設定,3,FALSE))" .FormatConditions(1).Interior.ColorIndex = 7 End With End Sub
これは条件付書式だけでできます。
設定シートの表を選択し「設定」などと名前をつけます。
次に条件付書式を設定するセルをF5から右下に選択し
条件付書式から
数式が =OR(F5=VLOOKUP($A5,設定,2,FALSE),F5=VLOOKUP($A5,設定,3,FALSE))
にして塗りつぶしパターンをピンクにすればいいです。
で、質問はExcelVBAでということなので上記の処理をするマクロはこちら。
Sub Macro() Dim lastRow As Long Dim lastColumn As Long lastRow = ActiveSheet.Cells(Rows.Count, "F").End(xlUp).Row lastColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column Worksheets("設定シート").Range("B2").CurrentRegion.Name = "設定" ActiveSheet.Range("F5").Select With Selection.Resize(lastRow - 4, lastColumn - 5) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=OR(F5=VLOOKUP($A5,設定,2,FALSE),F5=VLOOKUP($A5,設定,3,FALSE))" .FormatConditions(1).Interior.ColorIndex = 7 End With End Sub
いつもスゴイ解答で、びっくりさせられます。完璧です。条件付き書式の方も勉強になりました。ありがとうございました。P.Sプロフィールを初めて見せてもらいました。回答の速さの理由がすばらしいです。ポイントの入れ方を今後、気をつけます。m(_ _)m
アクティブシートのD5からI22までを選択しておいて、
条件付書式にて、
数式が =MATCH(D5,INDIRECT(CONCATENATE("設定!C",ROW()-2,":D",ROW()-2)),FALSE)
として、あとは「書式」で色を選択します。
この数式による条件付き書式もスゴイです。ありがとうございました。
VBAではなく条件書式で対応した方がシンプルだと思います。
手順は以下の通りです。
1.条件の範囲に範囲名を指定します。 範囲 範囲名 B3:B20 クラス C3:C20 条件1 D3:D20 条件2 2.B5に条件書式を設定します。 ・「書式」メニュー→「条件書式」 ・「数式が」「=SUMPRODUCT((クラス=$A5)*(条件1=B5))」 書式を背景(ピンク等)に設定 ・追加 ・「数式が」「=SUMPRODUCT((クラス=$A5)*(条件2=B5))」 書式を背景(ピンク等)に設定 ・OKボタンを押す 3.B5をB5:Kn(nは時間割の最終行)に書式を複写する ・B5をコピー ・B5:Knを範囲指定 ・「編集」メニュー→「形式を選択して貼り付け」 「書式を選択」してOKボタンを押す
この数式もまたまたスゴイですね。勉強させていただきます。
いつもスゴイ解答で、びっくりさせられます。完璧です。条件付き書式の方も勉強になりました。ありがとうございました。P.Sプロフィールを初めて見せてもらいました。回答の速さの理由がすばらしいです。ポイントの入れ方を今後、気をつけます。m(_ _)m