@MirekCz: jj, presne o tom som hovoril, ale musíš vyskúšať, či je to aplikovateľné.
Každopádne, link ukladám, aby som to zas nemusel hľadať..
eLCHa napsal/a:
@AL
Evaluate je fajn, zrovna nedávno jsem ji využil a vlastně ji používáte i vy (zápis [A1] místo Range("A1").value
hm, a že by si sem dal vzor? No, ale prosíš pekne, tak tu máš nástrel. Najprv musíš odomknúť oblasť buniek, v ktorej to chceš aplikovať, potom zamknúť list (stačí zamknúť, bez hesla):
Do kódového okna listu, v ktorom to chceš používať, vlož nasledujúci kód (a uprav si v ňom oblasť, pre ktorú to chceš aplikovať):Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyRange As Range, Isect As Range
Set MyRange = [A1:M100] 'tu si urci oblast, v ktorej chces to zamykanie uplatnit
Set Isect = Intersect(MyRange, Target)
If Not Isect Is Nothing Then
ActiveSheet.Unprotect
If Target.Value <> "" Then
Isect.EntireColumn.Locked = True
End If
ActiveSheet.Protect
End If
Set MyRange = Nothing
Set Isect = Nothing
End Sub
cez udalosť Worksheet_Change, aby sa to necyklilo, tak budeš musieť asi ešte zamedziť spúšťaniu udalostí cez EnableEvents = False
Mno, musím sa Pavlusa trochu zastať, páč to jeho riešenie viacmenej funguje...
Ja na rozdiel od Opičáka zadaniu asi rozumiem, ale riešenie na úrovni excel bez VBA nepoznám.
Tuším, že by to mohlo ísť cez pomenované vzorce, možno s funkciou Evaluate, ale v tej oblasti dosť tápam.
Určite by to šlo prostr. VBA, kde by si si tie jednotlivé varianty (v príklade tie 3 funkcie), zapísal do nejakého poľa, trebárs, a z neho potom vyberal cez select case...
Súhlasím ale s Opičákom v tom, že spôsob, ktorý volíš, je v každom prípade dosť krkolomný.
Uprav si stĺpec s číslom zásielky tak, že č. zásielky doplníš do každého riadku:
F5-special-blank cells
do takto vybraných zapíšeš =
šípka nahor
ctrl+enter
ďalej je to brnkačka, pozri sa na riešenie v prílohe
Funkcia CONVERT
v starších verziách Excelu budeš potrebovať doinštalovať doplnok Analysis ToolPak.
No, úplne najjednoduchšie: na tom druhom liste riadiť prostredníctvom hodnoty checkboxu vlastnosť visible toho-ktorého obrázku.
@Elcha: kde bude pozice první nenulové hodnoty ve sloupci variabilní.
njn, ale toto nutne neznamená, že data nezačínajú na riadku 1, chápem to tak, že na riadku 1 môže byť nula a prvá nenulová hodnota inde...
@Elcha: "Pokud oblast nezačíná na řádku 1, tak to vypadá, že vám to nepočítá dobře"
jj, ale v zadaní bolo, že sa týka celých stĺpcov, t.j. od riadku 1.. Každopádne, to sa dá ľahko upraviť, pokiaľ oblasť nezačína na 1. riadku, všade, kde je vo vzorci Riadok, je potrebné odpočítať prvý riadok oblasti data a pripočítať 1.
Skôr ma trápi, že pokiaľ tam sú prázdne bunky alebo nenumerické hodnoty, tak to nepočíta správne, takže vzorec by po zapracovaní uvedených eventualít znovu trochu nabobtnal.
@Opičák: s deliteľom samozrejme pravda, som to prekombinoval trochu
Inak ale, snažil som sa odstrániť volatilné funkcie, preto Index, nie Posun, tým pádom je môj vzorec dlhší, než tie Vaše..
A nakoľko mi v predošlých veziách vadila prítomnosť volatilných funkcií, tak som sa hecol a tu je výsledný pokus, mám za to, že už pomerne príjemný na používanie:
=SUMA(INDEX(Data;LARGE((Data<>0)*ŘÁDEK(Data);COUNTIF(Data;"<>0"))):INDEX(Data;LARGE((Data<>0)*ŘÁDEK(Data);COUNTIF(Data;"<>0")-4)))
/
COUNTIF(INDEX(Data;LARGE((Data<>0)*ŘÁDEK(Data);COUNTIF(Data;"<>0"))):INDEX(Data;LARGE((Data<>0)*ŘÁDEK(Data);COUNTIF(Data;"<>0")-4));"<>0")
Vlastne, zjednodušiť sa to dá a dokonca do už celkom udržiavateľného tvaru:
=SUMA(NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0"));SLOUPEC(Data))&":"&ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-4);SLOUPEC(Data))))
/
COUNTIF(NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0"));SLOUPEC(Data))&":"&ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-4);SLOUPEC(Data)));"<>0")
-4 znamená priemer z piatich
-5 by bol priemer zo šiestich atd
(opäť maticový vzorec)
@Opičák:Jistě přijde někdo s "jednobuněčným" řešením.
Tak v tomto prípade už som bol dosť na pochybách, či sa to dá dostať do jednej bunky. Dá, i keď využiteľnosť je prinajmenšom diskutabilná:
=PRŮMĚR(NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0"));SLOUPEC(Data)));
NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-1);SLOUPEC(Data)));
NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-2);SLOUPEC(Data)));
NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-3);SLOUPEC(Data)));
NEPŘÍMÝ.ODKAZ(ODKAZ(LARGE(((Data<>0)*ŘÁDEK(Data));COUNTIF(Data;"<>0")-4);SLOUPEC(Data))))
pochopiteľne, maticovo
cez funkcie Index a Column (Stĺpec), v podstate niečo na spôsob =IF(ISNUMBER(INDEX(Sheet1!$B$24:$B$100; COLUMN()));INDEX(Sheet1!$B$24:$B$100; COLUMN());"" )
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.