Avatar billede Klaus123 Mester
26. juni 2013 - 11:34 Der er 6 kommentarer og
1 løsning

Finde rækkenr på mindste værdi i vba

Hej

I VBA har jeg en array med en kolonne. Jeg skal have fundet ud af i hvilket rækkenr det mindste tal står.

Venlig hilsen

Klaus
Avatar billede finb Ekspert
26. juni 2013 - 11:43 #1
Tilret dette:

KolMIN=999999
huskRowNumber

for RowNumber 1 to AntalRækkerIalt
  if RowNumber(HELTAL) < KolMIN then
    KolMIN = RowNumber(HELTAL).value
    huskRowNumber = HELTAL
  endif
NeXT

msgbox KolMIN & vbcrlf & huskRowNumber
Avatar billede Klaus123 Mester
26. juni 2013 - 12:21 #2
Hej

Jeg kan ikke få det til at virke. Jeg er nybegynder i VBA

Mit array hedder larray og er variant
Det har g antal rækker (1001)

----------------------------
Sub Findmindste()

'Definition af variable

Dim x As Variant
Dim y As Variant
Dim g As Long
Dim l As Variant
Dim larray As Variant



x = Range("C2").Value
y = Range("C3").Value
g = Application.WorksheetFunction.CountA(Worksheets("System1").Range("A:A"))
ReDim larray(1 To g)

For i = 1 To g

larray(i) = ((Abs(Sheets("System1").Cells(i, 2) * 10 ^ 3 - x)) ^ 2 + (Abs(Sheets("System1").Cells(i, 3) * 10 ^ 3 - y)) ^ 2) ^ (1 / 2)

Next

l = Application.WorksheetFunction.Min(larray)
Cells(4, 3) = l
----------------------------
Avatar billede supertekst Ekspert
26. juni 2013 - 13:56 #3
Er den mindste værdi entydig - forekommer kun en gang?
Avatar billede Klaus123 Mester
26. juni 2013 - 16:33 #4
Ja

Men med decimaler, hvis det har nogen betydning
Avatar billede supertekst Ekspert
26. juni 2013 - 17:23 #5
Hej - prøv at se om dette kan anvendes:

Sub Findmindste()

'Definition af variable

Dim x As Variant
Dim y As Variant
Dim g As Long
Dim l As Variant
Dim larray As Variant
Dim miniVærdi As Variant, miniRæk As Long

    miniVærdi = ""
    miniRæk = 0
   
    x = Range("C2").Value
    y = Range("C3").Value
    g = Application.WorksheetFunction.CountA(Worksheets("System1").Range("A:A"))
    ReDim larray(1 To g)

    For i = 1 To g
        larray(i) = ((Abs(Sheets("System1").Cells(i, 2) * 10 ^ 3 - x)) ^ 2 + (Abs(Sheets("System1").Cells(i, 3) * 10 ^ 3 - y)) ^ 2) ^ (1 / 2)
       
        If miniVærdi = "" Then
            miniVærdi = larray(i)
            miniRæk = i
        Else
            If larray(i) < miniVærdi Then
                miniVærdi = larray(i)
                miniRæk = i
            End If
        End If
    Next i

    Cells(4, 3) = miniVærdi
    Cells(5, 3) = miniRæk
End Sub
Avatar billede Klaus123 Mester
27. juni 2013 - 07:13 #6
Hej
Det virker. Tak skal du have.
Lægger du et svar
Avatar billede supertekst Ekspert
27. juni 2013 - 08:23 #7
Fint og selv tak
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

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