In questo articolo, creeremo un modulo utente per confrontare due intervalli e scoprire celle non corrispondenti.

I dati grezzi sono i dati dei modelli target e dei modelli desiderati. Vogliamo trovare quei record in cui i modelli target e desiderati non corrispondono.

ArrowRawData

Abbiamo creato un modulo utente che accetta due intervalli come input. Questi due intervalli vengono confrontati per trovare celle non corrispondenti.

ArrowUserform

Facendo clic sul pulsante di invio, confronterà due intervalli e restituirà l’output. Verrà visualizzata una finestra di messaggio, che mostra il conteggio delle celle non corrispondenti.

ArrowOutput1

Fornirà anche dati sulle celle non corrispondenti in una nuova cartella di lavoro.

ArrowOutput2

Spiegazione del codice

Set Rng1 = Range (UserForm3.RefEdit1)

Il codice precedente viene utilizzato per creare un oggetto di un oggetto intervallo, che ottiene i valori dell’intervallo dal modulo utente.

Se Rng1 non è niente o Rng2 non è niente, esci da Sub Il codice sopra viene utilizzato per verificare se entrambi gli intervalli contengono valori. Se uno qualsiasi degli intervalli viene lasciato vuoto, salta il resto del codice all’interno della procedura.

Con Rng1 LR1 = .Rows.Count LC1 = .Columns.Count End With Il codice precedente viene utilizzato per ottenere il conteggio del numero di righe e colonne all’interno dell’intervallo.

CellValue1 = Rng1.Cells (r, c) .FormulaLocal Il codice sopra viene utilizzato per ottenere il valore nella cella della riga r e della colonna c.

If CellValue1 <> CellValue2 Then Il codice precedente viene utilizzato per confrontare i valori nelle variabili CellValue1 e CellValue2.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]