Tá Vaša výsledná tabuľka je zle. Nesprávne názvy aj zoradenie.
Rozhodne nemôžete použiť to na konci Vášho príspevku.
Range() ako zdroj a Range() ako cieľ je v tom istom zošite! Musíte určiť zdrojový zošit pred Range. Idem si pozrieť futbal, možno sa k Vám ešte vrátim.
Také obmedzenie je všade, v každej verzii Excelu v Podmienenom formátovaní. Dá sa to obabrať tak, že urobíte všetko negovane. Napevno dáte bunkám hrubú čiaru v klasickom formáte, a v Podmienenom formáte ju budete rušiť opačnou podmienkou =$C4=$C5 a dáte čiaru "bez čiary". Nevýhoda je skrolovanie "obsadenej" oblasti.
Ak sú dátumy zoradené, a vyzerá to tak, tak potom napr. jednoducho pre oblast A4:K1000:
=$C4<>$C5
Sub Vytvor_import()
ThisWorkbook.Worksheets("List 3").Copy
With ActiveWorkbook
With .Worksheets(1)
R = .Cells(.Rows.Count, "A").End(xlUp).Row
With .UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.Resize(.Rows.Count - R + 1).Offset(R, 0).EntireRow.Delete Shift:=xlUp
End With
.Buttons(Array("Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6", "Button 7", "Button 8")).Delete
End With
Application.DisplayAlerts = False
.SaveAs "C:\Users\DELL i7\Desktop\IMP Produkty\import1.xlsx", xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close False
End With
End Sub
To má predsa milión riešení závislých na presnom rozložení Vašich dát. Musíte priložiť prílohu, a podľa nej sa dá urobiť, viac alebo menej komplikované riešenie. Ale vždy šité na mieru danému rozloženiu.
2x pr.
Pavle, ja Vám fakt čoraz viac nerozumiem
Nie je náhodou to, čo naposledy popisujete, typické pre VLOOKUP/SVYHLEDAT ???
Bez makra to bude o dobrom prstoklade. Pr.:
Chcem dátový riadok 1 a 3 (teda riadok 5 a 7):
1. Označím si Názvy. Mám označené C4:F4
2. Označím k tomu pomocou Ctrl aj bunku C5. Mám označené C4:F4,C5
3. Ctrl+Shift+šípka vpravo. Mám označené C4:F4,C5:F5
Ďalšie oblasti pridávam opakovaním bodov 2. a 3., pričom môžem označiť aj viac riadkov, a po klávesovej skratke sa označia všetky riadky v stĺpcoch vpravo.
Potom už iba Ctrl+C...
Ak chcete makro, tak potom by sa mohlo napr. na klávesovú skratku Ctrl+G nastaviť
Sub Makro1()
' Klávesová skratka: Ctrl+g
Dim RNG As Range
With ActiveSheet
Set RNG = Intersect(Selection.EntireRow, .Range("C4:F4").EntireColumn)
If RNG Is Nothing Then MsgBox "Nevybrali jste sloupce C:F", vbCritical: Exit Sub
Union(.Range("C4:F4"), RNG).Copy
End With
End Sub
Musíte mať v Outlooku nastavené a funkčné Vaše mailové konto, a hlavne si aktivujte jeden z riadkov
.Display
.Send
odstránením apostrofu na začiatku riadku. Význam je jasný, aj popísaný v makre.
Takže poznáte či nepoznáte počet a názvy všetkých tlačítok?
Takže sa musí z "Datum zaúčtování" zistiť rok a mesiac, a v riadku daného roku a mesiaca pripočítať k už doteraz naspočívavanej sume? Teda napr. v.r. 5614843 patrí do listu "NB 2" čo je vlastne inak pomenovaný "NE 2". V ňom pre záznam z 3.11.2022 platí, že prepíšeme bunku C19 na 3.11.2022 a bunku D19 na 1375,00. A nemôže nastať situácia, že v bunke C19 alebo D19 už budú dáta? Ak môže, a dáta tam už budú, "částka" sa má zrátať/prepísať? A čo v prípade rozdielneho dňa v mesiaci, to fakt neviem. Alebo ako to teda. To pole "platba č." neznamená mesiac? V tom prípade je strašne nevhodné v prílohe použiť pre každý rok čísla 1-12.
=LEN(A2)-LEN(SUBSTITUTE(A2;"|";""))
=DÉLKA(A2)-DÉLKA(DOSADIT(A2;"|";""))
V tom prípade som Vás zase nepochopil. Tu sú 2 príklady pomocou COUNTIF a SEARCH/HLEDAT. (maticové vzorce: Ctrl+Shift+Enter)
=IFERROR(INDEX(VYROBCI;MATCH(TRUE;COUNTIF(A1;"*"&VYROBCI&"*")>0;0));"")
=IFERROR(INDEX(VYROBCI;POZVYHLEDAT(PRAVDA;COUNTIF(A1;"*"&VYROBCI&"*")>0;0));"")
=IFERROR(INDEX(VYROBCI;MATCH(FALSE;ISERROR(SEARCH("*"&VYROBCI&"*";A1));0));"")
=IFERROR(INDEX(VYROBCI;POZVYHLEDAT(NEPRAVDA;JE.CHYBHODN(HLEDAT("*"&VYROBCI&"*";A1));0));"")
Je to iba príklad, určite existujú ďalšie možnosti poskladania funkcií (napr. s pomocou MIN() a ROW()/ŘÁDEK().
Takže to nie je táto téma. Mali ste dať otázku do danej témy, alebo pridať odkaz na danú tému alebo prílohu. Automaticky som predpokladal nasledovné:
-Pod exportom si v drvivej väčšine predstavujem export dát a iba dát. Teda bez tlačítok, bez makier. Teda mažem všetky tlačítka. Preto
Dim btn As Button
For Each btn In ActiveWorkbook.Worksheets(1).Buttons
btn.Delete
Next btn
-Predpokladám, že hovoríte o tejto téme, a teda predpokladám tlačítka spomínané v tejto téme. Preto
ActiveWorkbook.Worksheets(1).Buttons(Split(NAZVY & ",btnReset", ",")).Delete
-Export listu sa robí väčšinou (záleží prípad od prípadu) pomocou .Copy listu, a následnom mazaní ovládacích tlačítok z aktívneho novovytvoreného zošitu. Preto
ActiveWorkbook...
Vy ale obchádzate všetky predpoklady, neupozorníte na inú tému, neodkážete na prílohu, nespomeniete názvy tlačítok.
Takže.
1. Ak poznáte názvy tlačítok (Nájsť a vybrať - Tabla výberu)
NejakýZošit.NejakýList.Buttons(Array("Button 1", "Button 2")).Delete
2. Ak nepoznáte názvy tlačítok, alebo neviete ich počet
Dim btn As Button
For Each btn In NejakýZošit.NejakýList.Buttons
If btn.name<>"toto tlačítko nemazať" Then btn.Delete
Next btn
Čo znamená ?
nicméně dělá mi to pak chybu při použití jiného tlačítka
Žiadny export sme predsa neriešili. Každopádne buď vymažte menný zoznam (ak ho viete):
ActiveWorkbook.Worksheets(1).Buttons(Split(NAZVY & ",btnReset", ",")).Delete
alebo vymažte všetky nájdené tlačítka na liste (ak neviete ich názvy a počet):
Dim btn As Button
For Each btn In ActiveWorkbook.Worksheets(1).Buttons
btn.Delete
Next btn
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.