Ahoj, potřeboval bych poradit se zápisem vzorce ve VBA. Potřebuji smazat každý řádek v listu který má ve sloupci A hodnotu 7. Raděj ani nebudu psát jak jsem to vymyslel já, stejně to nefunguje a akorát byste se asi pobavili
Nasel jsem v archivu proceduru odstranujici radky, a to bud obsahujici v nektere bunce urcitou hodnotu nebo kazdy n-ty radek (podle aktivace casti kodu mezi radky *******), uprav si:
' odstrani kazdy n-ty radek nebo radek jehoz hodnota = Hodnota Sub OdstranRadek() Dim MyArea As Range, MyCell As Range Dim PoslRadek As Long, NasRadku As Byte Dim Odstran As Range, Ofs As Long, Hodnota As Variant Set MyArea = Worksheets("odstranradky").UsedRange If IsEmpty(MyArea) Then End PoslRadek = MyArea.Rows.Count ' Worksheets("odstranradky").UsedRange.Rows.Count
Application.ScreenUpdating = False ' bud odstrani kazdy n-ty radek: ' NasRadku=(1;2;3;4;...,255) - odstrani kazdy(lichy,sudy, 3-ti, 4-ty,...,255-ty) radek '********************* ' NasRadku = 2 ' nastavit ' If NasRadku = 1 Then ' Set Odstran = Worksheets("odstranradky").Range("2:2").Rows ' Ofs = -1: NasRadku = 2 ' Else ' Set Odstran = Worksheets("odstranradky").Range("1:1").Rows ' Ofs = NasRadku - 1 ' End If ' Do While Ofs < PoslRadek ' odstrani kazdy n-ty radek ' If Ofs = 0 Then Ofs = 1 ' Odstran.Offset(Ofs, 0).EntireRow.Delete ' Ofs = Ofs + NasRadku - 1 ' PoslRadek = PoslRadek - 1 ' Loop '********************* ' nebo odstrani radek, kde hodnota nektere bunky = Hodnota: '********************* Hodnota = "cd" ' nastavit Set Odstran = Worksheets("odstranradky").Range("1:1").Rows Ofs = PoslRadek - 1 Do ' odstraneni radku jehoz hodnota = Hodnota For Each MyCell In Odstran.Offset(Ofs, 0).Cells If MyCell.Value = Hodnota Then Odstran.Offset(Ofs, 0).EntireRow.Delete Exit For End If Next MyCell Ofs = Ofs - 1 Loop While Ofs > -1 '********************* Range("a1").Select Application.ScreenUpdating = True End Sub
Nějak mi to nefunguje. :-/ Zkoušel jsem si to napsat sám podle sebe a někde je chyba... Mělo by mi to smazat všechny řádky v listu když v buňce ve sloupci "B" je hodnota "7", ale někde je chybička :-/
[vb] Sub smazat_sedmicky() Dim Firstrow As Long Dim Lastrow As Long Dim Lrow As Long Dim CalcMode As Long Dim ViewMode As Long With Application CalcMode = .Calculation .Calculation = xlCalculationManual End With With ActiveSheet .Select ViewMode = ActiveWindow.View ActiveWindow.View = xlNormalView .DisplayPageBreaks = False Firstrow = .UsedRange.Cells(1).Row Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row For Lrow = Lastrow To Firstrow Step -1 With .Cells(Lrow, "A") ' Sloupec s hledanými podmínkami If Not IsError(.Value) Then Select Case .Value Case Is = "7": .EntireRow.Delete 'podmínka v uvozovkách End Select End If End With Next Lrow End With ActiveWindow.View = ViewMode With Application .Calculation = CalcMode End With End Sub [/vb]
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené »»»»»»»»»»»»»»»»»»»»»»» UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
Samozřejmě že jde, ale to předchozí makro provede job v objemných dokumentech rychleji.
Tady máš tedy to jednodušší:
[vb]
Sub smazat_sedmicky() For a = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(a, 1) = "7" Then Cells(a, 1).EntireRow.Delete Next a End Sub
[/vb]
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené »»»»»»»»»»»»»»»»»»»»»»» UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
Sub SmazRadky() Dim Condt1, Condt2, Cll As Range Dim Blk As Range, i As Long, Tmp As String With ActiveSheet ' Set Cll = .Range("a4") On Error Resume Next Set Cll = Application.InputBox("Zadej vychozi bunku kliknutim mysi nebo vepsanim", , , , , , , Type:=8) If Err.Number <> 0 Then MsgBox "Chybne zadani": Exit Sub On Error GoTo 0 Condt1 = .Range("b1").Value Condt2 = .Range("b2").Value i = 0 Tmp = vbNullString Do While Cll.Offset(i, 0).Value <> vbNullString If Cll.Offset(i, 1).Value = Condt1 And Cll.Offset(i, 2).Value = Condt2 Then Tmp = Cll.Offset(i, 0).Address(0, 0) End If i = i + 1 Loop If Tmp <> vbNullString Then Set Blk = .Range("a4:" & Tmp) ' Debug.Print Blk.Address Blk.EntireRow.Delete Else MsgBox "Nebyl nalezen radek splnujici podminky" End If End With Set Cll = Nothing Set Blk = Nothing End Sub
Hm... To asi není to co jsem potřeboval, jelikož to maže všechny řádky až do chvíle než to najde řádek dle zadaných kritérií, ale když to nebudu mít seřazeno tak to nebude fungovat ...
Otevřel jsem staré téma a příspěvky sloučil. Příště téma neoznačuj za vyřešené, když to vyřešené nemáš, nebo případně napiš, abych staré téma znovu odemkl. Díky
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené »»»»»»»»»»»»»»»»»»»»»»» UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy prosím pište do fóra. Od toho tu je.
Zdravím, budu prodávat PC a chtěl bych se zeptat, jak nejlépe postupovat při přeinstalaci win a smazání všech HDD pro nového majitele. Asi není ideální jen obyčejné naformátováni s přeinstalace win bez obnovy ne?
Děkuji
Poslední příspěvek
Stačí disk zformátovat, a neměl by být problém. Za 20 let se mi nestalo, že by WIN zformátovaly oddíl a pak k němu zablokovaly přístup.
Dobrý den,
mám ve VBA upravený sešit, který čerpá data z jiných Excelovských sešitů. Po přechodu Excel 21 na Excel 24 přestalo toto spojení přestalo fungovat. Vyskakuje mi hláška : Method updatelink of object _Workbook failed.
Tuší někdo jak do šablon v programu POHODA (které se používají pro tvorbu rozpočtu) zkopírovat data z excelu (viz obrázek).
Jde to nějakým způsobem? Kopírovat to ručně je poněkud zdlouhavé...
Díky.
Poslední příspěvek
Lze to přes import *.xml. Data z Excelu se uloží jako XML. Stormware na to má přesnou strukturu dat, takže je nejlepší se obrátit na firmu a oni ti s tím pomůžou (za peníze). Lze to také velmi snadno automatizovat.
Dobrý den,
potřebuji vytvořit jeden souhrnný vzorec (viz 4) v Excel 2016; kdy budou zohledněny následující podmínky.
Pro jednotlivé kroky jsem si postupně rozepsal vzorce, viz příloha, nedaří se mě je však kombinovat v jeden.
1) Když sloupce B a C...
Poslední příspěvek
Ono se to nezdá, ono to chaotické je:
Ke druhému příkladu vzorec s komentářema:
=ZVOLIT(
POČET(B8:C8) + 1;
; // obě buňky prázdné
x ; // v jedné buňce je číslo
KDYŽ( // 2 čísla
NEBO(
A(
POČET(B8:C8) = 2; // zbytečné, to je tady vždy...
Excel 5000 řádků 2 úzké sloupce a v tisku to je 100 stránek. Potřebuji ty 2 sloupce vytisknou 2x vedle sebe na A4 na výšku, aby to byla polovina listů papíru.
Excel to neumí. Když to tisknu přes pdf a zadám 2 listy na jednu stránku, tak to zase...
Poslední příspěvek
Hoši díky, oba způsoby fungují. :thumbup: :thumbup:
Ty vzorce jsem musel upravit takto (ve sloupci B to zobrazovalo až od řádku 51):
=IFERROR(INDEX(List1!$A:$A; ŘÁDEK() + CELÁ.ČÁST((SLOUPEC()-1)/2) * 100); )
=IFERROR(INDEX(List1!$B:$B; ŘÁDEK() +...