Avatar billede kavlar Novice
28. april 2005 - 10:50 Der er 8 kommentarer og
1 løsning

Findes, eller kan man lave en max.hvis funktion?

Er der nogen, som evt kan hjælpe mig med en max.hvis(område;kriterie;maxområde) som fungerer på samme måde som sum.hvis funktionen. Jeg tror ikke den findes. Men da jeg ikke er skrap til VBA endnu, behøver jeg nok lidt hjælp til, hvordan man laver funktionen.
Avatar billede martin_moth Mester
28. april 2005 - 12:48 #1
Taler du om Excel?
Avatar billede sjh Nybegynder
28. april 2005 - 12:51 #2
kan du ikke bruge IIf??

  ' = IIf(Expression, TruePart, FalsePart)
  'Hvis 1 er mindre end 2 (1 < 2)
  MsgBox IIf(1 < 2, "Ja det passer", "Nej det passer ikke")
Avatar billede kavlar Novice
28. april 2005 - 13:15 #3
Ja, undkyld! Det er i Excel
Avatar billede stefanfuglsang Juniormester
28. april 2005 - 15:14 #4
Har ikke noget bud på funktionen, men man kan løse det i arket med en ekstra kolonne
(men det ønsker du muligvis ikke):
Nedenfor er A-kolonnen udvalgsparametren, B er værdierne , og C er betingelserne,
der giver 0 eller værdien fra B, afhængig af betingelsen
A:      B:      C:
Index    Værdi    Betingelse
1    10    =IF(A2<5;B2;0)
2    20    =IF(A3<5;B3;0)
3    30    =IF(A4<5;B4;0)
4    40    =IF(A5<5;B5;0)
5    50    =IF(A6<5;B6;0)
6    60    =IF(A7<5;B7;0)
7    70    =IF(A8<5;B8;0)
        =MAX(C2:C8)
Avatar billede kabbak Professor
28. april 2005 - 15:26 #5
Public Static Function MAKS_Hvis(Kriterie, Kriterieområde As Range, MaksOmråde As Range)
Dim V As Double
D = 0
For Each C In Kriterieområde
If C.Value = Kriterie Then
If Cells(C.Row, MaksOmråde.Column).Value > D Then D = Cells(C.Row, MaksOmråde.Column).Value
End If
Next
MAKS_Hvis = D
End Function

kun en kolonne i hvert område
Avatar billede kabbak Professor
28. april 2005 - 15:28 #6
Public Function MAKS_Hvis(Kriterie, Kriterieområde As Range, MaksOmråde As Range)
Dim V As Double
D = 0
For Each C In Kriterieområde
If C.Value = Kriterie Then
If Cells(C.Row, MaksOmråde.Column).Value > D Then D = Cells(C.Row, MaksOmråde.Column).Value
End If
Next
MAKS_Hvis = D
End Function

kun en kolonne i hvert område
Avatar billede stefanfuglsang Juniormester
28. april 2005 - 15:48 #7
Kabbak - din funktion forudsætter, at kriteriet er "="?
mit bud, er ikke helt færdigtestet:
=maxif(kriterieområde, område hvor max skal findes, betingelse)

Function MaxIf(rng1 As Range, target As Range, condition As String)
    Dim rng As Range
    Dim max As Double
    Const nomax = -99999999999#
    max = nomax
    For Each rng In rng1
            If Application.WorksheetFunction.CountIf(rng, condition) = 1 Then
                If target.Rows(rng.Row - rng1(1).Row + 1) > max Then
                    max = target.Rows(rng.Row - rng1(1).Row + 1)
                End If
            End If
    Next
    MaxIf = max
End Function
Avatar billede bak Forsker
28. april 2005 - 22:50 #8
Som arrayformel:

=MAKS((Område=Kriterie)*(Maxområde))
ex.
=MAKS((A3:A99="Peter")*(B3:B99))

Formlen vil finde den maximale værdi i B3:B99, hvor der i Kolonne A står "Peter"
Formlen indtastes som en array-formel. Dette betyder at indtastning afsluttes med ctrl-shift-enter istedet for bare enter. Formlen får så automatisk tuborgklammer {} omkring, som tegn på at det er en array-formel.
Avatar billede bak Forsker
04. maj 2005 - 17:34 #9
Tilbagemeldinger er altid rart :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester