人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ブック間の列を比較し、片方のブックのO列の該当セルより左のセル全てに色を付けたい。
今、2つのExcelのブックがあります。
仮に、
・列比較ブックA
・列比較ブックB
というファイル名だとします。
列比較ブックAのO列には、
----
りんご

ごりら

スパイダー

テクノクラート



アボガド



----
といった文字列が、空白セルを伴い、不規則にセルに6万行ほど記載されております。
そして列比較ブックBのG列には、
----
アボガド
りんご
スパイダー
テクマクマヤコン
後楽園



----
といった文字列が、たまに空白セルもありますが、ほぼぎっしり5000行ほど並んでおります。
この状況におきまして。
列比較ブックBのG列にある文字列が、もし列比較ブックAのO列にあれば。

列比較ブックAのO列の方の該当セルを黄色等で塗りつぶしていただき。
さらに、該当セルより左のセル(A?N列)も、色で塗りつぶしたいのです。

上に挙げた例ですと、列比較ブックAのO列にあるりんご、スパイダー、アボガドが塗りつぶされて、さらに左のセルもすべて塗りつぶされる感じです。
もしそのような処理をマクロで実行可能でしたら、お教えいただけないでしょうか。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●1500ポイント ベストアンサー

「列比較ブックA」の方はいくつもあるのだろうと思いますので、「列比較ブックB」のマクロとして書いてみました。

Const MAX_ROW_MASTER = 5000
Const MAX_ROW_DATA = 60000
Const TARGET_DIR = "D:\data\"  ' 対象のブックがあるディレクトリ
Const BG_COLOR_INDEX = 6  ' 黄色


Sub paint_data_sheet()

 datafile = "列比較ブックA.xlsx"

 Set master = CreateObject("Scripting.Dictionary")

  ' マスタの取り込み
 For r = 1 To MAX_ROW_MASTER
 Data = Cells(r, 7).Value
 If Data <> "" Then
 If Not master.exists(Data) Then
 master.Add Data, Data
 End If
 End If
 DoEvents
 Next


  ' データの色付け
 Set book = Workbooks.Open(TARGET_DIR & datafile)
 Set Sheet = book.Sheets(1)
 For r = 1 To MAX_ROW_DATA
 Set Row = Sheet.Rows(r)
 Set cell = Row.Cells(1, 15)
 If cell.Value <> "" Then
 If master.exists(cell.Value) Then
 Row.Range(Cells(1, 1), Cells(1, 15)).Interior.ColorIndex = BG_COLOR_INDEX
 End If
 End If
 DoEvents
 Next

 book.Save
 book.Close
 Set book = Nothing

 Set master = Nothing

End Sub

質問で書かれていなかったことで、以下のことを前提にしています。


moon-fonduさんのコメント
ありがとうございます、うまく色づけ出来ました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ