Kezdőoldal » Számítástechnika » Programozás » Mi a hiba az alábbi makróban?...

Nowitzki kérdése:

Mi a hiba az alábbi makróban? A G oszlopban vannak értékek és azt szeretném, hogy keresse meg a -70-nél kisebb, a -10 és 10 közötti és a 70-nél nagyobb értékű cellákat, majd törölje az egész sort. És ezt tegye meg az összes Sheet-en.

Figyelt kérdés

Sub DeleteRows()

Dim i As Long, LR As Long

LR = Cells(Rows.Count, "G").End(xlUp).Row

Sheets("Sheet 1").Select

For i = LR To 3 Step -1

If Cells(i, "G").Value < -70 Or Cells(i, "G").Value > 70 Then

Rows(i).EntireRow.Delete

End If

If Cells(i, "G").Value > -10 And Cells(i, "G").Value < 10 Then

Rows(i).EntireRow.Delete

End If

Next i

Range("A1").Select

Sheets("Sheet 2").Select

For i = LR To 3 Step -1

If Cells(i, "G").Value < -70 Or Cells(i, "G").Value > 70 Then

Rows(i).EntireRow.Delete

End If

If Cells(i, "G").Value > -10 And Cells(i, "G").Value < 10 Then

Rows(i).EntireRow.Delete

End If

Next i

Range("A1").Select

Sheets("Sheet 3").Select

For i = LR To 3 Step -1

If Cells(i, "G").Value < -70 Or Cells(i, "G").Value > 70 Then

Rows(i).EntireRow.Delete

End If

If Cells(i, "G").Value > -10 And Cells(i, "G").Value < 10 Then

Rows(i).EntireRow.Delete

End If

Next i

End Sub


2014. máj. 19. 10:37
 1/1 coopper ***** válasza:

Szia.


Nem próbáltam, de néhány észrevételt tennék :


1. Minden lapon (sheet) ugyanannyi a sorok száma ? Mivel Te mindenhol ugyanannyival számolsz. (LR változó)


2. Van a VBA-ban Sheet.count (vagy valami hasonló) érték is amivel meghatározhatod, hány darab lap van a munkafüzetben. Igy két ciklusban a kód szerintem rövidebbb és érthetőbb lenne. (Az egyik az biztosan for ciklus lesz, szerintem a külső, a másik az nem biztos)


3. A két if-et én egybevonnám, meglehet simán adni <70 vagy >70 vagy -10 és +10 között van, akkor töröljön.


3.1 Ha jól tévedek a törlés után csökken a sorok száma (A for ciklus nem hatékony erre a módszerre), Te pedig egyel növelsz egy 'i' változót és az alapján vizsgálod a következő sort, ami nekem azt jelenti, hogy egy sor vizsgálata kimaradt.


PL. i érétke legyen 2. és tegyük fel hogy a G2-es cellában a feltételnek megfelelő érték van (<-70, >70 vagy -10 és 10 között).

Mi történik ilyenkor ? A makród törli a kettes sort, de az excel automatikusan a 3-as sort beteszi a 2-sor helyére, a következő lépésben a ciklusváltozó értéke (i) növekszik egyel igy 3-ra nő. és megvizsgálja a harmadik sort, de ez már elvileg az eredeti negyedik sor lesz, mert a harmadik sor az most a kettes sorban van. (remélem érthető a dolog). Igy marad ki minden törlés után egy egy sor amit nem elenőrzöl le és amit lehet, hogy törölni kéne.


Hát úgy nagyjából ennyi.


Sok sikert.

Üdv.

2014. máj. 19. 14:53
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!