< návrat zpět

MS Excel


Téma: Dynamicky pojmenovaná oblast rss

Zaslal/a 6.11.2014 20:01

Mám tabulku, kde vedu údaje o spotřebě nafty. List má název Megan. Pro aktualizaci dat v KT jsem použil pojmenovanou oblast s odkazem: =NEPŘÍMÝ.ODKAZ("megan!$b$3:$g$"&POČET2(Megan!$B:$B)).
V ř. č.3 je záhlaví tabulky a dále následují data.Do oblasti se nezapočítávají údaje na posledních dvou řádcích. Pokud doplním další data, zahrnou se do odkazu zase kromě posledních dvou řádků. Nevím, kde mám chybu.

Zaslat odpověď >

Strana:  « předchozí  1 2 3 4 5   další »
#025012
avatar
Můžete popsat, jak ta data aktualizujete?citovat
#025018
Alfan
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.citovat
icon #025019
eLCHa
Něco budete mít v tabulce špatně, protože tento krok
Zkopíruji vzorce do všech řádků
by za Vás měl udělat excel rovnou při vložení nových dat...
Jak jsem psal - pokud je tabulka správně připravená - o formáty a vzorce se starat nemusíte.
Pokud je třeba oprava vzorce, můžete ji provést ve kterémkoliv řádku a vzorce se opraví v celém sloupcicitovat
icon #025020
avatar
@eLCHa: ad Pokud je třeba oprava vzorce, můžete ji provést ve kterémkoliv řádku a vzorce se opraví v celém sloupci

toto je možné v ExcelTable potlačiť, nový vzorec potom môže byť len v konkrétnom riadku a nemusí sa prepísať do celej tabuľky. To by mohla byť príčina problému, na ktorý naráža Alfan. Berte to len ako možnosť, netvrdím, že to tak v tomto konkrétnom prípade je.citovat
#025023
Alfan
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 7citovat
icon #025025
eLCHa
@AL
už je to bezpředmětné, ale řekl bych, že ze 100 uživatelů
50 nepoužívá tabulku (excel-table)
30 používá, ale je ani nenapadne, že se to dá vypnout
10 si řekne, že to možná jde, ale nikde to nevidí, tak se nakonec připojí k těm 30
5 si řekne, že to určitě jde, ale nenajdou, bo je to fakt dobře schované
a těch chytrých 5 co to najde si zase řeknou, že snadnější než to vypnout je převést tabulku zpět na rozsah a pro další tabulku si to nechat zapnuté ;))citovat
#025028
elninoslov
Aj tak by som sa pre seba pokúsil o zjednodušenie. Na 1 klik.
-vymaže sa tabuľka okrem prvého riadka, a zmení sa jej veľkosť na 1 dátový riadok
-zistíme ktorý CSV (akéhokoľvek názvu) v adresári má najvyšší dátum, to bude asi náš favorit. Ak tam bude vždy len jeden, je to ešte jednoduchšie.
-od druhého riadka sa naimportuje CSV, to by malo zabezpečiť pridanie vzorcov. Do tabuľky importovať totiž nejde. Musí to byť jednorazový import, nie vytvorenie pripojenia, keďže sa názov CSV mení.
-prvý dátový riadok tabuľky zmažeme
-a máme tabuľku o správnom počte riadkov (bez prázdnych na konci), so vzorcami, takže updatneme KT.
-ak by sa všetky stĺpce CSV nevkladali jeden vedľa druhého, ale medzi nimi by bol nejaký stĺpec so vzorcami, tak by sa to muselo urobiť inak.

Uvažujem správne, že by takto bol potrebný len jediný klik, a CSV by sa ani neotváralo, nevkladali by sa hodnoty...?citovat
#025030
elninoslov
Asi takto nejako som to mal na mysli. Musel som použiť vytvorenie a zmazanie pomocného dočasného listu pre import, lebo mi stále nechcelo nastaviť tabuľku do importovanej oblasti a opačne. Možno len treba inak zmazať Connection, ako som sa snažil ja. Takže zatiaľ takto. Je to zatiaľ koncipované len na CSV s jedným stĺpcom (cca 25000 Rows). Pre Vaše potreby to treba upraviť na požadované parametre.
Příloha: rar25030_importcsv.rar (30kB, staženo 18x)
citovat
#025031
Alfan
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 ";".citovat
icon #025032
eLCHa
@elninoslov
s tím nejnovějším datem je to dobrý nápad
zběžně jsem koukal na Váš kód - jak píšete chce to ještě doladit
používáte fso pro zjištění nejnovějšího souboru - tady to není potřeba, stačí použít Dir + FileDateTime

Dal jsem si ranní rozcvičku

Pokud si uvědomíme, že csv je textový soubor, pro načtení dat bych naopak fso použil - stejně jako u Vás soubor není třeba otevřít, nevytvářím žádný dočasný list ale hlavně dodržuji zásadu co nejmenšího počtu přístupů na list - vše dělám v kódu a to jej značně zrychluje. Na list tak přistupuji pouze 2x - mazání starých dat a zápis nových (přímo do tabulky)
Ve Vašem kódu navíc něco způsobuje resize tabulky (rozšířil jsem ji o 3 sloupce a stále se vrací na 7)

Bohužel se mi nepovedlo (zatím) vymyslet, jak to udělat v jednom cyklu, proto jsem musel jet cykly 2 a využít dočasné pole.

V csv souboru jsem přidal záhlaví (které předpokládám) a rozšířil ho na 142831 řádků a 4 sloupce. Myslel jsem si že budu kvůli druhému cyklu delší než Vy, ale zas tak hrozné to není - můj kód jel 16s a Váš 13. Pokud by v něm byly další listy se vzorci, bude se to patrně přiklánět na stranu mého řešení.

Neberte jako kritiku, ale jako diskusi ;)

Sub subImportCSV()
Dim sFileTemp As String
sFileTemp = Dir(ThisWorkbook.Path & "\*.csv")

Dim sFile As String, dFileTime As Date
While Not sFileTemp = vbNullString
If FileDateTime(ThisWorkbook.Path & "\" & sFileTemp) > dFileTime Then
sFile = ThisWorkbook.Path & "\" & sFileTemp
End If
sFileTemp = Dir
Wend

If Not sFile = vbNullString Then
Dim vValuesTemp() As Variant
ReDim vValuesTemp(0)

With CreateObject("Scripting.FileSystemObject").OpenTextFile(sFile)
.ReadLine 'záhlaví

While Not .AtEndOfStream
If Not IsEmpty(vValuesTemp(0)) Then
ReDim Preserve vValuesTemp(UBound(vValuesTemp) + 1)
End If
vValuesTemp(UBound(vValuesTemp)) = Split(.ReadLine, ";")
Wend
.Close
End With 'CreateObject("Scripting.FileSystemObject").OpenTextFile(sFile)

Dim vValues() As Variant
ReDim vValues(UBound(vValuesTemp), UBound(vValuesTemp(0)))
Dim i As Long, j As Long
For i = 0 To UBound(vValues, 1)
For j = 0 To UBound(vValues, 2)
vValues(i, j) = vValuesTemp(i)(j)
Next j
Next i

With ActiveSheet.ListObjects("DataTab").DataBodyRange
If .Rows.Count > 1 Then
.Offset(1, 0).EntireRow.Delete
End If
.Cells(1).Resize(UBound(vValues, 1) + 1, UBound(vValues, 2) + 1).Value = vValues

End With 'ActiveSheet.ListObjects("DataTab").DataBodyRange
Else
MsgBox ("Neexistuje žiadny .csv súbor.")
End If
End Sub
citovat

Strana:  « předchozí  1 2 3 4 5   další »

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