Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  144 145 146 147 148 149 150 151 152   další » ... 286

Tak môže to byť kľudne trebárs aj takto ... ?

No a už sme skoro na rovnakej "vlne" v tom čo hovoríme. :)

Vo VBA :
-do Name ide vložiť dlhý vzorec iba pri vytváraní Name, alebo keď je Name už vytvorený, tak
a) "chmatom" cez bunku
b) vymazaním Name a opätovným vytvorením

-do bunky nejde vkladať dlhý vzorec ako FormulaArray, a treba použiť Name

-vzorce kratšie ako 255 znakov nieje problém vkladať do Name ani pri vytvorení ani cez RefersTo, ale ani ako maticové cez FormulaArray priamo do bunky

-maticový vzorec sa nikdy nezadáva s {}

-každý maticový vzorec v Name je automaticky maticový, bez akéhokoľvek zásahu ako {}, rovnako ako každý vzorec vložený do bunky cez FormulaArray

PS: dlhý > 255 znakov

Narýchlo jedno možné riešenie bez potreby otvárania súborov, pomocou vkladania vzorcov. Overenie existencie súboru, existencie listu data, počtu riadkov. Smerodajný pre určenie počtu riadkov je stĺpec A v listoch "data". Slušne rýchle, ale dalo by sa ešte o kúsok rýchlejšie, keď by sa nevkladali vzorce na 3x ako teraz, ale by sa pripravili do 1 veľkého poľa a dali naraz. Ale už sa mi nechce :).
Inak príliš som to netestoval...

Prípadne by som pre toto vážne zvážil PowerQuery.

Hm, no u mňa ide zapísať dlhý vzorec do Name iba takto:
a) pri vytváraní Name (keď neexistuje), použiť normálny vzorec A1
b) pri prepisovaní vzorca v existujúcom Name nejde použiť RefersTo = vzorec A1, ale zožerie to iba RefersToR1C1 = vzorec R1C1.

To je zaujímavé, lebo R1C1 je dlhší ako A1.

Ak teda mám len vzorec A1, tak ho pomocne vložím do bunky ako Formula, a odtiaľ ho načítam do do Name ako R1C1
Name().RefersToR1C1 = Bunka.FormulaR1C1.

Teda ide o to, či sa mi ten vzorec ľahšie skladá ako A1 alebo R1C1, potom záleží či budú s tým opletačky alebo nie pri vkladaní do Name.

Tak potom napr. takto:
Sub Makro1000c()
Dim Radku As Long, Radku2 As Long, RNG As Range, D()
With wsUrgence
Radku = .Cells(Rows.Count, 1).End(xlUp).Row
Radku2 = wsStrategickeDily.Cells(Rows.Count, 4).End(xlUp).Row
If Radku < 2 Or Radku2 < 3 Then MsgBox "Chybějí data.", vbExclamation, "Oznam": Exit Sub
D = Evaluate("=IF(COUNTIF('Strategické díly'!D3:D" & Radku2 & ",Urgence!A2:A" & Radku & ")>0,True)")
For Radku = 1 To UBound(D)
If D(Radku, 1) Then
If RNG Is Nothing Then Set RNG = .Cells(Radku + 1, 1) Else Set RNG = Union(RNG, .Cells(Radku + 1, 1))
End If
Next Radku
End With
If Not RNG Is Nothing Then RNG.Interior.Color = RGB(0, 204, 255)
End Sub

Sub Makro1000b()
Dim Cell As Range, D(), Radku As Long, HDN As String, RNG As Range
With wsUrgence
Radku = .Cells(Rows.Count, 1).End(xlUp).Row - 1
If Radku < 2 Then MsgBox "Chybějí data.", vbExclamation, "Oznam": Exit Sub
HDN = wsStrategickeDily.Cells(3, 4).Value2
ReDim D(1 To Radku, 1 To 1)
D = .Cells(2, 1).Resize(Radku).Value2
For Radku = 1 To Radku
If D(Radku, 1) = HDN Then
If RNG Is Nothing Then Set RNG = .Cells(Radku + 1, 1) Else Set RNG = Union(RNG, .Cells(Radku + 1, 1))
End If
Next Radku
End With
If Not RNG Is Nothing Then RNG.Interior.Color = RGB(0, 204, 255)
End Sub

Nechcete Vy náhodou testovať výskyt všetkých zo Strategické díly!D3:D13 ? Inak to môžete kľudne aj Podmieneným formátom.

PS: wsUrgence a wsStrategickeDily som si pomenoval CodeName listov.

Ak chcete dať do bunky C3 dlhý maticový vzorec, a môžete použiť pri tom DefName, tak takto to ide:
Sub pokus()
With ActiveSheet
.Range("C3").Formula = "=IF(A3="""","""",RIGHT(REPT(""0"",LEN(A3))&SUM(IFERROR(MID(A3,LARGE(IF(ISERROR(--MID(A3,LEN(A3)+1-ROW($A$1:INDEX($A:$A,LEN(A3))),1)),FALSE,LEN(A3)+1-ROW($A$1:INDEX($A:$A,LEN(A3)))),ROW($A$1:INDEX($A:$A,LEN(A3)))),1),0)*POWER(10,ROW($A$1:INDEX($A:$A,LEN(A3)))-1)),COUNT(--MID(A3,LEN(A3)+1-ROW($A$1:INDEX($A:$A,LEN(A3))),1))))"
.Names("MATICOVY_VZOREC").RefersToR1C1 = Range("C3").FormulaR1C1
.Range("C3").Formula = "=MATICOVY_VZOREC"
End With
End Sub

Áno vspomínam si, myslím že toto je ono. Metóda 1 má v SK 318 znakov. V CZ má až 439 ?
Tož já sa v tom niekedy pekne vyžívam 5
UDF by bola podstatne jednoduchšia a čitateľnejšia to je jasné. Tak ale možno existujú iné jednobunkové vzorce, jednoduchšie, netuším ...

Rôznych riešení môžu byť mraky, tu je ďalší príklad, ale opäť a zas (ako vždy), nedostatočný popis bez príkladu presného požadovaného použitia. Ak ide len o nájdenie objednávky, na to stačí aj filter, ak o súhrn objednávok pre určitého odberateľa, na to KT. Neviem na čo potrebuje dotyčný takéto niečo. Teda HOLIS87, ste na ťahu ...

Podľa viacerých fór na nete, to možné nieje. Čo je teda u takého medzinárodného kolosu až divné. Rozčarovanie nezdieľate sám...

Šmarjá! Pár dní som tu nebol a takýto Flame. Nenechám sa do neho namotať, len poznámky:
- Neverím, že sa toto nevypomstí
s = Range(...).Text
- Ktokoľvek chce, nech teda prispeje kompletným riešením výpisu veľkostí všetkých subfoldrov, podobne ako ja.
- Žiadne riešenie nieje ideálne. Nepoznáme ani presný spôsob použitia. Úplne niečo iné bude ak to chce vypísať do formu (podobne ako ja), alebo do buniek, alebo má foldre v ListBoxe, a pri označení chce niekde vypísať iba veľkosť toho jedného. Možností ma napadá mnoho, dal som jedno (myslím tú prílohu, nie ukážku z Googlu!), ktoré sa žiaľ zaobišlo bez feedbacku, zato sa nezaobišlo bez flamu.

Capnite sem celý súbor s celým makrom. Máte asi jeden master súbor v ktorom to ovládate. Skúste nepoužiť ActiveWorkbook, ale najskôr priradenie súboru do premennej. Záleží aj akým spôsobom to otvárate. Napr. to môžete otvárať v inej inštancii Excelu, a potom Vám je Application.DisplayAlerts = False prd platné, lebo to platí na Application toho Master súboru. Tá inštancia má svoje, napr. xlApp.DisplayAlerts = False. Alebo ten zatvárací kód je priamo v tých otváraných súboroch, a tie sa zatvárajú sami seba ? Prípadne použiť DoEvents... Treba kompletnú prílohu, a nie dávkovanie po jednom riadku z kódu. Dajte sem Master súbor, a 1 zdrojový.

Honza53 : Na začiatku môjho postu píšem "Hneď prvý odkaz na Google:" - tým dávam iba najavo, aké triviálne jednoduché je do 5 sekúnd po dopísaní vyhľadávacieho dotazu (skôr ako napísanie príspevku na fórum) nájsť kostru riešenia zistenia veľkosti adresára. Z nájdenej kostry si má človek zobrať iba čo potrebuje.

Pod touto kostrou som pridal kompletné riešenie celého "problému" s načítaním názvov a veľkostí všetkých podadresárov vo zvolenom adresári do Listboxu vo Forme. Object som vytvoril raz. Pole názvov a veľkosti sa načíta do Listboxu naraz. Nejaké kontroly a hlášky. Iste, dali by sa vypustiť glob. premenné, a procedúru urobiť v Initialize. Všetko má svoje "ale", potom treba myslieť že Initialize nejde exnúť pri nevybraní adresára (možno následne v OnActivate, prípadne v loadnutom Forme cez Button). Pozeral ste tú prílohu?

Má. Pokiaľ sa nechytím rozmerov, všetko funguje ako má. Akonáhle manuálne zmením veľkosť, prestane sa to zobrazovať správne, a začne sa to deformovať. Jednoduché riešenie : nastavte oblasť vyfotografovanej oblasti (alebo prepojenej), a NECHYTAJTE sa jej rozmerov. Nič nikam nenaťahujte. Ak sa toho nechytám, nedokážem nasimulovať tie deformácie. Funguje to aj s manuálnym skrývaním, aj s filtrom. Akonáhle zmením rozmer potiahnutím myšou, už sa to bude deformovať.

No tak podľa mňa to chce iný popis a inú prílohu.
Váhy tam nevidím 0,5 a 0,3 ale 0,452 a 0,291. Rozloženie 50%:50%. Čo je "Kod nový" nesúvisí. Ale "Vyr.kod1" je udávaný v % ? Čo potrebujete v A6:B6 vypočítať ?


Strana:  1 ... « předchozí  144 145 146 147 148 149 150 151 152   další » ... 286

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