В этой статье мы создадим пользовательскую форму для сравнения двух диапазонов и определения несовпадающих ячеек.

Необработанные данные состоят из данных целевых моделей и желаемых моделей. Мы хотим найти те записи, в которых целевая и желаемая модели не совпадают.

ArrowRawData

Мы создали пользовательскую форму, которая принимает в качестве входных данных два диапазона. Эти два диапазона сравниваются, чтобы найти несовпадающие ячейки.

ArrowUserform

При нажатии кнопки отправки он сравнит два диапазона и вернет результат. Он отобразит окно сообщения, отображающее количество несовпадающих ячеек.

ArrowOutput1

Он также предоставит данные о несовпадающих ячейках в новой книге.

ArrowOutput2

Объяснение кода

Установите Rng1 = Range (UserForm3.RefEdit1)

Приведенный выше код используется для создания объекта диапазона, который получает значения диапазона из пользовательской формы.

Если Rng1 — ничего или Rng2 — ничего, то выйдите из подпрограммы. Приведенный выше код используется для проверки, содержат ли значения оба диапазона. Если какой-либо из диапазонов оставлен пустым, он пропускает остальную часть кода внутри процедуры.

С Rng1 LR1 = .Rows.Count LC1 = .Columns.Count End With Приведенный выше код используется для подсчета количества строк и столбцов в пределах диапазона.

CellValue1 = Rng1.Cells (r, c) .FormulaLocal Приведенный выше код используется для получения значения в ячейке строки r и столбца c.

Если 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]