Vsak hej.
1. Naimportuje data.
2. Refreshne Query table (refresh uz moze byt sucast Vba scriptu)
3. Vo Vba vyhodnoti cez Match(BunkaVstlpciA,zoznamZqueryTable,0) poradie, to scriptom rovno zapise do BunkaVstlpciA
Predosly prispevok som doplnil, mozno si nepochopil, ako som to myslel s poradim argumentov u Match..
Jj, to by slo . Eventualne nie replace, ale do prazdnych rovno zapisat nulu.
Pomocou Match predsa urcim poziciu bunky zo stlpca A v zozname z Query table, v ktorej mam unikatne hodnoty uz zotriedene. Inymi slovami, match mi uz urci ziadane poradie hodnoty bunky v stlpci A.. Pisem uz z mobilu, lezim v posteli.
Ten unikatny zoznam z Query table bude druhym argumentom funkcie Match, prvym bude hodnota bunky zo stlpca A..
Pokial ale udalost nastane z dovodu nakopirovania hodnot napr. zo schranky, ktora bude obsahovat i obsah prazdnych buniek, tak cyklus asi nutny bude, pletiem sa?
Pekny kod.
MS Query zvlada Distinct i Order by, takze i cez MS Query by to asi bolo schodne..
Za pomoci MS Query vytvorit zotriedene unikatne hodnoty, potom vyuzit funkciu MATCH.
njn, si proste iný level :)
Pokiaľ by si ho chcel použiť vo VBA, tak cez Evaluate by to malo ísť, ale to asi vieš..
Trik na výpočet jedinečných hodnôt cez Sum(1/countif(oblast,oblast)) poznám už nejakú dobu z Walkenbachovej knižky. Vedel som, že to bude cesta, akurát som tam nedokázal zapracovať tú dodatočnú podmienku na Oblast<Bunka.
Cez VBA to nie je zložité. Šlo by napr.:
1. Skopírovať dáta
2. Odstrániť duplicity
3. Zotriediť
4. Následne využiť funkciu MATCH (pozvyhledat).
No, ale pokiaľ už máme vytvorený funkčný maticový vzorec, tak cez Evaluate, ako píšem úvodom:
Zadeklarovať si pole s počtom prvkov rovným počtu buniek, do ktorých sa ten výsledok má vložiť. Prvky poľa naplniť výsledkom toho maticového vzorca cez Evaluate. Následne to vyliať z poľa do stĺpca na liste.
Tak tomu hovorím pekný vzorec, Petře. Dá sa prípadne modifikovať:
=SUMA(1/(KDYŽ(Oblast<=Bunka;COUNTIF(Oblast;Oblast);9,999999999E+307)))
No vidíš, že to ide, keď sa chce :)
Makro trebárs takto:Sub Test()
[A2:D2].Copy
[A11:D11].Insert Shift:=xlDown
[A11] = [A11]
[C2].ClearContents
End Sub
Preco sa pytas na nieco, co staci vyskusat?
Overenie dát som nastavil v bunkách A2-A5.
nič na tom nie je, s trochou trpezlivosti to zvládneš
Asi len cez VBA
Sub test()
Dim myRng As Range
Set myRng = Selection.Cells(1, 1)
Debug.Print myRng.Height
Debug.Print myRng.RowHeight
Debug.Print myRng.WrapText
End Sub
Pokiaľ by si to chcel do vzorca, musel by si si napísať UDF.
No, riešenie písať zadarmo nebudem, ale skúsim naviesť.
Máš dobu OD - DO. (od - zahájenie, do - ukončenie).
1.Časy z poruchového lístku OD a DO upravíš na celé hodiny (neviem, ako to zaokrúhľujete).
2. Zistíš si, či je OD a DO v jednom dni, pokiaľ áno, tak doba riešenie je prostý rozdiel DO a OD. Je dobré si ešte strážiť, či sa časy OD a DO nachádzajú v pracovnej dobe, pokiaľ nie, tak OD a DO príslušne modifikuješ - posunieš na začiatok/koniec pracovnej doby, bude sa týkať B a C.
Ak OD a DO nie sú v rovnakom dni:
3. zistíš si dobu riešenia v prvom dni (datum OD do OD 24:00) a v poslednom dni (datum DO-1 24:00 do DO)
4. Zistíš počet celých dní (t.j. 0:00 až 24:00) medzi OD a DO - prostým rozdielom príslušných dátumov a časov, t.j. OD 24:00 a DO-1 24:00 v prípade kategórie A, v prípade kategórie B a C pomocou funkcie networkdays, a započítaš hodiny za tieto celé dni, v závislosti, či sa jedná o A (24 h) alebo B,C (10h)
5. Spočítaš sumu z bodu 3 a 4, eventuálne vezmeš hodnotu z bodu 2.
Takto získaný počet hodín porovnáš s požadovanou dobou podľa SLA v závislosti, či sa jedná o A, B, C.
Riešenie doporučujem rozfázovať do pomocných stĺpcov a keď budeš mať istotu, že to počíta správne, môžeš si to potom dať celé do jedného vzorca a medzivýpočtov sa zbaviť.
Uviesť si do profilu do znalostí: MS Office – Word, Excel, PowerPoint, Outlook – advanced a vytvoriť uvedenú tabuľku, tomu hovorím odvaha :)
Asi by bolo dobré v prvom rade zamyslieť sa nad štruktúrou vstupných dát, tam by som osobne začal ja. Asi nepredpokladáš, že niekto bude lúštiť, čo potrebuješ spočítať, z prílohy, z ktorej to nie je úplne jasné. Takže, chce to prílohu, ktorá dáva zmysel (je možné sa v nej orientovať) a trochu menej vágny popis problému. Hodne pomáha, pokiaľ človek zabudne na excel, ale popíše postup, čo potrebuje spočítať, v prípade, že by mal k dispozícii iba papier a tužku..
Nedávno tu niekto riešil spotrebu hodín (elektriny) v nočnom a dennom tarife, to by si mohla pre inšpiráciu, ako na to, asi použiť: http://wall.cz/index.php?m=topic&id=34403#post-34412. Ty nebudeš riešiť dobu nočného tarifu, ale dobu, ktorá sa nezapočítava do reakčnej doby (off-work hodiny, sviatky a víkendy).
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.