1

18jan.xlsx に次のデータを含めます。

ABC 10
XYZ 20
PQR 30
STU 40
DEF 50
HIJ 60
KLM 70

19jan.xlsx には以下が含まれます。

XYZ 20
ABC 15
STU 40
DEF 50
HIJ 65
PQR 30
KLM 70

それらを比較して変更を強調表示する必要があります。たとえば、ここでは ABC の前の 15 を強調表示する必要があります。また、日付を変更して毎日これを行う必要があります。

4

1 に答える 1

0

データが行 1 から始まる列に配置されていると仮定するとA:B、次のコードがその役割を果たします。

Sub DailyDataHighlight()

Dim InputFolder As String
Dim OldExcel As String
Dim NewExcel As String

Dim i As Long
Dim OldString As String
Dim OldValue As String
Dim NewValue As String
Dim SearchResult As Range

InputFolder = "D:\DOCUMENTS\"
OldExcel = "18jan.xlsx"
NewExcel = "19jan.xlsx"

Application.ScreenUpdating = False

Application.Workbooks.Open (InputFolder & OldExcel)
Application.Workbooks.Open (InputFolder & NewExcel)

For i = 1 To Workbooks(OldExcel).ActiveSheet.Range("A1").CurrentRegion.Rows.Count

    OldString = Workbooks(OldExcel).ActiveSheet.Cells(i, 1).Text
    OldValue = Workbooks(OldExcel).ActiveSheet.Cells(i, 2).Text
    Set SearchResult = Workbooks(NewExcel).ActiveSheet.Range("A1").CurrentRegion
    Set SearchResult = SearchResult.Find(OldString, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
    If Not SearchResult Is Nothing Then
        NewValue = SearchResult.Offset(0, 1).Text
        If NewValue <> OldValue Then SearchResult.Offset(0, 1).Interior.Color = RGB(0, 255, 0)
    End If

Next i

Workbooks(NewExcel).Save
Application.ScreenUpdating = True

End Sub

前提と詳細:

  1. データ範囲は事実上無制限です。
  2. 両方のファイルが同じフォルダーに配置されます。名前とパスはコードで定義する必要があります。
  3. 「ハイライト」はセルの塗りつぶしを使用して行われ、必要に応じて変更.Interior.Color = RGB(0, 255, 0)します。
  4. (入力に基づいて) キー文字列の最初の唯一の出現のみが変更されているかどうかがチェックされます。

サンプル ファイルも共有されています: https://www.dropbox.com/s/vqkulovmg98yaih/DailyDataHighlight.xlsm

VBAの学習に役立つことを願っています)

于 2013-01-29T10:14:46.427 に答える