Ano. měl jsi pravdu. Děkuji. Tohle bych nehledal.
přikládám i kompletní soubory, akorát cestu je třeba si upravit
@elninoslov
Omlouvám se že s tím ješte otravuji, ale právě jsem zjistil že mi to kopíruje uplně jiné datumy ne sloupci I je na prvním řádku 8.9.2017 14:21:19 a ono to zkopíruje 7.9.2013 14:21:19
o den méně a z roku 2017 udělá 2013
a ani za boha nemohu přijít na to proč
@ marjankaj Děkuji za pomoc, ten kód si uložím
@elninoslov Také děkuji za pomoc a máš opět pravdu funguje to na výbornou.
Děkuji Vám oběma.
Vzal jsem kousky kódu od marjankaje a zprasil toto:
Sub ImportV2()
Dim Radek As Range, Data As Range
Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\Users\G510926\Desktop\import\plan_aktual.xlsx"
ActiveWorkbook.Worksheets("List1").Activate
Set Data = ActiveSheet.Range("D2:O100")
'ActiveWorkbook.Close
Windows("import3.xlsm").Activate
' Najde poslední volný řádek
Set Radek = Sheets("Vstup").Range("A1")
If Not IsEmpty(Radek) Then
If Not IsEmpty(Radek.Offset(1, 0)) Then
Set Radek = Radek.End(xlDown)
End If
Set Radek = Radek.Offset(1, 0)
End If
Radek.Select
Data.Copy ActiveCell
Set Radek = Nothing
' Odstranění duplicit
' Columns("A:L").Select
' ActiveSheet.Range("$A:$L").RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes
Application.DisplayAlerts = True
End Sub
Což již funguje, ale kopíruje to data tak jak jsou tudíž i se vzorci a formátováním
@elninoslov
S těmi filtry jsem to nenapsal nejlépe. Takže teď bych neřešil filtry.
Zkoušel jsem ještě napsat makro na zjištěni posledního volného řádku což se mi povedlo:
Sub Import()
Dim Radek As Range
Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\Users\G510926\Desktop\import\plan_aktual.xlsx"
Data = ActiveWorkbook.Worksheets("List1").Range("D1:O150")
ActiveWorkbook.Close
Windows("import3.xlsm").Activate
' Najde poslední volný řádek
Set Radek = Sheets("Vstup").Range("A1")
If Not IsEmpty(Radek) Then
If Not IsEmpty(Radek.Offset(1, 0)) Then
Set Radek = Radek.End(xlDown)
End If
Set Radek = Radek.Offset(1, 0)
End If
Radek = Data
Set Radek = Nothing
Application.DisplayAlerts = True
End Sub
Akorát nyní stojím na tom, že po spuštění makra mi zkopíruje ze sešitu plan_aktual.xlsx hodnotu z buňky D1 do poslední volné buňky souboru import3.xml místo toho aby mi zkopíroval Range D1:O150. Takže chyba je v Radek = Data a já nyní nevím jak rozšířit oblast na posledním volném řádku o D1:O150
Přikládám i soubor
Prosím o pomoc s makrem na kopírováním mezi dvěma sešity. Mám sešit import2.xlsm do kterého potřebuji nakopírovat data z sešitu plan_aktual.
V přiloze mám soubory kde jsem zkoušel různá makra, jak kopírování z xlsx souboru (první list), tak i import csv pomocí QueryTables (třetí list), řešení na druhém listu jsem našel někde na fóru. Bohužel mám problém s tím, že neumím, nastavit makro, tak aby další kopírování nepřepsalo řádky které tam jíž jsou (tak mi to funguje teď), ale přidaly se na poslední prázdný řádek. Protože sešit plan_aktual bude sloužit jako zdroj dat, který se bude každý den měnit. Na konci makra mám odstranění duplicit, které mi zajístí to abych v sešitě import2 neměl duplicitní záznamy. Nevím které řešení je vhodnější protože by tam mělo zůstat nastavené filtrování.
Tak jestli by mi někdo nemohl pomoc s kódem který mi zajistí to aby se kopírovalo na poslední volný řádek? Děkuji
Děkuji moc, prfektně vyřešeno.
Jen jsem zapoměl že může nastat varianta kdy mezi kroky nebude nic a pak to hodí chybu #HODNOTA! je to protože v tom řádku kde nic není není ani datum a tak na následujícím řádku je chyba. Vyřešil jsem to úpravou vzorce
z:=KDYŽ(B3="";"";D2+KDYŽ(B3=B2;0;1))
na:=KDYŽ(B3="";D2;D2+KDYŽ(B3=B2;0;1))
a pak přidal podmíněné formátování na řádky bílý text kde nic není
Snad je to tedy správné řešení. Ještě jednou děkuji.
Zdravím, trápím se s funkcí KDYŽ a asi by to chtělo i podmínku NEBO, bohužel nějak mi to hlava nebere. Možná i něco jiného, nevím. Mám nasledující příklad:
V prvním sloupci mám datum zažátku práce
V druhém mám kroky k této práci těch může být max 8
Ve třetím bych potřeboval přiřadit datumy těchto kroků.
Např.:
První den je začátek práce
první krok je +1 den k datu začátku kdy je připraven materiál
druhý krok je např.: SILK tak +2 dny k datu začátku (ten krok může být OFF nebo SILK)
třetí krok je buď +2 dny k datu začátku pokud je ten krok stejný jako předchozí (SILK) nebo +3 dny k datu začátku pokud je to jiný krok (OFF)
čtvrtý krok může být to samé nebo +3 dny k datu začátku
dá se to popsat i tak že pokud je několik kroků po sobě stejných budou se dělat v ten samý den, a když je následující krok jiný dělá se až druhý den a pokud jich je opět několik stejných opět se dělají v ten samý den. bohužel ty kroky mohou být i na střídačku: SILK, OFF, SILK, OFF... nebo SILK, SILK, OFF, SILK, OFF, či OFF, OFF, SILK, SILK, OFF
A co funkce SVYHLEDAT? viz příloha pokud nezvladneš mohu upravit.
Jejda díky moc, hodně jednoduché řešení... mě to ani nenapadlo :)
Rád bych se zeptal, zda lze přes VBA otvírat zástupce .xlsx souboru, nebo lze otvírat jen soubory?
elnisove, děkuji ti mnohokrát, funguje to naprosto úžasně, kód je na mě celkem rozsáhlý, ale snad mu porozumím. Jsem teď na dovči tak se na to pak kouknu zblízka. A pokud bych měl problém, tak ozvu.
Ještě jednou děkuji a bude i něco na pivo :) protože mi to ulehčí práci.
Zdravím, nebyl by schopen někdo s tim pomoci? Stačila by jen část kódu na to aby exel uměl otevřít složku a tam vyhledat sešity které jsou pojmenovány v buňkách již otevřeného sešitu a postupně je otvírat, to kopírování určitých buněk a vkládání bych už zkusil udělat sám...snad :)
Omlouvám se asi velký soubor
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.