Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  75 76 77 78 79 80 81 82 83   další » ... 298

No tak dajte priemer všetkých hodnôt (maticovo):
=AVERAGE(IF(data!B:B=A3;data!E:E))
=PRŮMĚR(KDYŽ(data!B:B=A3;data!E:E))

alebo väčšia konštrukcia bez matice a s kontrolou iba skutočne zaplnených oblastí, nie celých stĺpcov (pretože dátumy sú zoskupené):
=AVERAGE(OFFSET(data!$E$2;MATCH(A3;OFFSET(data!$B$3;;;COUNT(data!B:B));0);;COUNTIF(OFFSET(data!$B$3;;;COUNT(data!B:B));A3)))
=PRŮMĚR(POSUN(data!$E$2;POZVYHLEDAT(A3;POSUN(data!$B$3;;;POČET(data!B:B));0);;COUNTIF(POSUN(data!$B$3;;;POČET(data!B:B));A3)))

Prípadne to zjednodušiť tak, že sa dá aspoň ten jeden OFFSET do def. názvu OBLAST
=OFFSET(data!$B$3;;;COUNT(data!B:B))
=POSUN(data!$B$3;;;POČET(data!B:B))

a následne
=AVERAGE(OFFSET(data!$E$2;MATCH(A3;OBLAST;0);;COUNTIF(OBLAST;A3)))
=PRŮMĚR(POSUN(data!$E$2;POZVYHLEDAT(A3;OBLAST;0);;COUNTIF(OBLAST;A3)))

prípadne obdobne ...

Áno, v nových Office to je, v starších treba nahradiť maticovým vzorcom.

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.


Strana:  1 ... « předchozí  75 76 77 78 79 80 81 82 83   další » ... 298

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