Uzupełnianie pustych komórek w Excelu
W pracy z dużą ilością danych możemy spotkać się z sytuacją, w której nie wszystkie komórki w arkuszu kalkulacyjnym są uzupełnione. Aby wypełnić komórki danymi wziętymi z komórki powyżej możemy skorzystać z kodu VBA.
Zapraszamy do zapoznania się z artykułem, który pokaże jak za pomocą VBA uzupełnić brakujące dane w komórkach.
Rys. 1. Puste komórki w kolumnie A
Uzupełnianie pustych komórek Excel
Celem zadania jest uzupełnić pustą komórkę, pobierając wartość komórki nadrzędnej.
O ile obrany przez nas cel jest względnie prosty, o tyle przetłumaczenie go na język VBA może takie nie być.
Przed rozwiązaniem naszego zadania warto uświadomić sobie czynności (nawet te oczywiste), które będziemy musieli wykonać.
Na początku musimy pobrać pierwszą komórkę. Następnym krokiem będzie sprawdzenie, czy komórka jest pusta – jeśli okaże się , że nie to będziemy musieli przejść do kolejnej komórki. Natomiast jeśli komórka jest pusta to naszym zdaniem będzie pobranie wartości komórki, która jest nad nią.
Przed pobraniem komórki należy najpierw określić długość i szerokość zaznaczenia oraz współrzędne komórki, która jest na górze po lewej stronie. Aby zrealizować to zadanie, wystarczy odwołać się do właściwości obiektu Selection, deklarując następujące zmienne:
Dim ilosc_wierszy_zaznaczenie, _
ilosc_kolumn_zaznaczenie, _
wiersz_komorki, _
kolumna_komorki As Long
Następnie zmiennym tym musimy przypisać wartości:
ilosc_wierszy_zaznaczenie = Selection.Rows.Count
ilosc_kolumn_zaznaczenie = Selection.Columns.Count
wiersz_komorki = Selection.Row
kolumna_komorki = Selection.Column
Mając odpowiednie dane można przystąpić do uzupełnienia pustych komórek. Czynność przechodzenia przez wiersze oraz kolumny można zrealizować wykorzystując pętle, natomiast przy pomocy instrukcji warunkowej If będzie można sprawdzić które komórki są puste:
For i = wiersz_komorki To ilosc_wierszy_zaznaczenie +wiersz_komorki - 1
For j = kolumna_komorki To ilosc_kolumn_zaznaczenie + kolumna_komorki - 1
If Cells(i, j) = vbNullString Then
Cells(i, j) = Cells(i - 1, j)
End If
Next
Next
Zadanie z pozoru jest dobrze rozwiązane, jednak kod zwróci komunikat błędu wtedy, gdy zaznaczona pierwsza komórka będzie pusta i będzie znajdować się w pierwszym wierszu, dlatego należy uwzględnić to w kodzie:
For i = wiersz_komorki To ilosc_wierszy_zaznaczenie + wiersz_komorki - 1
For j = kolumna_komorki To ilosc_kolumn_zaznaczenie + kolumna_komorki - 1
If Cells(i, j) = vbNullString And i > 1 Then
Cells(i, j) = Cells(i - 1, j)
End If
Next
Next
Po napisaniu kodu należy pamiętać, aby go przetestować.
Jeżeli zainteresował Cię temat uzupełniania pustych komórek Excela z pomocą kodu VBA, to zapraszamy Cię na kurs VBA w Excelu Przekrojowy. Dowiesz się tam więcej o pisaniu kodu w VBA.
Uzupełnianie pustych wierszy - kod VBA
Sub uzupelnij_puste_komorki()
Dim ilosc_wierszy_zaznaczenie, ilosc_kolumn_zaznaczenie, wiersz_komorki, kolumna_komorki As Long
ilosc_wierszy_zaznaczenie = Selection.Rows.Count
ilosc_kolumn_zaznaczenie = Selection.Columns.Count
wiersz_komorki = Selection.Row
kolumna_komorki = Selection.Column
For i = wiersz_komorki To ilosc_wierszy_zaznaczenie + wiersz_komorki - 1
For j = kolumna_komorki To ilosc_kolumn_zaznaczenie + kolumna_komorki - 1
If Cells(i, j) = vbNullString And i > 1 Then
Cells(i, j) = Cells(i - 1, j)
End If
Next
Next
End Sub
Autorem artykułu jest Grzegorz Plak, trener Cognity.