En este artículo, crearemos un formulario de usuario para comparar dos rangos y descubrir celdas que no coinciden.

Los datos brutos consisten en datos de modelos de destino y modelos deseados. Queremos encontrar aquellos registros en los que los modelos objetivo y deseado no coincidan.

ArrowRawData

Hemos creado un formulario de usuario que acepta dos rangos como entrada. Estos dos rangos se comparan para encontrar celdas que no coincidan.

ArrowUserform

Al hacer clic en el botón enviar, comparará dos rangos y devolverá la salida. Mostrará un cuadro de mensaje, mostrando el recuento de celdas que no coinciden.

ArrowOutput1

También proporcionará datos sobre celdas que no coinciden en un nuevo libro de trabajo.

ArrowOutput2

Explicación del código

Establecer Rng1 = Rango (UserForm3.RefEdit1)

El código anterior se usa para crear un objeto de objeto de rango, que obtiene valores de rango del formulario de usuario.

Si Rng1 no es nada o Rng2 no es nada, salga de Sub El código anterior se usa para verificar si ambos rangos contienen valores. Si alguno de los rangos se deja en blanco, se salta el resto del código dentro del procedimiento.

Con Rng1 LR1 = .Rows.Count LC1 = .Columns.Count End With El código anterior se utiliza para obtener el número de filas y columnas dentro del rango.

CellValue1 = Rng1.Cells (r, c) .FormulaLocal El código anterior se usa para obtener el valor en la celda de la fila r y la columna c.

Si CellValue1 <> CellValue2 Then El código anterior se utiliza para comparar valores en las variables CellValue1 y CellValue2.

Siga el código a continuación

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

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]