Discussion:
Excel VBA - usuwanie wierszy
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
r***@rpg.za.net
2006-04-30 04:30:30 UTC
Permalink
Jak w temacie, jak moge usunac wiersze (ilosc nieznana) ktorych
wartosci sa mniejsze od 16,3?
(czyli usuwamy 10, 15,5, 16,2 itd)
strach
2006-04-30 08:48:07 UTC
Permalink
Post by r***@rpg.za.net
Jak w temacie, jak moge usunac wiersze (ilosc nieznana) ktorych
wartosci sa mniejsze od 16,3?
(czyli usuwamy 10, 15,5, 16,2 itd)
Np. ponizszym makrem (ustaw numer kolumny w której masz liczby jako wartosc
stalej col_base, a limit wierszy (z sensownym zapasem) w jakich mozesz miec
dane jako wartosc stalej row_limit (jesli liczba danych moze przyrosnac do
maksimum, podaj 65536 - makro bedzie dzialalo troche dluzej).

Sub usun_wiersze()
col_base = 1
row_limit = 1000
a = 16.3
f = 0

For x = 1 To row_limit
r = x - f
If Cells(r, col_base) <> "" And Cells(r, col_base).Value < a Then
f = f + 1
ActiveSheet.Rows(r).Delete
End If
Next
End Sub
--
pozdrawiam
strach
Tajan
2006-04-30 08:52:53 UTC
Permalink
Witam!
Post by r***@rpg.za.net
Jak w temacie, jak moge usunac wiersze (ilosc nieznana) ktorych
wartosci sa mniejsze od 16,3?
(czyli usuwamy 10, 15,5, 16,2 itd)
Najprostsze rozwiazanie polega na uzyciu petli sprawdzajacej kolejno
wartosci w poszczególnych wierszach. Przykladowo:

wiersz_pocz = 2
wiersz_kon = 100
sprawdz_kolumna = "A"

For i = wiersz_kon To wiersz_pocz Step -1
If Cells(i, sprawdz_kolumna) < 16.3 Then Rows(i).Delete
Next

Powyzsze makro, w wierszach 2:100, sprawdza kolejno wartosc komórki w
kolumnie A i w razie, gdy jest ona mniejsza od 16,3 - usuwa wiersz. Zauwaz,
ze przy usuwaniu wierszy konieczne jest, aby petla rozpoczynala sprawdzanie
od ostatniego wiersza badanego obszaru.

Tajan
zygmunt64
2006-05-03 14:41:10 UTC
Permalink
Post by Tajan
Witam!
Post by r***@rpg.za.net
Jak w temacie, jak moge usunac wiersze (ilosc nieznana) ktorych
wartosci sa mniejsze od 16,3?
wiersz_pocz = 2
wiersz_kon = 100
sprawdz_kolumna = "A"
For i = wiersz_kon To wiersz_pocz Step -1
If Cells(i, sprawdz_kolumna) < 16.3 Then Rows(i).Delete
Next
Witam
Bazując na powyższym makro chcę usunać wiersze zerowe, więc drugą linię
zmienię na:
If Cells(i, sprawdz_kolumna)=0 Then Rows(i).Delete
Ale są dwa problemy:
- zera mam ukryte wyborem w opcjach, czy mozna je wydobyć a potem schować
makrem ?
- jeżeli w sprawdzanej komórce jest 0 to potrzebuję usunąć ten wiersz i 2
nastepne poniżej, jak zmodyfikować makro (oczywiście step bedzie -3) ?
Licze na pomoc jak zwykle.
Z góry dzięki.
Pozdrowienia
Zygmunt
Tajan
2006-05-03 19:50:29 UTC
Permalink
Witam!
Witam
Bazuj¹c na powy¿szym makro chcê usunaæ wiersze zerowe, wiêc drug¹
If Cells(i, sprawdz_kolumna)=0 Then Rows(i).Delete
- zera mam ukryte wyborem w opcjach, czy mozna je wydobyæ a potem
schowaæ makrem ?
Ukrycie zer nie powinno mieæ wp³ywu na dzia³anie makra, wiêc nie ma potrzeby
podejmowania jakichkolwiek dzia³añ. Makro bada wartoœæ komórki, która w
takim przypadku nadal pozostaje zerowa.
- je¿eli w sprawdzanej komórce jest 0 to potrzebujê usun¹æ ten wiersz
i 2 nastepne poni¿ej, jak zmodyfikowaæ makro (oczywiœcie step bedzie
If Cells(i, sprawdz_kolumna)=0 Then Rows(i).Resize(3).Delete

Tajan
zygmunt64
2006-05-03 21:21:07 UTC
Permalink
Ukrycie zer nie powinno mieć wpływu na działanie makra, więc nie ma
potrzeby podejmowania jakichkolwiek działań. Makro bada wartoœć komórki,
która w takim przypadku nadal pozostaje zerowa.
- jeżeli w sprawdzanej komórce jest 0 to potrzebuję usunšć ten wiersz
i 2 nastepne poniżej, jak zmodyfikować makro (oczywiœcie step bedzie
If Cells(i, sprawdz_kolumna)=0 Then Rows(i).Resize(3).Delete
Tajan
Dziękuję.
Sprawdzę.
Kłaniam się.
Zygmunt

Loading...