< návrat zpět

MS Excel


Téma: Makro - smazat radky rss

Zaslal/a 8.8.2011 20:10

Ahoj,

mám soubor v excelu, kde v sloupci A jsou jména zaměstnanců celé firmy (cca 100 jmen), v sloupci B hodnoty pro výkon práce v jedné aplikaci a v sloupci C hodnoty pro výkon práce v jiné aplikaci.

Potřeboval bych makro, do kterého bych nastavil napr. 5 jmen, a zbylé řádky s jinými jménami by mě to smazalo a zůstali by jenom ty, které jsem si nastavil.

zkousel jsem to pres:

If range("A1").Text = "prijmeni, jmeno" Or ... then
row("1").delete

narazil jsem tam na problem a nefunguje to...

Má nekdo prosím nějakej nápad? 2

Zaslat odpověď >

#005739
avatar
Co toto:

Sub zrušeníRadku()
Application.ScreenUpdating = False
BRad = ActiveCell.Row
PRad = Selection.Rows.Count
ERad = PRad + BRad
Range(Cells(ERad, 1), Cells(64000, 1)).EntireRow.Delete
Range(Cells(1, 1), Cells(BRad - 1, 1)).EntireRow.Delete
Range("A1").Select
Application.ScreenUpdating = True
End Sub
citovat
#005763
avatar
Díky moc pěkně ale nemyslel jsem tohle.

V buňkách A2:A150 mám jména zaměstnanců a mám vytvořené makro, které vyhledá, zda v buňkách A2:A150 je jméno, které je nežádoucí a když daná buňka obsahuje to jméno, makro smaže celý řádek. Toto makro funguje uplne super.

Potřebuji makro, které udělá uplný opak, tzn. ve VBA kódu si vytvořím nejakej "seznamjmen" které bude makro vyhledávat, a pokud v buňkách A2:A150 najde jiné jméno, než mám v seznamu, smaže celý nežádoucí řádek.

Doufám že jsem to popsal víc pochopitelně 2citovat
#005765
Začátečník
Asi bych to řešil dvěma vnořenými cykly.
V prvním (nadřazeném) cyklu bych postupně načítal jména a porovnal je s těmi vybranými. Pokud by se neshodovalo, vymazal bych řádek. Takto až na konec seznamu.

Tímto způsobem se porovnají všechna jména s vybranými a výsledkem by měly být jen ty vybrané.citovat
#005766
avatar
Takže nějakej konkrétnej kód?? 2citovat
#005768
Začátečník
Konkrétní kód záleží na konkrétním příkladu.
Např For-Next smyčky, nebo while, ....citovat
#005769
avatar
Takže přikládám konkrétní příklad.

Potřebuji makro, které funguje jak jsem napsal.

Pokud text v buňkách A2:A10 neobsahuje slovo "Novák, Petr" nebo "Nováčková, Petra" nebo "Chládková, Martina" tak makro smaže celý řádek.

Díky :-)
Příloha: zip5769_pokus.zip (4kB, staženo 26x)
citovat
#005770
Začátečník
třeba
Sub vymaz_radky()
seznam = "List2"
zdroj = "List1"

row_seznam = Sheets(seznam).UsedRange.Rows.Count
row_zdroj = Sheets(zdroj).UsedRange.Rows.Count
i = 2

While i <= row_zdroj
jmeno = Sheets(zdroj).Cells(i, 1)
porovnani = 0
For j = 1 To row_seznam
If jmeno = Sheets(seznam).Cells(j, 1) Then
porovnani = porovnani + 1
End If
Next
If porovnani = 0 And jmeno <> "" Then
Sheets(zdroj).Rows(i).Delete
Else
i = i + 1
End If
Wend
End Sub


List1 (zdroj) obsahuje data všech osob
List2 (seznam) obsahuje seznam jmen pouze vybraných

Je to čitelný kód, tak snad se v tom vyznášcitovat
#005776
avatar
JJ, funguje to uplně super :-) :-) udělal jsem si makro, které mě do listu2 vloží jména, které chci aby zůstali v listu1 takže to funguje uplne super :-) díkycitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse