< návrat zpět

MS Excel


Téma: Funkce pro maximální hodnotu na listech rss

Zaslal/a 23.7.2014 13:22

Jde udělat vlastní funkce podobně jako sumapřeslisty ?Function SumaPresListy(cell)
Dim dblVal As Double
Dim strAdr As String
Dim Wks As Object
Application.Volatile
strAdr = cell.Range("A1").Address
dblVal = 0
For Each Wks In cell.Parent.Parent.Worksheets
If Wks.Name = cell.Parent.Name And _
strAdr = Application.Caller.Address Then
'zabránění cyklického odkazu tj. jesli kontrolovaná buňka _
není ta, která obsahuje funkci. V takovém případě je vynechána
Else
If WorksheetFunction.IsNumber(Wks.Range(strAdr)) Then
dblVal = dblVal + Wks.Range(strAdr).Value
End If
End If
Next Wks
SumaPresListy = dblVal
End Function,

a to na zjištění maximální hodnoty některé buňky či oblasti(listy mají pojmenování 1 až 100, přičemž tam jsou navíc i nečíselné názvy - třeba 29_1,29_2 a tyhle to může přeskočit, protože je to vlastně list 29, který už existuje)Listy začínají od 1 a postupně se přidávají. Díky M.

Zaslat odpověď >

icon #020658
avatar
Isteže ide. Pokiaľ porozumieš kódu, ktorý si sem nakopíroval, tak si ho dokážeš i modifikovať tak, aby miesto sumy vracal maximum.
Neviem ale, z akého dôvodu je nutné programovať užívateľskú funkciu tam, kde úplne postačuje jednoduchý 3D vzorec.citovat
#020659
avatar
Kdybych ho uměl modifikovat, tak sem nepíšu a udělám to. A 3D vzorec mi neříká vůbec nic. Poradíš lépe?citovat
icon #020662
avatar
Dovolím si otázku: K čomu ti je kód, ktorý nechápeš?
3D vzorec ti nehovorí nič, čo teda skúsiť: http://lmgtfy.com/?q=3D+formulas+excelcitovat
#020663
avatar
Kód, který nechápu, je mi k tomu, aby počítal, to co potřebuji. Díkycitovat
icon #020664
avatar
o.k., pokiaľ vedome žiadaš po niekom medvediu službu, tvoja vec, nemám s tým problém:Function MinPresListy(cell)
Dim dblVal
Dim strAdr As String
Dim Wks As Object
Application.Volatile
strAdr = cell.Range("A1").Address
dblVal = "neexistuje"
For Each Wks In cell.Parent.Parent.Worksheets
If Wks.Name = cell.Parent.Name And _
strAdr = Application.Caller.Address Then
'zabránìní cyklického odkazu tj. jesli kontrolovaná buòka _
není ta, která obsahuje funkci. V takovém pøípadì je vynechána
Else
If WorksheetFunction.IsNumber(Wks.Range(strAdr)) Then
If Wks.Range(strAdr) < dblVal Then dblVal = Wks.Range(strAdr)
End If
End If
Next Wks
MinPresListy = dblVal
End Function

Function MaxPresListy(cell)
Dim dblVal
Dim strAdr As String
Dim Wks As Object
Application.Volatile
strAdr = cell.Range("A1").Address
dblVal = "neexistuje"
For Each Wks In cell.Parent.Parent.Worksheets
If Wks.Name = cell.Parent.Name And _
strAdr = Application.Caller.Address Then
'zabránení cyklického odkazu tj. jesli kontrolovaná bunka _
není ta, která obsahuje funkci. V takovém prípade je vynechána
Else
If WorksheetFunction.IsNumber(Wks.Range(strAdr)) Then
If dblVal = "neexistuje" Then
dblVal = Wks.Range(strAdr)
ElseIf Wks.Range(strAdr) > dblVal Then dblVal = Wks.Range(strAdr)
End If
End If
End If
Next Wks
MaxPresListy = dblVal
End Function
Jedná sa o primitívnu modifikáciu tebou niekde získaného kódu (nič moc), tých 5 minút svojho času ti venovať môžem, viac po mne nežiadaj.citovat
#020669
avatar
Děkuji moc. Funguje to vůbec - přeložím - nefunguje to vůbec v EX2000,2003.citovat
icon #020674
avatar
Pokiaľ funguje tebou uvedená funkcia SumaPresListy, tak nevidím dôvod, prečo by nemali fungovať MaxPresListy a MinPresListy. Ani jeden nie je žiadny vrchol programátorského umenia, ty však nepotrebuješ kódu rozumieť, takže to je vlastne jedno, páč funkčné to je. Byť tebou, tak sa najprv pozriem na 3D vzorce.citovat
#020675
avatar
Suma přes listy normálně skvěle funguje, ale upravené maximum přes listy ne - hází error.
Příloha: png20675_bez-nazvu.png (53kB, staženo 15x)
20675_bez-nazvu.png
citovat
icon #020677
avatar
No, zdržím sa radšej komentára...
Odstráň z kódu prázdne riadky, konkrétne riadok medzi
If Wks.Name = cell.Parent.Name And _
a
strAdr = Application.Caller.Address Then
Ďalej medzi
'zabránení cyklického odkazu tj. jesli kontrolovaná bunka _
a
není ta, která obsahuje funkci. V takovém prípade je vynechána
Kontrolná otázka: tušíš, k čomu slúži znak "_", ktorému predchádza medzera (na konci riadku)? Ani omylom, viď? No nič, VBA rozumieť nepotrebuješ, nie je to povinnosť 7citovat
#020678
avatar
Ale trvalo to, než jsme se k tomu dopracovali. Pak už by to jelo - to je můj komentář. Suma zkopíruju, vložím a jede, maximum zkopíruju, vložím a nejede. A já tam bohužel chybu nenajdu.Až ja budem VBA majstrom.....Díkcitovat

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