0

この質問は以前に尋ねられたように感じますが、解決策を本当に理解していません。一部のセルの値を確認し、一致するセルの色を別のセルにコピーする方法を知りたいです。次のようなワークシートがあります。

   A        B           C       D               E               F
 1 Type     Location    Cell    PairType        PairLocation    PairCell
 2 EX3      1           A1      EX2             1               F3
 3 EX4      1           B2      EX3             1               G3
 4 EX2      1           F3      EX3             1               A1

A、B、および C の値の一部は、それらを特別なものとしてマークするために異なる色になっています (フォントの色ではなく、背景色)。列 D から値を取得し、A で一致を見つけ、一致が見つかった場合は、A、B、C の背景色を D、E、F の背景にコピーする必要があります。D が見つかった場合から A への一致 (行 2、列 D から行 4、列 A のように) の場合、E/F 値も B/C 値と一致するため (上記のように)、値を上書きすることを心配する必要はありません。私はExcel-eseにあまり堪能ではないので、次のような解決策を読むと:

Function BGCol(MRow As Integer, MCol As Integer)  As Integer
   BGCol = Cells(MRow, MCol).Interior.ColorIndex  
End Function

自分が何に夢中になっているのかよくわかりません。誰でも解決策と説明を提供できますか?

4

2 に答える 2

1
Sub ReColour()

Dim rStart As Range, lRow1 As Long, lRow2 As Long, lRows As Long, sFind As String

Set rStart = Sheet1.Range("A1")
lRows = rStart.Offset(65000, 0).End(xlUp).Row - rStart.Row

For lRow1 = 1 To lRows
    sFind = rStart.Offset(lRow1, 3).Value
    For lRow2 = 1 To lRows
        If rStart.Offset(lRow2, 0).Value = sFind Then
            rStart.Offset(lRow1, 3).Interior.ColorIndex = rStart.Offset(lRow2, 0).Interior.ColorIndex
            rStart.Offset(lRow1, 4).Interior.ColorIndex = rStart.Offset(lRow2, 1).Interior.ColorIndex
            rStart.Offset(lRow1, 5).Interior.ColorIndex = rStart.Offset(lRow2, 2).Interior.ColorIndex
            Exit For
        End If
    Next
Next
End Sub

申し訳ありませんが、今は説明する時間がありませんが、これで十分だと思います。実際には、マジック カラム番号 3、4、5 などよりも優れたものを使用する必要がありますが、これは簡単な解決策です。

于 2012-09-20T16:13:51.060 に答える
0

これはうまくいくはずです。より効率的にすることもできますが、間違いなく始めることができます。

これを標準モジュールに配置し、コードを実行します (F5 または F8 でステップ実行します)。さらにガイダンスが必要な場合はお知らせください。

Sub CheckColors()

Dim rng As Range

For Each cel In Range("D2:D" & Range("D" & Rows.Count).End(xlUp).Row)

    Set rng = Columns(1).Find(cel, lookat:=xlWhole)

    If Not rng Is Nothing Then

        cel.Interior.ColorIndex = rng.Interior.ColorIndex
        cel.Offset(, 1).InteriorColorIndex = rng.Offset(, 1).Interior.ColorIndex
        cel.Offset(, 2).InteriorColorIndex = rng.Offset(, 2).Interior.ColorIndex

    End If

Next

End Sub
于 2012-09-20T16:17:12.840 に答える