< návrat zpět

MS Excel


Téma: Vymazat řádek a seřadit rss

Zaslal/a 24.5.2019 3:04

Ahojky.
Potřeboval bych poradit jak vymazat( ne odstranit) řádek ve sloupcích B-K dle hodnoty ve sloupci JK ( podmínka vypsání ANO )a seřazení jednotlivých řádků bez prázdných řádků pouze při znovu otevření sešitu. Řádky se nesmí zrušit (DELETE), ale pouze vymazat v rozsahu B-K.V sloupci JK se může "ANO" opakovat několikrát pod sebou. V ostatních sloupcích jsou vzorce. Používám Excel 2017. Snad je to dosti srozumitelné.

Děkuji za každou odpověď.
Pepča

Zaslat odpověď >

#043398
avatar
řešení makrem, kód je pro inspiraci

Sub Makro1()
'
Dim cyklusRadekOd As Long
Dim cyklusRadekDo As Long
Dim radekCislo As Long

cyklusRadekOd = 2
cyklusRadekDo = 20
For radekCislo = cyklusRadekOd To cyklusRadekDo
Range("F" & radekCislo).Select
If Selection.Value = "ANO" Then
Range("A" & radekCislo & ":E" & radekCislo).Select
Selection.ClearContents
End If
Next radekCislo
End Subcitovat
#043399
elninoslov
Sub VymazHodnoty()
Dim RNG As Range, JK(), R As Long

With ThisWorkbook.ActiveSheet
R = .Cells(Rows.Count, "JK").End(xlUp).Row
If R = 1 Then
ReDim JK(1 To 1, 1 To 1): JK = .Cells(1, "JK").Value
Else
JK = .Cells(1, "JK").Resize(R).Value
End If

For i = 1 To R
If StrComp(JK(i, 1), "ano", vbTextCompare) = 0 Then
If RNG Is Nothing Then
Set RNG = .Cells(i, 2).Resize(, 10)
Else
Set RNG = Union(RNG, .Cells(i, 2).Resize(, 10))
End If
End If
Next i
End With

If Not RNG Is Nothing Then RNG.ClearContents
End Sub


EDIT: Aha, pozerám, že som si nevšimol požiadavku na zoradenie. Takže, to má byť na základe čoho zoradené ?

Inak, prečo nepoužijete filter ???
Příloha: zip43399_vymazhodnoty.zip (18kB, staženo 20x)
citovat
#043414
elninoslov
Makrom sa to samozrejme dá, ale ak by to bolo možné použil by som radšej filter. Tu je príklad makra, maže a posúva samozrejme aj riadky v JK. Nič zatiaľ nezoraďuje, lebo neviem na základe čoho, iba ich súka pod seba.
Sub VymazHodnoty()
Dim JK(), BK(), V(), VJK(), R As Long, i As Long, VR As Long, y As Byte

With ThisWorkbook.ActiveSheet
R = .Cells(Rows.Count, "B").End(xlUp).Row
If R = 1 Then
ReDim JK(1 To 1, 1 To 1): JK = .Cells(1, "JK").Value
Else
JK = .Cells(1, "JK").Resize(R).Value
End If

BK = .Cells(1, "B").Resize(R, 10).Value
ReDim V(1 To R, 1 To 10)
ReDim VJK(1 To R, 1 To 1)

For i = 1 To R
If StrComp(JK(i, 1), "ano", vbTextCompare) <> 0 Then
VR = VR + 1
For y = 1 To 10
V(VR, y) = BK(i, y)
Next y
VJK(VR, 1) = JK(i, 1)
End If
Next i

.Cells(1, "B").Resize(R, 10).Value = V
.Cells(1, "JK").Resize(R).Value = VJK
End With

End Sub
Příloha: zip43414_vymazhodnoty.zip (16kB, staženo 21x)
citovat
#043416
avatar
Ahojky.

Omlouvám se, že jsem nepřiložil přílohu.

Pepčacitovat
#043417
avatar
Bohužel se mi nedaří vložit přílohu je po kompresy stále veliká to jsem již snížil počet řádků na minimum.

Děkuji za pochopení

Pepčacitovat
#043418
avatar
Snad již naposled.
Příloha: zip43418_kniha-predavky-wall2.zip (282kB, staženo 18x)
citovat
#043419
elninoslov
Čo chcete robiť s tým makrom "Odemknout" (pôvodný názov "Makro1") ?
To označovanie B12 po každej zmene je nevhodné pri vpisovaní viac nových riadkov - skáče Vám kurzor inde, ako chcete písať.
Mali ste tam obrovské množstvo riadkov a stĺpcov, preto to bol taký veľký súbor.
Premýšľam, či by nebolo vhodnejšie použiť samostatné objekty Tabuľka (ListObject). Celý ten spôsob je taký divný a náchylný k chybe.

Všetko som pozmenil, prezrite...
Příloha: zip43419_kniha-predavky-wall3.zip (81kB, staženo 25x)
citovat
#043432
avatar
Děkuji za vyřešení. V jednoduchosti je dokonalost. Smekám. Prozkoumám vše a snad si již poradím. Sešit musím zamykat a list též, protože jsou tam citlivá data v ostatních listech odkud se tahají jména a osobní data.
Vše musí probíhat automaticky jinak si moji kolegové najdou vždy výmluvy.

Ještě jednou veliké dík.

Jdu se učit a zkoumat.

Pepčacitovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje