Eliminazione di colonne duplicate (Microsoft Excel)
Dror ha un foglio di lavoro che contiene un bel po ‘di dati. È possibile che i dati in una colonna siano esattamente gli stessi dei dati in un’altra colonna, quindi si chiede se esiste un modo semplice per eliminare eventuali colonne duplicate all’interno del foglio di lavoro.
Il primo passo, ovviamente, è capire se due colonne sono identiche o meno. Questo può essere determinato abbastanza facilmente con una formula di matrice come la seguente:
=AND(A1:A100=B1:B100)
(Ricorda che una formula di matrice viene inserita utilizzando Maiusc + Ctrl + Invio.)
La formula confronta tutti i valori nelle prime 100 righe delle colonne A e B. Se sono tutti uguali, la formula restituisce VERO. Se una delle celle non corrisponde, la formula restituisce FALSO. Se il risultato è VERO, puoi eliminare una delle colonne perché sono uguali.
Se vuoi qualcosa che sia un po ‘più automatico, il che significa che la colonna duplicata viene eliminata, dovrai usare una macro. I passaggi seguenti attraverso tutte le colonne del foglio di lavoro e, a partire dalla colonna più a destra, confrontano tutte le colonne. Se sono uguali, indipendentemente dal loro ordine nel foglio di lavoro, la macro chiede se si desidera eliminare la colonna duplicata.
Sub DeleteDuplicateColumns() Dim rngData As Range Dim arr1, arr2 Dim i As Integer, j As Integer, n As Integer On Error Resume Next Set rngData = ActiveSheet.UsedRange If rngData Is Nothing Then Exit Sub n = rngData.Columns.Count For i = n To 2 Step -1 For j = i - 1 To 1 Step -1 If WorksheetFunction.CountA(rngData.Columns(i)) <> 0 And _ WorksheetFunction.CountA(rngData.Columns(j)) <> 0 Then arr1 = rngData.Columns(i) arr2 = rngData.Columns(j) If AreEqualArr(arr1, arr2) Then With rngData.Columns(j) 'mark column to be deleted .Copy If MsgBox("Delete marked column?", vbYesNo) _ = vbYes Then rngData.Columns(j).Delete Else 'remove mark Application.CutCopyMode = False End If End With End If End If Next j Next i End Sub
Function AreEqualArr(arr1, arr2) As Boolean Dim i As Long, n As Long AreEqualArr = False For n = LBound(arr1) To UBound(arr1) If arr1(n, 1) <> arr2(n, 1) Then Exit Function End If Next n AreEqualArr = True End Function
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (5674) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: