Riempire qualsiasi cella vuota con il valore sopra

Voglio riempire tutte le celle vuote usando i valori delle celle sopra

state name IL Mike Sam CA Kate Bill Leah 

Dovrebbe essere come segue

  state name IL Mike IL Sam CA Kate CA Bill CA Leah 

Ho provato il seguente

 Sub split() Dim columnValues As Range, i As Long Set columnValues = Selection.Area Set i = 1 For i = 1 To columnValues.Rows.Count If (columnValues(i) = "") Then columnValues(i) = columnValues(i - 1) End If Next End Sub 

Ottengo un errore quando imposto i . Come posso modificare il mio codice

È perché dovrei essere definito come i=1 . Ci sono anche alcuni altri problemi con il codice. Lo cambierei in qualcosa del genere:

 Sub split() Dim columnValues As Range, i As Long Set columnValues = Selection For i = 1 To columnValues.Rows.Count If columnValues.Cells(i, 1).Value = "" Then columnValues.Cells(i, 1).Value = columnValues.Cells(i - 1, 1).Value End If Next End Sub 

Per coloro che non richiedono VBA per questo, selezionare ColonnaA, Vai a speciale …, Vuoti e:

Uguale ( = ), Su ( ), Ctrl + Invio

dovrebbe dare lo stesso risultato

Dato che hai richiesto VBA, c’è un modo più rapido del looping (l’equivalente VBA di ciò che le pnù hanno posto sopra, con il passo aggiuntivo di rimuovere la formula alla fine):

 On Error Resume Next With Selection.SpecialCells(xlCellTypeBlanks) .FormulaR1C1 = "=R[-1]C" .Value = .Value End With