Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  22 23 24 25 26 27 28 29 30   další »

Pěkné srovnání 1
Já ten kód používám a je to super.
A to vyladění se týká čeho...? Pomohlo by to i mně v rychlosti? Mám si něco v kódu opravit?
Děkuji

Než zapomenu...
Rád bych "podpořil" finančně (Donate) buď konkrétní osobu nebo web (weby)... Nic není zadarmo a rady, které se zde dostanou jsou mnohdy k nezaplacení.
Mohu poslat z účtu nebo PayPal.

Tak jsem testnul to makro od eLCHa i na menší počet řádků a funguje to. Měl jsem cca 104 000 a snížil jsem to na 100 000 a vše se načetlo a upravilo.

Přikládám vyexportovaná data v XML. Ona se ta data automaticky otevřou v *.xlsx a tak jsem to i uložil, protože v *.xml to nejde uložit neb to prý neobsahuje žádné mapování...
Já to XML používám jen proto, že je to výrazně rychlejší, ten export.

Mockrát děkuju 1
Upravil jsem to.

Jj, už to funguje, jsem lama 1

Pokud jsem to dobře pochopil, tak se to dá využít pro jakoukoliv tabulku, kterou pojmenuji DataTab nebo bych případně musel zeditovat její název v makru.
Ale nezáleží, jak bude veliká respektive, kolik bude mít sloupců.
Důležité je, aby připravená tabulka vždy využívala zdrojová data *.csv se stejným počtem sloupců, se kterým byla vytvořená tabulka.
Případně bych musel tabulku převést zpět na rozsah, dle potřeby doplnit sloupce, výpočtové a na data a pak zase zpět převést na tabulku.
A vždy musí být sloupce s daty a pak až následovat sloupce s výpočty.

Jinak mi celé načtení a přepočet trvá cca 20 sekund při cca 103 000 zdrojových řádcích.

A ještě jeden dotaz na konec. To makro lze takto připravit jen pro *.csv nebo to lze připravit i pro *.xml?

Tak jsem upravil na hlásí to chybu:
"Subscript out of range" na tomto řádku
With Worksheets("makra").ListObjects("DataTab").DataBodyRange
List, na kterém mám ta tlačítka se jmenuje "makra"

Tohle je celý kod:
Sub subImportCSV_RBR()

Dim sFileTemp As String

sFileTemp = Dir(ThisWorkbook.Path & "\DATA\*.csv")
'sFileTemp = Dir(ThisWorkbook.Path & "\*.csv") 'když je uloženo ve stejném adresáři



Dim sFile As String, dFileTime As Date

While Not sFileTemp = vbNullString

If FileDateTime(ThisWorkbook.Path & "\DATA\" & sFileTemp) > dFileTime Then

sFile = ThisWorkbook.Path & "\DATA\" & sFileTemp

'If FileDateTime(ThisWorkbook.Path & "\" & sFileTemp) > dFileTime Then 'když je uloženo ve stejném adresáři

'sFile = ThisWorkbook.Path & "\" & sFileTemp 'když je uloženo ve stejném adresáři


End If

sFileTemp = Dir

Wend



If Not sFile = vbNullString Then

Dim bScreen As Boolean

bScreen = Application.ScreenUpdating

Application.ScreenUpdating = False

Workbooks.OpenText Filename:=sFile, DataType:=xlDelimited, Semicolon:=True, Local:=True

With ActiveWorkbook

With .Worksheets(1).UsedRange

Dim vValues As Variant

vValues = .Offset(2, 0).Resize(.Rows.Count - 2, .Columns.Count).Value

'vValues = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Value 'začíná číst data ze zdroje od třetího řádku, první dva jsou záhlaví

End With '.Worksheets(1).UsedRange

.Close False

End With 'ActiveWorkbook


With Worksheets("makra").ListObjects("DataTab").DataBodyRange
'With ActiveSheet.ListObjects("DataTab").DataBodyRange 'muselo by se makro spouštět přímo z listu "DataTab"



If .Rows.Count > 1 Then

.Offset(1, 0).EntireRow.Delete

End If

.Cells(1).Resize(UBound(vValues, 1), UBound(vValues, 2)).Value = vValues



End With 'ActiveSheet.ListObjects("DataTab").DataBodyRange



Application.ScreenUpdating = bScreen


Else

MsgBox ("Neexistuje žiadny .csv súbor.")

End If

End Sub

To eLCHa
add 1) Spustil jsem byla chyba na tomto řádku:
With ActiveSheet.ListObjects("DataTab").DataBodyRange
Tak jsem spustil makro přímo z listu a proběhlo to.
Já mám totiž na listu "aktualizace" připravená tlačítka, ke kterým přiřazuji makra a tam spouštím to, co potřebuji. Šlo by to makro upravit, aby šlo spustit odkudkoliv?
Ale načetlo mi to o jeden řádek méně. Já totiž od rána mám smazána záhlaví a tak mi data začínají od řádku 1.
Nicméně při exportu z účetního SW začínají data o řádku 3, protože je tam v prvním řádku nějaká info, jen v jedné buňce a v druhém řádku jsou záhlaví sloupců.

add 2) Já ten exportovaný soubor XML mám vždy stejně otevřený hned po exportu v excelu (udělá se to automaticky) a pak ho musím někam uložit a při té příležitosti buď mohu umazat jen jeden (1.) řádek nebo první dva řádky. Ale podle makra bych umazal jen ten první.

add 3) Tady v tom řádku
sFileTemp = Dir(ThisWorkbook.Path & "\*.csv")
dá se upravit cesta k tomu *.CSV souboru?
Teď je to nastavené, že je *.CSV ve stejném adresáři.
Kdybych dal do stejného adresáře adresář "DATA" bylo by to takto?
sFileTemp = Dir(ThisWorkbook.Path & ".\DATA\*.csv")
nebo jen takto?
sFileTemp = Dir(ThisWorkbook.Path & "DATA\*.csv")

Děkuji

To elninoslov:
Děkuji za makro.
Zkoušel jsem ho aplikovat, ale nefunguje mi... 4
VYexportoval jsem data z účto SW ve formátu XML (kvůli rychlosti), smazal jsem první dva řádky (záhlaví sloupců) a uložil *.csv.
Oddělovač je středník ";"
Daty mám obsazené sloupce "A" až "AI" a je to celkem cca 103 000 řádků.
Když to naimportuji, tak se zapíší data vždy jen do buňky ve sloupci "A" a jsou v té buňce za sebou oddělené středníkem.
Editoval jsem i ty rozsahy v makru, ale bezúspěšně.
Ve finálním listu "dataTab" (v makru jsem přejmenoval, to nebyl problém) mám vzorce od sloupce "AJ" do sloupce "AR".
Nevím, zda nejsou problém ty ";".

Zkopíruji vzorce do všech řádků...
Špatně jsem to popsal, ty vzorce se opravdu zkopírují automaticky a já nemusím díky tabulce nic kopírovat. Omlouvám se za nepřesný popis 7

Mám hlavní soubor (*.xlms), ve kterém má list "dataTAB", na kterém jsou "zdrojová data". Tento list je ve formátu "tabulka", použil jsem na doporučení zde z fóra. Před každou aktualizací dat odstraním všechny řádky, kromě prvního (aby jsem si uchoval vzorce v počítaných sloupcích).
Pak z účetního SW vždy vyexportuji data ve formátu XML (je to rychlejší než přímo do formátu excel).Následně se mi otevře nový sešit v excelu, ve kterém jsou takto exportovaná data. Data označím a vložím "jako hodnoty" do listu "dataTAB". Zkopíruji vzorce do všech řádků a zaktualizuji všechny konti tabulky tímto makrem:
Sub AktKT()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
Next PT
Next WS
End Sub

Stačí takto popsané?
Sloupců mám noho, protože využívám všechny k různým pohledům.

Jj, děkuji... nakopnulo 1
Použil jsem funkci =COUNTIFS($A$1:$A$130;A2;$B$1:$B$130;B2)
protože když jsem použil jen COUNTIF, tak u zakázek, na které dělalo více stavbyvedoucích, respektive měli tam subdodávku, mi to házelo "nepřesná" desetinná čísla...která, když jsem sečetl za zakázku, dala jedna.
A v dalším sloupci jsem číslo 1 vydělil výsledkem ze sloupce, kde mám tento vzorec =COUNTIFS($A$1:$A$130;A2;$B$1:$B$130;B2)
A pak se to v konti sečte 1
Akorát mám cca 26 000 řádků a než se to přepočítá, tak to docela trvá... Ale možná je to můj subjektivní dojem.
EDIT
Když chci použít na listu s daty standardní filtr, tak se to strašně dlouho přepočítává... To je zřejmě těmi vzorci, nebo se pletu?

Možná jednoduché věc, ale nenapadá mě řešení. Na listu "zal" mám data.
Sloupec "A" je kód zakázky (je to jedinečný údaj ve smyslu, že každá zakázka má jiný kód), "B" jméno stavbyvedoucího , "C" popis zakázky.
V jednotlivých řádcích jsou za každý měsíc trvání zakázky data k zakázce. Například, když zakázka probíhala 8 měsíců, mám 8 řádků, přičemž v každém z těchto 8 řádků je ve sloupci "A" stejný údaj. I v jiných, ale nechci to komplikovat...
Já bych potřeboval v konti tabulce vidět, kolik těch zakázek (jednotlivých) každý stavbyvedoucí má (měl), ale nevím, jak to nastavit... Nejsem si jistý, jestli se to nemusí řešit nějakým pomocným sloupcem na listu s daty...
Nenapadá vás někoho, prosím, co nejjednodušší řešení?
Děkuji

To elninoslov: Děkuji za návrh. Já ten zdroj mohu pojmenovat například "datarezie.xlsx" a do tohoto souboru bych vždy vložil nová data, jako hodnoty. Pokaždé exportuji z účetního SW data do formátu XML (exportovaný soubor se jmenuje vždy jinak a já nemohu ovlivnit jeho název), aby to bylo rychlejší (do formátu *xls je to strašně pomalé) a pak ta data zkopíruji, jako hodnoty do příslušného zdrojového listu v souboru.

To eLCHa: Konkrétně je to soubor, který má 153 450 řádků, 41 sloupců a z toho 6 se vzorci. Celková velikost nyní je 34 874 kB.

Ne, pochopil.
Už se to zrychlilo, ale obecně ten soubor při velikosti 38 MB je pomalý při při aktualizaci a při ukládání.
To mazání řádků už jde celkem svižně.

Děkuji.
Add 2) Tu tabulku obecně už zvládnu.
Ale tu konkrétní KonvTab ne, protože pro každou ORG TEXT (to je organizační jednotka) je u stejné SYN (syntetika účtu) jiný "Kód". Přikládám soubor, kde jsem vyfiltroval tuhle věc (jen na jedné syntetice). Já totiž nejdřív potřebuji přiřadit, když náklad určitého účtu (SYN) spadne na konkrétní ORG TEXT, druh "nákladu" (MAT, MZDY atd.). A navíc je v tom, ještě doprava, u které je to vše na "VR" a pak podle toho, jestli má konkrétní zakázku, tak ještě podle SYN rozděluji jen tu Dopravu na druh nákladu (MAT, MZDY atd.).

Add 3) Rozumím a nastuduji.

Add 4) Tomu rozumí, respektive jsem to pochopil 1 ale i přesto se mi nepodaří snížit velikost souboru pod 38 MB 7

Add 6) Už umím

Add 7)
To první makro aktualizuje vše, tedy propojení i KT tabulky?
To druhé makro dělá konkrétně co? Respektive aktualizace jen cashe má jaký význam? Rychlost?
To třetí makro mohu používat na aktualizaci všech KT najednou nebo, které z těchto tří maker bych na tu aktualizaci obecně měl používat s ohledem na rychlost a případně velikost souboru (ale to nevím, jestli makro na to má vliv?).

Děkuji

Jj, je to tak, díky.
Musím vymazat ty řádky, jak jsem popisoval a vy jste mi to potvrdil.


Strana:  1 ... « předchozí  22 23 24 25 26 27 28 29 30   další »

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

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35

Řazení podle času v kategoriích

Marekh • 12.7. 9:55

Porovnávací Tabulka

Jess • 8.7. 20:49

Vzorec pro zkopírování obsahu buňky.

veny • 6.7. 8:28