Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  8 9 10 11 12 13 14 15 16   další » ... 231

Ak je to tak ako si predstavujem, tak to sa musí dať skrátiť, a to podstatne. Ak chcete pošlite vzorku dát, bez citlivých údajov. Aj s makrom. Keď bude čas pozriem.

Koľko Vám také makro trvá, ak idete po jednej bunke/riadku pri 500K Read a 250k Write?

To záleží na mnohých veciach. Príklad:
let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabuľka1"]}[Content],
#"Zmenený typ" = Table.TransformColumnTypes(Zdroj,{{"Meno", type text}, {"Počet", Int64.Type}}),
PoslednyStlpec=List.Last(Table.ColumnNames(#"Zmenený typ")),
PrvaHodnota = Table.Transpose(Table.SelectColumns(#"Zmenený typ", PoslednyStlpec)){0}[Column1],
#"Pridané vlastné" = Table.AddColumn(#"Zmenený typ", "Vlastné", each PrvaHodnota)
in
#"Pridané vlastné"

Skúste
Range("E1:R1").Offset(RadekVysledek1 - 1, 0).Value = VyslCetnost1
alebo upravte premennú "RadekVysledek1", aby mala hodnotu nie riadku, ale posunu. Teda o koľko musím E1:R1 posunúť dole.
Ale 250K riadkov, to sa načakáte.
To by bolo lepšie urobiť 2 rozmernú maticu (ak viete počet riadkov), alebo (ak neviete dopredu počet) najskôr dočasnú kolekciu či dočasné pole matíc, a na konci ich v cykle spojiť do už známej veľkosti. Zapísať naraz, alebo aspoň vo veľkých blokoch. To sa ale najlepšie rieši s prílohou.

Ak sa nespracováva tá premenná aj niekde inde, tak ju netreba:
Worksheets("List2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Worksheets("List1").Cells(1, 1).Value

Nedovolí to systém. Ten v systémovej zložke Users, kvôli prístupovým právam, nedovolí zápis do iných zložiek, ako je Vaše konto. Ak dám súbor inde, do nesystémovej zložky, na iný disk, alebo do svojej zložky v Users, tak to prejde.

Možno zbytočne komplikované čáry-máry so stĺpcami, ale funkčné. Takto som to pochopil ja.

Ten dátový model je obrovský. Úpravy už len bez neho. Prekopaný kód na GoogleDrive.

With Range("B4").FormatConditions.Add(Type:=xlExpression, Formula1:="=AND($B4=""/n"";$N4<>3333)")
.Font.Bold = True
.Interior.Color = vbRed
End With

Ale problém je v jazykovej mutácii Excelu. FormatConditions nemá možnosť vkladať vzorce v lokálnom prevedení (FormulaLocal). Bežne sa ale vo VBA vkladajú EN vzorce. No zrovna FormatConditions vkladá Local vzorce. Problém ale niesú len preklady, ale aj oddeľovače "," vs ";". Riešením by možno bolo dočasne rýchlo vložiť do bunky (alebo do Def. názvu) EN vzorec cez Formula, a prečítať ho naspäť ako FormulaLocal, a tento prečítaný vložiť do FormatConditions, keďže tam sa vkladajú len FormulaLocal. Pokus som ale nerobil. Možno neskôr...
Samozrejme v CZ nie je AND ale je tam A.

EDIT: tak predsa rýchlo...
Names.Add "LOCAL_HELP", RefersTo:="=AND($B4=""/n"",$N4<>3333)"
With Range("B4").FormatConditions.Add(Type:=xlExpression, Formula1:=Names("LOCAL_HELP").RefersToLocal)
.Font.Bold = True
.Interior.Color = vbRed
End With
Names("LOCAL_HELP").Delete

Ale kurzor musí byť na 1 riadku, v tomto prípade na B1.

Pre všetky Def. názvy v JANUARY máte rozsah "Zošit". Takže ich voláte iba názvom Def. názvu. Na rozdiel od toho všetky okrem JANUARY majú Def. názvy s rozsahom pre daný list, takže ich voláte napr. FEBRUARY!SUM_JK_LK. Zrovnajte si rozsahy Def. názvov a je to. (musíte ich zmazať a vytvoriť znovu so želaným Rozsahom)

Skúsil som si teda opraviť ten XML a prerobiť makro.

Pozerám, že som tam nedal žiaden popis, teda sa to bude upravovať niekomu inému na prd. No nič, tak ak si to zajtra prečítam ešte raz a pochopím čo chcete, tak Vám to upravím ...

EDIT:
Tak snáď som to pochopil správne, úprava je jednoduchá. Dobrú noc.

To nevadí, že názvy uzlov sú iné, v tomto prípade musí byť dodržané len to, aby bol len jeden hlavný uzlo, a pod ním X poduzlov. Ak máte záujem ešte aj o tie poduzly, tak to bude horšie. Lebo treba rekurzívnu metódu napísať, ktorá bude potom aj upravovať názvy stĺpcov podľa všetkých doterajších nadradených uzlov. Teda napr. názov stĺpca by bol "Meno.Stredné" alebo "Hodnoty.Tlak.Senzor027", a to samozrejme aj s dôsledkami, že musia byť tým pádom aj stĺpce "Meno" aj "Meno.Stredné". V druhom príklade stĺpce "Hodnoty" aj "Hodnoty.Tlak" aj "Hodnoty.Tlak.Senzor027".
Takýto univerzálny rozklad sa tu riešil tuším aj v PQ, a zdá sa mi, že sa to nedoriešilo pre plne variabilné XML.
Ale vtedy išlo zdá sa mi o zlučovanie viac xml, kde bolo potrebné porovnávať nerovnaké členenie do už rozložených stĺpcov.

Zatiaľ ten najjednoduchší variant.

Štruktúra XML je vždy rovnaká? Teda hlavný uzol "note", a pod ním vždy uzly s dátami "to", "from", "heading", "body", ... ? Teda bez ďalších vnorení poduzlov? Ak áno, tak by som to urobil rýchlym rozkladom textu, a nie importom.

Myslíte 3D vzorec? Teda ak zoberiem príklad od Jiřího, tak chcete zistiť, či sa A1 vo všetkých listoch rovná 5? Potom, keďže funkcia IF/KDYŽ nepodporuje priamo 3D odkazy, dal by sa použiť test vynásobenia čísel v A1 vo všetkých listoch a následné porovnanie s N-tou mocninou čísla 5. Prázdne A1 neberie do úvahy. Problém je, že daný súčin sa dá dosiahnuť aj inými číslami:
=IF(PRODUCT(List2:List5!A1)=5^COUNT(List2:List5!A1);1;0)
=KDYŽ(SOUČIN(List2:List5!A1)=5^POČET(List2:List5!A1);1;0)

alebo porovnať min a max v bunkách A1 v listoch. Musí byť vždy 5. Prázdne rovnako neberie do úvahy:
=IF(AND(MAX(List2:List5!A1)=5;MIN(List2:List5!A1)=5);1;0)
=KDYŽ(A(MAX(List2:List5!A1)=5;MIN(List2:List5!A1)=5);1;0)

V 3D dotaze určujete prvý a posledný názov listu v rozsahu listov.
Ak chcete čokoľvek iné, Váš popis nie je dostatočný, a je potreba popis rozšíriť a zároveň priložiť prílohu s príkladom toho čo máte, a čo má byť výsledkom.


Strana:  1 ... « předchozí  8 9 10 11 12 13 14 15 16   další » ... 231

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

cislovanie riadkov

martin1 • 18.1. 20:47

Podmíněné formátování

Baja • 18.1. 18:55

VBA - načtení dat ze souboru s proměnným názvem

Fantasyk • 18.1. 14:29

zápis čísla fce suma

Stalker • 18.1. 13:17

smazání více obrázků

Zdenda-R • 18.1. 9:47

výpis adresáře

Milan-158 • 18.1. 9:31

zápis čísla fce suma

Josef-Sekan • 18.1. 9:26