Kłopotliwe tworzenie pętli

OL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Cześć! Chciałbym utworzyć proste makro, niestety mam z tym problem i żadne poradniki dot. tworzenia pętli nie potrafią mi pomóc (albo jestem ułomny...)

W trzech kolumnach mam odpowiednio: imiona, drugie imiona "F", nazwiska "E". Chciałbym drugie imiona (jeżeli występują) zastąpić nazwiskiem. I świetnie działa do tego komenda:

If Range("F1") <> "" Then Range("E1").Value = Range("F1").Value

Problem jest taki, że kompletnie nie wiem, jak powtórzyć ją na kilkuset wierszach, tym bardziej, że drugie imię występuję tylko kilka razy spośród tych kilkuset wierszy (ale nie jestem w stanie przewidzieć ile razy i w jakim wierszu wystąpi)

Ales
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
1

Zrób pętlę na wszystkie wiersze i do niej wstaw swój if. Żeby odnosić się do komórki w aktualnych wierszu zamień Range("F1") na Range("F" & wiersz).

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
1

Możesz zmienić tez zdynamizować lastRow tak żeby za każdym razem obliczył ostatni wiersz.

Kopiuj
For i=1 to lastRow
If Range("F"&i) <> "" Then Range("E"&i).Value = Range("F"&i).Value
Next i
OL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

@Ales: Problem w tym, że jestem kompletnie zielony w robieniu pętli i jak korzystam z jakiegokolwiek poradnika, to zrobiona pętla nie działa mi z tą komendą... Jesteś w stanie podać jakiś przykład?

Ales
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
0

@malkrzysztof podał gotowe rozwiązanie, wystarczy przypisać do lastRow numer ostatniego wiersza

Ales
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
0

@malkrzysztof podał gotowe rozwiązanie, wystarczy przypisać do lastRow numer ostatniego wiersza

OL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

@Ales: Okej, a co w przypadku, gdy nie mam pojęcia który wiersz będzie ostatni? Chciałbym, żeby plik przerabiał się automatycznie, a niektóre z nich mogą mieć 50, a inne 300 wierszy

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

lastRow = Range("e1").End(xlDown).Row

OL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Dziękuję wszystkim, wreszcie działa :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.