< návrat zpět

MS Excel


Téma: VBA výpočet práce v noci rss

Zaslal/a 17.6.2014 16:45

Ahoj potřeboval bych poradit. Rád bych vytvořil pomocí VBA funkci, která mi vypočítá kolik hodin člověk odpracoval v noci, pokud budu brát noc od 22:00 do 6:00. Mám vzoreček ale nevím jak nahradit FUNKCE MIN A MAX, které nejdou použít ve VBA. Pokud by to někdo už měl udělané čistě jen za pomocí VBA, byl bych rád kdyby se podělil. Jo a nechci to řešit pomocí vložit vzorec. VBA funkce by měla brát dva parametry jako A1 začátek práce B1 konec práce.

vzorec je:
=KDYŽ(A($D18<>"";NEBO($D18<0,25;$E18>0,92));MAX(MIN(KDYŽ($E18<$D18;1;$E18);0,25)-MAX($D18;0);0)+MAX(MIN(KDYŽ($E18<$D18;1;$E18);1)-MAX($D18;0,916666666666667);0)+MAX(MIN(KDYŽ($E18<$D18;$E18;0);0,25);0)+MAX(MIN(KDYŽ($E18<$D18;$E18;0);1)-0,916666666666667;0);"")

Příklad:
A1 = 0:00 B1 = 23:00 v C1 bude výsledek 7:00.
Všem díky za nápady.

Zaslat odpověď >

icon #020017
avatar
...FUNKCE MIN A MAX, které nejdou použít ve VBA
Prečo by nešli?citovat
#020057
avatar

AL napsal/a:

...FUNKCE MIN A MAX, které nejdou použít ve VBA
Prečo by nešli?


Vytvořil jsem si jednoduchou funkci a v ní se snažil použít funkci MAX a vyhodilo mi to chybu, že nezná funkci MAX tak proto. Můžeš mi sem teda hodit příklad vlastní VBA funkce ve které použiješ funkci MAX nebo MIN?citovat
#020058
avatar
Zřejmě je jenom špatně voláš...
P.

Př.:Application.WorksheetFunction.Min(myRange)
Application.WorksheetFunction.Max(myRange)
citovat
#020070
avatar

Pavlus napsal/a:

Zřejmě je jenom špatně voláš...
P.

Př.:Application.WorksheetFunction.Min(myRange)
Application.WorksheetFunction.Max(myRange)


Pořád mi to nějak nejde. Může mi teda někdo poslat jak zapsat toto:

MAX(MIN(KDYŽ($E17<$D17;1;$E17);0,25)-MAX($D17;0);0)

všem díky za radu. :)citovat
#020071
avatar
Zápis toho tvého vzorce by mohl vypadat nějak takto:Range("C1") = WorksheetFunction.Max(WorksheetFunction.Min(IIf(Range("B1") < Range("A1"), 1, Range("B1")), 0.25) - WorksheetFunction.Max(Range("A1"), 0), 0)
Ale vzhledem k tomu, že není funkční mohl bys použít např. v Modulu tuto Funkci:Function NOCNI(nDatA As Double, nDatB As Double)
Dim nCasA As Double, nCasB As Double
nDatA = nDatA + 1 / 12
nCasA = ((nDatA + (nDatA > 1)) < 1 / 3) * -(nDatA + (nDatA > 1))
If nCasA > 0 Then nCasA = 1 / 3 - nCasA
nDatB = nDatB + 1 / 12
nCasB = ((nDatB + (nDatB > 1)) < 1 / 3) * -(nDatB + (nDatB > 1))
NOCNI = Abs(nCasA + nCasB)
End Function

Do Tab si dej vzorec:
=KDYŽ(A(JE.ČISLO(RC1);JE.ČISLO(RC2));NOCNI(RC1;RC2);"")citovat
#020072
avatar
Díky kp57 ta funkce NOCNI funguje dokonale. To je přesně co jsem potřeboval.

Díky moc a snad to pomůže i ostatním kdo to budou potřebovat.citovat

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