Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  47 48 49 50 51 52 53 54 55   další » ... 122

Zdravím fanúškov KT a prosím o pomoc:

Potreboval by som v KT zobraziť rozdiel dvoch období, kedy každé z nich je zobrazené ako % of Row Total; nastavenie polí hodnôt som zachytil na printscreenoch na liste Pivot, kde sa nachádza KT.
Data som pre názornosť skopíroval na pomocny list, kde sú medzivýstupy z KT i výsledok, ktorý potrebujem získať. Ten by som však potreboval priamo v kontingenčke, bez medzikrokov.
Vzorový súbor prikladám a dúfam, že z neho bude jasné, o čo sa už pár hodín neúspešne snažím. Budem vďačný, pokiaľ na riešenie niekto príde a dá vedieť.

Díky, L.

@pepe
to samé, čo ty, som písal vo vlákne už 14.9.2013 17:37

Zmyslom môjho príspevku bolo poukázať na fakt, že radu požaduješ ty a niekto musí investovať na vyriešenie tvojho problému nejaký čas. A čas sú peniaze. Aby bola táto investícia menšia, je vždy vhodné vložiť excelovskú prílohu. Domnievam sa, že pokiaľ by riešiteľ požadoval platbu, tak to zadávateľovi docvakne.

@Alfan: Ty si zákazník a riešiteľovou povinnosťou je ti pomôcť, chápem to správne?
Takže prílohu, na ktorej problém nasimuluje a vyrieši, si má riešiteľ tvoriť sám na základe obrázku, ktorý si veľkoryso poskytol. Vlastne si tým riešiteľovi urobil službu, že si si dal prácu s vytvorením obrázku.
Fajn, som ochotný ti radiť na základe obrázkov; za čas, ktorý budem tráviť tvorením príloh, na ktorých problém nasimulujem a odladím, budem ale chcieť zaplatiť. Berieš?

Stačí tabuľku previesť na ExcelTable - klávesová skratka Ctrl+T

tak nakoniec úprava môjho pôvodného vzorca trvala asi 30 sekúnd.
Pôvodný vzorec v bunke F1:=INDEX($A$2:$A$51;MATCH(SMALL(ABS($B$2:$B$51-$C$1);ROW());ABS($B$2:$B$51-$C$1);0))
Nahraď vzorcom:=INDEX($A$2:$A$51;MATCH(SMALL(ABS($B$2:$B$51-$C$1)+ROW($B$2:$B$51)/100000000000;ROW());ABS($B$2:$B$51-$C$1)+ROW($B$2:$B$51)/100000000000;0))modifikovaný vzorec už nájde i rovnaké hodnoty. Samozrejme, treba opäť vložiť maticovo a deliteľ 100000000000 vhodne modifikovať v závislosti od rádu počtu riadkov. Pri počte riadkov do 100 stačí číslo 100000000000, pri počte riadkov do 1000 musí byť deliteľ o rád vyšší, t.j. 100000000000 atd.

.. k tomu, čo uvádza elninoslov, doplním akurát, že duplicity sa dajú ošetriť pomerne jednoduchou úpravou vzorca, pokiaľ budem mať chvíľu, tak sa na to pozriem, ale mal by si sa, Juraj, trochu posnažiť najprv sám. Samozrejme, niekto z kolegov to určite upraviť dokáže, aby to duplicity poriešilo.
Návod: pridať malú hodnotu k jednotlivým hodnotám tak, aby nevznikali duplicity, t.j. pridať niečo ako:
číslo riadku / deliteľ
kedy deliteľ musí byť dostatočne veľké číslo, v závislosti na počet hodnôt a ich rozsah. Funkciu MATCH potom aplikovať na takto modifikované hodnoty.
Sorry za chaotický popis, domnievam sa, že zopár ľudí aspoň tuší, o čom hovorím, na podrobnejšie vysvetlenie nemám zrovna moc času..

Na toto makro naozaj potrebné nie je, pozri do prílohy.

Na Windows 7 Enterprise a Excel Professional Plus 2010 toto funguje - cyklus prebehne 3x a pokaždé vytlačí 2 listy:Sub ExecutePrint1()
Dim x As Worksheet, y As Byte
For y = 1 To 3
For Each x In Sheets(Array("Sheet1", "Sheet3"))
x.PrintPreview ' x.printout
Next x
Next y
MsgBox "makro pokracuje"
End Sub
Obávam sa, že bez toho, aby som videl tvoj vzorový súbor s kódom, tak sa mi asi nebude chcieť premýšľať nad tým, kde by mohol byť u teba zádrhel.

Naozaj nechápem, prečo 3x po sebe potrebuješ vykonať jednu a tú samú akciu, t.j. vybrať 2 vždy tie isté listy :(. Pokiaľ trváš na cykle, pozri sa na to, čo sem dal marjankaj. Obávam sa, že ja ti viac v tejto veci nedokážem pomôcť.

George, myslím, že nesprávne používaš termín cyklus.
Sheets(Array("Sheet1", "Sheet3")).Selectnie je cyklus. Makro najprv selektne vybrané listy (nejedná sa ale o cyklus) a následne zobrazí ich náhľad pred tlačou. Nič iné po ňom nechceš (žiadnu inú inštrukciu si doňho nenapísal) a tým pádom ani nič iné nerobí. Takže je to stále nepresne popísaný problém. Riešenie nájdeš v marjankajovom kóde - ten skutočne používa cyklus.

For má byť ukončené Next, čiže miesto x=x+1 by tam teoreticky, aby bola dodržaná syntax VBA, malo stáť Next x. Ale ani to nezaručí, že sa doberieš kýženého výsledku. Každopádne, makro takto napísaným cyklom prebehne korektne, je možné vidieť, že na konci sa zobrazí hláška "makro pokracuje". Sub ExecutePrint()
Dim x As Byte
For x = 1 To 3
Sheets(Array("Sheet1", "Sheet3")).Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Next x
MsgBox "makro pokracuje"
End Sub
Ako som ale zmienil, pravdepodobne to nie je to, čo chceš dosiahnuť, síce tuším, o čo sa snažíš, ale zrozumiteľné formulovanie problému ponechám na tebe.

Mám za to, že Palooo popisuje trochu iný prípad, než riešiš ty. Predpokladám, že ti ide o to, spúšťať nejaký kód (časť kódu) v závislosti na hodnote konkrétnej bunky, nejedná sa teda o udalosť, ale skutočne o podmienku (IF). Inštrukcia, volajúca časť kódu (v mojom prípade inú subrutinu), môže byť potom v tvare:If [C10]=100 Then Call IneMakroPredpokladám, že zápis je samovysvetľujúci: Spusti makro IneMakro v prípade, že bunka C10 (v aktívnom liste) má hodnotu 100.

Trebárs takto?Sub ExecutePrint()
Sheets(Array("Sheet1", "Sheet3")).Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
End Sub

Popisujem to, čo som dal do prílohy a týkalo sa to manuálneho nastavenia formátu.

Samozrejme, dá sa i programovo. V takom prípade stačí vybrať oblasť buniek, v ktorých sa má nastaviť daný formát, a do okna immediate vo VBE zapísať inštrukciu: Selection.NumberFormat = "General;""0"";0",následne potvrdiť v immediate klávesou ENTER


Strana:  1 ... « předchozí  47 48 49 50 51 52 53 54 55   další » ... 122

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