@marjankaj
cool :)
malá poznámka - nie je nutné prevádzať na text, funguje i v tvare:
=SUBSTITUTE(SUBSTITUTE(SUMPRODUCT(IF(A1:A10="vybráno";10^(10-ROW(A1:A10))));1;"A");0;"N")
ale to je len malý detail a ten vzorec je inak výborný
@marjankaj:
špatne,výsledkom má byť kombinácia A a N v dĺžke 10 znakov..
Marty: pokiaľ nechceš Excel vyložene znásilňovať formou povolenia cyklických odkazov a podobných zverstiev a zároveň nechceš pomocné bunky, tak ako ďalšia možnosť prichádza do úvahy UDF vo VBA. Je to funkcia na pár riadkov, záleží, či to stojí za trochu námahy (a v tom prípade musíš v súbore povoliť makrá).
Bohužiaľ, funkcia CONCATENATE nie je úplne vhodne napísaná, keby dokázala pracovať s oblasťami, tak by sa s ňou dalo kúzliť, v aktuálnej podobe je dosť bezzubá a trochu zbytočná.
@Marty:
dva mínusy (anglicky double unary) konvertujú (podobne ako funkcia N) logickú PRAVDU/NEPRAVDU na binárnu hodnotu 1/0, ktorú je možné použiť potom ako argument pre sumu (funkcia SUM totiž nedokáže spočítať hodnoty PRAVDA, NEPRAVDA, čiže najprv je nutná uvedená konverzia na 1 a 0). Pre rýchlejšie pochopenie skús do bunky zapísať PRAVDA (prípadne, u anglickej verzie TRUE) a do inej bunky --PRAVDA. V druhom prípade sa v bunke objaví 1.
Ten druhý odstavec chápeš správne, vzorec určí abecedné poradie vyjadrené poradovým číslom (to bolo trochu asi odbočenie od Tvojho pôvodného zadania, ničmenej, asi sa to dá pri Tvojom probléme použiť).
K tretiemu odstavcu - nič také, ako suma pre text v tvare, aký si načrtol, asi neexistuje. Ničmenej, dá sa to obísť reťazením:
V B1 zapíš: =KDYŽ(A1="vybráno";"A";"N")
Do B2 zapíš: =B1&KDYŽ(A2="vybráno";"A";"N") a skopíruj do B3-B10.
V B10 budeš mať výsledok.
Na prvý pohľad sa mi zdá, že chyba je v:
"TEXT; & cesta & \programy gordic\datové soubory\KOFF0001.TXT", Destination _
nemalo by tam byť náhodou:
"TEXT;" & cesta & "\programy gordic\datové soubory\KOFF0001.TXT", Destination _
Ja si bude stáť za svojimi číslami do doby, než Vy upresníte, čo hľadáte. Vysvetlím druhé číslo 11,6 voči Vami očakávaným 20%. Sama zmieňujete, že chcete odchýlky vážiť. Takže v 5 prípadoch z 5 sa skutočnosť rovná očakávaniu. Vo všetkých ostatných prípadoch sa skutočnosť líši od očakávania. Počet všetkých prípadov (očakávaných) je 43. 5/43=11,6%.
Rozklad prvej hodnoty 32,6% popíšem na prípade Tužiek v prvom Šuplíku: odchýlka je 20% na báze 10 (očakávaný počet). Tých 10 beriem ako váhu pre základ váženej odchýlky.
Váha 2. riadku je 5 pri odchýlke 0%
Váha 3. riadku je 5 pri odchýlke 40%
atd.
Úhrn váh (báz), činí 43, toto číslo predstavuje deliteľa v zlomku.
Povedzme, že hodnoty budú v oblasti A1:A3
súčet 2 najväčších získaš ako:
=sum(A1:A3)-min(A1:A3)
prípadne ako:
=MAX(A1:A3)+LARGE(A1:A3;2)
eventuálne ako:
=LARGE(A1:A3;1)+LARGE(A1:A3;2)
Povedzme, že očakávaný počet je v stĺpci C a skutočný v stĺpci D.
Priemerná odchýlka (pozor, nie štandardná odchýlka ako je definovaná v štatistike) skutočnosti voči očakávaniu:
=SUM(ABS(D2:D6-C2:C6))/SUM(C2:C6)
t.j. 32,6%
Pomer prípadov kedy skutočnosť sa rovná očakávaniu:
=SUM(C2:C6*(C2:C6=D2:D6))/SUM(C2:C6)
t.j. 11,6%
Oboje zadané ako maticový vzorec
no, mne sa rozsvietilo, ako hovorím, po tom, čo som uvidel ten obrázok na Excelplus.NET a následne som si spomenul že texty sa takto dajú vyhodnotiť
@marjankaj: on ma eLCHa namotivoval tým svojim obrázkom, som si hovoril, že to musí byť nejaká trivialita
mimochodom, modifikácia Tvojho riešenia na odchytenie duplicít do nematicovej formy by bola:
=COUNTIF(A$1:A$100;"<"&A1)+COUNTIF(A$1:A1;A1)
už to mám - poradie reťazcov sa dá zistiť nasledovne:
povedzme, že chcem vyhodnotiť abecedné poradie reťazcov v oblasti A1:A100
poradie budem zapisovať do stĺpca B, do bunky B1 zapíšem maticový vzorec: =SUM(--(A1>$A$1:$A$100))+1
skopírujem do oblasti B2:B100, výsledok je poradie v abecednom radení od A do Z
kto má odpor k maticovým vzorcom, môže použiť:
=COUNTIF($A$1:$A$100; "<="&A1) pre B1 a skopírovať dolu
na ten Excelplus.NET to vložím, akonáhle dostanem prístup..
Skús dať na začiatok
application.screenupdating=false
a na koniec
application.screenupdating=true
Páni, len poznámka: RANK určuje poradie člena v range , na výber x-tého člena v range je vhodná SMALL alebo LARGE. Prevod textu na číselnú hodnotu by som sa osobne snažil riešiť asi cez nejakú prevodníkovú tabuľku, prípadne pomocou fc CODE a MID, ale je to opruz a nejaký čas by to vzalo.
Skús to nahradiť nasledujúcim:Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets("Deník").Activate
Rows("1:6000").EntireRow.Hidden = False
Columns("B:E").Select
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("C2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("B1:E6000")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
mám ale podozrenie, že uvedeným to nebude, i to pôvodné makro beží u mňa odhadom cca 2 sekundy
@eLCHa: to vyzera naozaj vkusne, velka poklona :)
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.