[VBA] Excel: minimum in range selecteren

Pagina: 1
Acties:
  • 1.285 views sinds 30-01-2008
  • Reageer

  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
Ik kom er maar niet uit, ik wil dus via VBA het volgende doen:

Ik heb een reeks met 12 waarden (1 rij, 12 kolommen, dus naast elkaar);
in de rij eronder staan getallen van 1 tot 12 (willekeurige volgorde).
Ik wil nu in VBA het nummer krijgen dat onder de cel met laagste waarde staat.

Hoe doe ik dit?

zeer bedankt alvast B)

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Je leest dus de waardes cel voor cel uit:
code:
1
cells.range("A1").value

Stop de waarde in een variable, en je kijkt of de waarde van een andere cell lager ligt, zo ja, onthou welke cel het is.
Ben je klaar, met controleren van de waardes, weet je dus welke cel het is, en ook welke cel daaronder zit.
De rest mag je zelf uitzoeken, want je hebt 0,0 aan code nog zelf gedaan.

Succes

Ey!! Macarena \o/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

Excel kent een SUM-functie, kent het niet ook MIN en MAX dan?

Anyway, VBA en Excel vallen onder Office, en Office hoort in Officesuites en -software. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ja hoor, excel kent min() en je kunt worksheetfunctions ook in vba gebruiken. Kijk eens onder F1. :) en lees Policy: Alle regels die op het forum gelden ajb een keertje door.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Black Piet
  • Registratie: April 2005
  • Niet online
Hoezo combineer je niet gewoon een horizontal lookup met eem max functie ingebouwd?

Hoef je niks in VB te maken....

Mooooooeeeee......


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 20-08 09:24

Maasluip

Kabbelend watertje

[deleted]

of je leest de hele post

[ Voor 84% gewijzigd door Maasluip op 09-03-2006 19:38 ]

Signatures zijn voor boomers.


Verwijderd

VLookup() || HLookup() met een Min() functie ingebouwd.

In vba weet ik neit maar gebruik de "macro", die produceer wat leuke vba-tjes voor je ;)

  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
Bedankt iedereen, het is gelukt met de Hlookup functie:

code:
1
2
Rmin = Application.WorksheetFunction.Min(Range("B3:M3"))
MRmin = Application.WorksheetFunction.HLookup(Rmin, Range("B3:M4"), 2, False)

  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
dacht ik...

het werkt blijkbaar niet met kommagetallen, dan krijg ik deze error.

code:
1
MRmin = Application.WorksheetFunction.HLookup(Rmin, Range("B3:M4"), 2, False)

werkt wel als Rmin 4 of 5 is en niet bij Rmin = 0,3

volgens mij heeft het iets met , of . als decimaal teken te maken..?
Rmin in de code vervangen door str(Rmin) lost het niet op

iemand?

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 19:54
code:
1
2
3
Dim Rmin as String
Rmin = Application.WorksheetFunction.Min(Range("B3:M3"))
MRmin = Application.WorksheetFunction.HLookup(Rmin, Range("B3:M4"), 2, False)

Zou wordt Rmin als platte tekst onthouden ipv als getal.

  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
is volgens mij hetzelfde als str(Rmin); en spijtig genoeg werkt het niet :'(

ik snap er niks van

  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
het wordt nog vreemder; het werkt kennelijk ook bij Rmin = 30,6 maar niet bij Rmin = 0,3 :? 8)7

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

juist als string zal het niet werken. Check even de waarde van rmin. Blijkbaar wordt rmin geconverteered op een verkeerde manier waardoor Hlookup hem niet meer kan vinden.
Hoe heb je rmin gedimensioneerd?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
strange; als ik:
code:
1
Dim Tmin, Tmax, Rmin, H As Single
doe, dan werkt het wel
en als ik
code:
1
Dim Tmin, Tmax, H, Rmin As Single
doe, dan werkt het niet meer ??

probleem is dus blijkbaar opgelost als ik het eerste gebruik; alleen snap ik niet waarom?

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 15:28
code:
1
2
3
4
5
6
7
8
9
10
11
12
Dim ilaagstewaarde As Integer, i As Integer

i = 1
  While Worksheets(1).Cells(1, i).Value <> ""
    If i = 1 Then
      ilaagstewaarde = i
    ElseIf Worksheets(1).Cells(1, i).Value < Worksheets(1).Cells(1, ilaagstewaarde).Value Then
      ilaagstewaarde = i
    End If
    i = i + 1
  Wend
  MsgBox "Waarde onder laagste waarde: " & Worksheets(1).Cells(2, ilaagstewaarde).Value, vbInformation, "Info"


Dit zou moeten werken

Met deze waardes:
code:
1
2
0,8 0,5 0,1 5,5 9   0,3
2   5   4   7   6   8


Krijg ik netjes 4 terug als de waarde onder de laagste waarde.

[ Voor 28% gewijzigd door urk_forever op 10-03-2006 10:51 ]

Hail to the king baby!


  • rulus
  • Registratie: November 2005
  • Laatst online: 19-09-2025
en dit werkt inderdaad, verschikkelijk bedankt!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 15:28
You're welcome ;)

Hail to the king baby!

Pagina: 1