• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

find + VBA

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
dag experts :-)

ik heb (weer maar eens- een probleempje..)

ik zoek een code te maken dit het volgende doet:

de code moet zoeken in een range genaamd "data" en per rij in de range "data" (met name manager toegevoegd)
moet de code zoeken naar:

1) de minimum waarde, 2) de maximum waarde, 3) de grootste absolute waarde uit die rij
er is ook een vrij te invullen cel C4 , de rol van die cel komt zo meteen

De keuze 1, 2 of 3 hangt van de gebruiker af.. ik heb al een cel (B1) waar de gebruiker in geeft met een keuzelijstje 1: "minimum waarde" , 2: "maximum waarde" , 3 "beiden".

Excel moet dus zoeken per rij naar ofwel 1) de minimum waarde, 2) de maximum in die rij of 3) de grootste absolute waarde. Nu komt de cel C4 parten spelen: cel C4 duidt aan vanaf welke waarde excel moet zoeken.. dus als de gebruiker 0 in geeft, dan verandert er niks,maar als de cel C4 10 aangeeft en keuze optie 1 (zoeken naar max),en in die rij staat enkel 9 als maximum, dan moet excel niets teruggeven en op de 2de rij beginnen zoeken.. (die keuzecel B1 is gelinkt aan B2, dus daar staat dan 1, 2, of 3 in)

ik zou natuurlijk met verschillende subs kunnen werken die dan zoekt naar Min, Max of de grootste absolute waarde per rij.. maar dit kan volgens mij eenvoudiger.. daarom vraag ik jullie raad :)


is het ongeveer duideiljk? anders geef je mr een reply!

in bijlage de voorbeeldfile , zonder de code aangezien mjn code toch langs geen kanten werkt :-)


ik heb momenteel deze code, maar dat helpt me niet verder :( iemand met tips?


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D1:D4")) Is Nothing Then ' [COLOR="Red"]in D1: D4 staan enkeel paramaters die vn belang zijn later....[/COLOR]

    Set DT = Range("data").Find([COLOR="red"] hier zou iets moeten komen dat zoekt naar een max, min of naar de grootste abs waarde 
afhankelijk vn de cel B4 denk ik?[/COLOR]Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole)
[COLOR="red"]ik weet ook niet of hij nu rij per rij in deze range zoekt?[/COLOR]
   

vervolg code
 

Bijlagen

Laatst bewerkt:
iK heb dit al als code geprobeerd, maar deze code is ook niet waterdicht en zoekt enkel naar de maximum waarde per rij


Er staan in de range"data" percentages, dus hij moet naar percentages zoeken, mijn code werkt precies ook enkel voor gehele getallen
Code:
Sub test()
On Error Resume Next

For Each row In Range("data")
Set vondst = row.Find(Application.WorksheetFunction.Max(row.EntireRow), LookIn:=xlValues, lookat:=xlWhole)
MsgBox vondst [COLOR="Red"]dit staat er enkel in om te checken of code werkt[/COLOR]
Next
End Sub
 
Laatst bewerkt:
Als je je vraag in het Nederlands formuleert ben ik eerder geneigd hem te lezen dan wanneer je hem in het SMS schrijft.
Maak het een potentiële helper niet onnodig lastig.
 
Als je je vraag in het Nederlands formuleert ben ik eerder geneigd hem te lezen dan wanneer je hem in het SMS schrijft.
Maak het een potentiële helper niet onnodig lastig.

heb het aangepast.. ik begrijp u volledig.. excuses ..
 
De vraag is me niet helemaal duidelijk.

Bedoel je dat je de hoogste of de laagste waarde (of allebei) wilt t.o.v. bijv 5?

Wil je per regel kijken of het hele bereik?

Stel per regel:
Welk resultaat wil je?
Wil je dat een cel een kleur krijgt? Lijkt me niet handig als je met 600 x 160 gaat werken.
Of moeten de resultaten ergens terecht komen?

Stel het hele bereik:
Wil je direct naar de cellen of wil je het rijnummer en de waarde ?

Ik weet het het zijn veel vragen.

Gr

Patrick
 
De vraag is me niet helemaal duidelijk.

Bedoel je dat je de hoogste of de laagste waarde (of allebei) wilt t.o.v. bijv 5?

Wil je per regel kijken of het hele bereik?

Stel per regel:
Welk resultaat wil je?
Wil je dat een cel een kleur krijgt? Lijkt me niet handig als je met 600 x 160 gaat werken.
Of moeten de resultaten ergens terecht komen?

Stel het hele bereik:
Wil je direct naar de cellen of wil je het rijnummer en de waarde ?

Ik weet het het zijn veel vragen.

Gr

Patrick

Dag Patrick

hartelijk dank voor je respons! ik tracht het zo goed mogelijk uit te leggen


ik wil in een bepaalde range (stel range("Data") zoeken per rij naar

1) ofwel het maximum
2) ofwel de minimum waarde in die rij
3) ofwel naar de grootste absolute waarde (dus bv -5 en 7 dan "wint" 7, -7 en 5 dan wint -7)

=> dit zal afhangen van de keuze van de gebruiker , B2=1 betekent: zoek naar maximum per rij, B2=2 : zoek naar minimum per rij, B3=3 zoek naar de grootste absolute waarde

het vervolg zal als volgt zijn:

per gevonden waarde, zal er een range van 50 rijen voor en 10 rijen erna moeten gedefinieerd worden en die range moet naar een bepaald blad gekopieerd worden (maar zo ver ben ik nog niet :) )

dus stel er zijn 3 rijen, en stel ik wil zoeken naar een maximum dan zal ik 3 ranges van 50+10+1: 61 cellen naast elkaar gekopieerd willen hebben..

maar ik ben zo ver nog lang niet :-) ik zou eerst willen uitzoeken hoe ik VBA de extreme waarden al kan laten localiseren.. de ranges maken moet wel lukken nadien..


is het een beetje duidelijk?

ik zal even een vb maken,en ik post het hier binnen enkele minuten..

edit: bestand toegevoegd! :-) het voorbeeld bestand gaat gewoon uit van het feit dat je de waarde wil hebben en die ergens kopieren dus zonder die range errond.. maar dat had je al wel door I guess :) Ook had ik graag boven de gevonden waarde het 'label' (in dit geval A B of C) zodat ik nadien nog weet uit welke kolom het komt als er 1000 kolommen zijn :)
bedankt voor alle eventuele tips en moeite dat je hiervoor doet!!
 

Bijlagen

Laatst bewerkt:
misschien ook antwoorden op je vragen apart:
De vraag is me niet helemaal duidelijk.

Bedoel je dat je de hoogste of de laagste waarde (of allebei) wilt t.o.v. bijv 5?

Wil je per regel kijken of het hele bereik? per regel

Stel per regel:
Welk resultaat wil je? momenteel wil ik dat excel die gevonden waarde kopieert en zijn "label" (zie bijgevoegd voorbeeld) maar in de nabije toekomst zou ik rond elke gevonden waarde een range willen creëren van 50 rijen ervoor en 10 erna en die nadien kopieren
Wil je dat een cel een kleur krijgt? Lijkt me niet handig als je met 600 x 160 gaat werken.
Of moeten de resultaten ergens terecht komen? geen kleuren nodig

Stel het hele bereik:
Wil je direct naar de cellen of wil je het rijnummer en de waarde ?

Ik weet het het zijn veel vragen.

Gr

Patrick
 
Laatst bewerkt:
misschien ook antwoorden op je vragen apart:

ik ben al eens begonnen, ik probeer nu enkel om hem al de maximum te laten localiseren, beetje bij beetje

dit is mijn code hiervoor: (dit lukt echter momenteel nog niet)

Code:
Sub test()
For Each Row In Range("data")
For Each c In Row
Set m = Application.WorksheetFunction.Max(Row)
MsgBox m
Next
Next
End Sub
 
In de bijlage 3 kolommen waarin de resultaten voor min max en max(ABS).

formules
=Max(F2:J2)
=Min(F2:J2)
{=Max(ABS(F2:J2))} ctrl-shft-enter (want matrixformule)

de resulaten van deze kolommen kunnen eenvoudig eldersgeplatsworden met formules of VBA
 

Bijlagen

In de bijlage 3 kolommen waarin de resultaten voor min max en max(ABS).

formules
=Max(F2:J2)
=Min(F2:J2)
{=Max(ABS(F2:J2))} ctrl-shft-enter (want matrixformule)

de resulaten van deze kolommen kunnen eenvoudig eldersgeplatsworden met formules of VBA

bedankt! ik had ook al gedacht aan excel, maar het probleem is in feit dat de volgende stap die ik wil doen is rond die maxima of minima een range te creeëren.. dit zou mij wel lukken met indirect functie enz, maar dan moet ik excel (of vba) de locatie van de maxima of minima weten te bepalen..

en ik weet niet of dat mogelijk is met excel?
 
Laatst bewerkt:
bedankt! ik had ook al gedacht aan excel, maar het probleem is in feit dat de volgende stap die ik wil doen is rond die maxima of minima een range te creeëren.. dit zou mij wel lukken met indirect functie enz, maar dan moet ik excel (of vba) de locatie van de maxima of minima weten te bepalen..

en ik weet niet of dat mogelijk is met excel?

ik heb bv dit geprobeerd (om alvast het adres al te hebben, de rest kan ik met indirect wel en offset uitzoeken), maar helaas werkt het niet..

Code:
Sub test()


For i = 1 To Range("E:E").Rows.SpecialCells(xlCellTypeConstants).Count
For Each c In Range("F3:H7").Rows(i)
Z = Application.WorksheetFunction.Max(Range("F3:H7").Rows(i))
[COLOR="DarkRed"]MsgBox Z.Address [/COLOR]
next 
next

End Sub
 
'rond de minima en maxima een range creëeren'

????

Weet jij wat een range is in Excel ?
Heb je al eens een basiscursus Excel gedaan ?
Heb je een goed Excel-boek ?
 
'rond de minima en maxima een range creëeren'

????

Weet jij wat een range is in Excel ?
Heb je al eens een basiscursus Excel gedaan ?
Heb je een goed Excel-boek ?

ik weet maar al te goed wat een range is in excel...

ik vroeg mij simpelweg af hoe je excel de cel waar de minima en maxima zich bevinden kan laten bepalen..

edit: heb al iets gevonden met de match functie.. is nog niet helemaal wat ik wil, maar kan ik al mee verder

ps: ik vind je reactie wel een beetje overdreven snb, ik bedank je voor al de hulp dat je al hebt gegeven, maar om zo te reageren als iemand eens iets niet weet

pps: van mijn excel skills zou je nog eens enorm hard kunnen verschieten, toegegeven, mijn vba skills zijn misschien ver onder die van u, maar qua excel skills zal ik verre van onder doen.. maar bon, toch bedankt voor al je hulp tot nu toe al, ik apprecieer het enorm, maar het geeft je het recht niet om zo te reageren..

bedankt!
 
Laatst bewerkt:
De vraag is me niet helemaal duidelijk.

Bedoel je dat je de hoogste of de laagste waarde (of allebei) wilt t.o.v. bijv 5?

Wil je per regel kijken of het hele bereik?

Stel per regel:
Welk resultaat wil je?
Wil je dat een cel een kleur krijgt? Lijkt me niet handig als je met 600 x 160 gaat werken.
Of moeten de resultaten ergens terecht komen?

Stel het hele bereik:
Wil je direct naar de cellen of wil je het rijnummer en de waarde ?

Ik weet het het zijn veel vragen.

Gr

Patrick


beste Patrick,

Ik heb ondertusseen de locatie van elke min of max in elke rij kunnen bepalen. Weet u hoe ik nu in vba rond elke locatie een vaste range kan bepalen van 50 rijen ervoor en 10 rijen erna? Die zou ik vervolgens ergens willen plakken naast elkaar..
 
Bekijk bijlage Map1.xls

Hey Nobody,

Ik heb ff zitten kijken en heb in bijgaand bestand even een stuk code gezet om max, min en abs te bepalen.

Met CTRL + G open je in VBA het direct scherm en daarop zie je gelijk de resultaten.
Nu heb ik het gebouwd op basis van jouw sheet en op basis van je huidige range.. beginnend op e3 zeg maar. Ik kan me voorstellen dat je database op een tab staat. In de code heb ik dan aangegeven wat je moet veranderen.

De resultaten komen er nu goed uit. alleen nu het kopieren en plakken nog.

Ik loop nog tegen een paar dingen op.

Als je 6000 regels krijgt.... kan je maar 255 resultaten naast elkaar weergeven..(max aantal kolommen in excel). Misschien kan je beter de resultaten onder ellkaar zetten. voor de label zou ik het address gebruiken. (zie code)

Nu het 50 regels verhaal. Kan je 1 output voorbeeld maken zoals het eruit moet komen...
ennuh als je in regel 5 zit kan je niet de 50 voorgaande pakken.. hoe ga je daar dan mee om.

Ik hoop niet dat je het erg vindt dat ik zoveel vragen stel. Ik ben nog niet zo heel lang bezig met VBA maar dit soort dingen vindt ik wel heel leuk om te doen.

Jammer trouwens dat ik niet overdag kan kijken.. dan konden we sneller schakelen.

Gr

Patrick
 
..........
maar qua excel skills zal ik verre van onder doen.....

bedankt!
:shocked: Je hebt het tegen snb hoor;)......Ik denk dat er hier weinig (of geen) mensen zijn die snb met Excel of VBA de baas zijn.

Succes met de oplossing van jouw vraag. Ik zal er ook ff naar kijken, als het zonder VBA/met formules kan dan wil ik best een poging wagen.
 
Bekijk bijlage 78063

Hey Nobody,

Ik heb ff zitten kijken en heb in bijgaand bestand even een stuk code gezet om max, min en abs te bepalen.

Met CTRL + G open je in VBA het direct scherm en daarop zie je gelijk de resultaten.
Nu heb ik het gebouwd op basis van jouw sheet en op basis van je huidige range.. beginnend op e3 zeg maar. Ik kan me voorstellen dat je database op een tab staat. In de code heb ik dan aangegeven wat je moet veranderen.

De resultaten komen er nu goed uit. alleen nu het kopieren en plakken nog.

Ik loop nog tegen een paar dingen op.

Als je 6000 regels krijgt.... kan je maar 255 resultaten naast elkaar weergeven..(max aantal kolommen in excel). Misschien kan je beter de resultaten onder ellkaar zetten. voor de label zou ik het address gebruiken. (zie code)

Nu het 50 regels verhaal. Kan je 1 output voorbeeld maken zoals het eruit moet komen...
ennuh als je in regel 5 zit kan je niet de 50 voorgaande pakken.. hoe ga je daar dan mee om.

Ik hoop niet dat je het erg vindt dat ik zoveel vragen stel. Ik ben nog niet zo heel lang bezig met VBA maar dit soort dingen vindt ik wel heel leuk om te doen.

Jammer trouwens dat ik niet overdag kan kijken.. dan konden we sneller schakelen.

Gr

Patrick


Patrick,

je bent onnoemelijk hard bedankt!! ik ben onder de indruk van je skills ondanks dat je zegt dat je nog maar een "beginner" bent.. ik ga aan de slag met jou sheet, maar ik zal ongetwijfeld binnen een paar dagen nog wat vragen hebben.. ik weet je te vinden dan ;-)

nogmaals bedankt!

ook bedankt aan al de rest die heeft meegeholpen! ik apprecieer de hulp enorm!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan