1265859812 エクセルのVBAでお願いします。エクセルのバージョンは2002です。

添付画像の通り、アクティブシートに教科名が入っているセルがあります。この任意セルの背景色を、2番目の画像の条件(設定シート)により変えて、一番右側のようなセル背景色にしたいと思っています。ただし、条件となる教科名は設定シートの通り、クラスにより変化しています。条件付き書式にならなくてもかまいません。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2010/02/11 12:43:33
  • 終了:2010/02/11 22:14:27

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/02/11 13:45:50

ポイント50pt

これは条件付書式だけでできます。

設定シートの表を選択し「設定」などと名前をつけます。

次に条件付書式を設定するセルを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
id:anglar

いつもスゴイ解答で、びっくりさせられます。完璧です。条件付き書式の方も勉強になりました。ありがとうございました。P.Sプロフィールを初めて見せてもらいました。回答の速さの理由がすばらしいです。ポイントの入れ方を今後、気をつけます。m(_ _)m

2010/02/11 22:07:12

その他の回答(4件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/02/11 13:45:50ここでベストアンサー

ポイント50pt

これは条件付書式だけでできます。

設定シートの表を選択し「設定」などと名前をつけます。

次に条件付書式を設定するセルを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
id:anglar

いつもスゴイ解答で、びっくりさせられます。完璧です。条件付き書式の方も勉強になりました。ありがとうございました。P.Sプロフィールを初めて見せてもらいました。回答の速さの理由がすばらしいです。ポイントの入れ方を今後、気をつけます。m(_ _)m

2010/02/11 22:07:12
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012010/02/11 13:57:22

ポイント33pt

アクティブシートのD5からI22までを選択しておいて、

条件付書式にて、

数式が =MATCH(D5,INDIRECT(CONCATENATE("設定!C",ROW()-2,":D",ROW()-2)),FALSE)

として、あとは「書式」で色を選択します。

id:anglar

この数式による条件付き書式もスゴイです。ありがとうございました。

2010/02/11 22:08:24
id:jccrh1 No.3

jccrh1回答回数111ベストアンサー獲得回数192010/02/11 14:15:18

ポイント33pt

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ボタンを押す

  

id:anglar

この数式もまたまたスゴイですね。勉強させていただきます。

2010/02/11 22:08:54
id:yuuya-553 No.4

yuuya-553回答回数11ベストアンサー獲得回数02010/02/11 14:30:37

ポイントほしー

id:anglar

他の方と違って、こういう人もいるんですね。

2010/02/11 22:09:20
id:yuuya-553 No.5

yuuya-553回答回数11ベストアンサー獲得回数02010/02/11 14:32:00

うごめもで通報するとグリひとつもらえるーー

id:anglar

できれば、回答しないでね。

2010/02/11 22:09:40
  • id:SALINGER
    yuuya-553さん、プロフィールみると10さいってかいてますよね。
    こういうところでのむせきにんなかきこみはやめてね。
  • id:kn1967
    私 kn1967 の回答は大きく間違ってます。申し訳ないです。
    ゼロポイントにしておいてください。> id:anglar さん
  • id:anglar
    >id:kn1967さん、誠意を持って回答してくれていることに感謝です。悲しい方の回答にがっかりしている私をなぐさめてくれるかのようなコメントに再度、感謝。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません