この記事では、2つの範囲を比較し、一致しないセルを見つけるためのユーザーフォームを作成します。

生データは、ターゲットモデルと目的のモデルのデータで構成されます。ターゲットモデルと目的のモデルが一致しないレコードを見つけたいと思います。

ArrowRawData

2つの範囲を入力として受け入れるユーザーフォームを作成しました。これらの2つの範囲を比較して、一致しないセルを見つけます。

ArrowUserform

送信ボタンをクリックすると、2つの範囲が比較され、出力が返されます。一致しないセルの数を示すメッセージボックスが表示されます。

ArrowOutput1

また、新しいワークブックの一致しないセルに関するデータも提供します。

ArrowOutput2

コードの説明

Rng1 = Range(UserForm3.RefEdit1)を設定します

上記のコードは、ユーザーフォームから範囲値を取得する範囲オブジェクトのオブジェクトを作成するために使用されます。

Rng1がNothingまたはRng2がNothingの場合ExitSub上記のコードは、両方の範囲に値が含まれているかどうかを確認するために使用されます。範囲のいずれかを空白のままにすると、プロシージャ内の残りのコードがスキップされます。

Rng1の場合LR1 = .Rows.Count LC1 = .Columns.Count End With上記のコードは、範囲内の行と列の数のカウントを取得するために使用されます。

CellValue1 = Rng1.Cells(r、c).FormulaLocal上記のコードは、r行とc列のセルの値を取得するために使用されます。

If CellValue1 <> CellValue2 Then上記のコードは、変数CellValue1とCellValue2の値を比較するために使用されます。

コードについては以下に従ってください

Option Explicit

Sub CallingUserform()

UserForm3.Show

End Sub

'Insert below code in userform

Option Explicit

Private Sub CommandButton1_Click()

'Declaring variables

Dim Rng1, Rng2 As Range

Dim r, DiffCount As Long, c As Integer

Dim LR1 As Long, LC1 As Integer

Dim CellValue1 As String, CellValue2 As String

Dim NewWB As Workbook

'Getting the two range set for comparing

Set Rng1 = Range(UserForm3.RefEdit1)

Set Rng2 = Range(UserForm3.RefEdit2)

'Unloading the userform

Unload Me

'Disabling screen updates

Application.ScreenUpdating = False

'Checking whether Rng1 and Rng2 contains value

If Rng1 Is Nothing Or Rng2 Is Nothing Then Exit Sub

'Getting count of number of rows and columns in Rng1

With Rng1

LR1 = .Rows.Count

LC1 = .Columns.Count

End With

DiffCount = 0

'Adding new workbook for output

Set NewWB = Workbooks.Add



'Looping through all the columns and rows in the range

For c = 1 To LC1

For r = 1 To LR1



'Getting value from particular cell from both the ranges

CellValue1 = Rng1.Cells(r, c).FormulaLocal

CellValue2 = Rng2.Cells(r, c).FormulaLocal



'Comparing value of cell from both ranges

If CellValue1 <> CellValue2 Then



'Getting count of numbers of cells with different values

DiffCount = DiffCount + 1



'Adding unequal values to new workbook

Cells(r, c).Value = "'" & CellValue1 & " <> " & CellValue2

End If



Next r

Next c

'Display count of unequal cells in both range

MsgBox DiffCount & " cells contain different formulas!", _

vbInformation, "Compare Worksheet Ranges"

'Enabling screen updates

Application.ScreenUpdating = True

Set NewWB = Nothing



End Sub

このブログが気に入ったら、FacebookやFacebookで友達と共有してください。

皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください