• 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.

waarden toekennen aan ongesorteerde rij getallen

Status
Niet open voor verdere reacties.

Xan der

Gebruiker
Lid geworden
1 dec 2009
Berichten
19
All,

Een vraagje dat volgens mij helemaal niet moeilijk is op te lossen maar als VBA-noob kom ik er even niet uit.

Ik heb een ongesorteerde kolom getallen in excell. Wat ik wil is dat in de kolom ernaast een waarde van de rangorde die het getal in de eerste kolom zou hebben als het wel gesorteerd is.

Anders gezegd: Stel kolom A1 tot A15 bevat een aantal getallen. Cell A3 is het grootste dan moet in B3, 10 komen te staan, A7 is het op een na grootste getal -> B7 wordt 9, etc etc de laagste vijf getallen worden 0.

Als twee getallen in A gelijk zijn mag in kolom B ook een gelijk getal komen te staan. Echter moet het volgende getal dan een stap overslaan.

Wie kan me om dit in VBA te realiseren?
Alvast bedankt!!
 
een soortgelijke vraag vind je hier

kijk daar eens of je hiermee tot een oplossing kunt komen.

anders is een voorbeeldbestandje (ontdaan van gevoelige info) gewenst.
 
Bedankt voor je reactie!

Je voorbeeld kan me wel op weg helpen maar ik heb het idee dat als ik het in Excel ga doen met de functie "rang" dat ik dan een veel te grote geneste "als" functie moet opzetten (als rang =1 dan 10 punten else als rang = 2 dan 9 punten etc etc etc t/m als rang = 17 dan...). Zo'n belachelijk lange functie kan niet de bedoeling zijn. :o

Ik heb een voorbeeld-bestand bijgevoegd waarin het nader uitgelegd wordt. Ik heb daar ook een button ingezet omdat het voor mijn gevoel makkelijk(er) was te doen met VBA. Als het echter gewoon simpel zonder VBA kan is dat ook welkom!!


EDIT:
Oeldere bedankt!! Je hebt me op een idee gebracht met de functie "rang" en daarmee heb ik het op kunnen lossen!!
Wat ik gedaan heb is met een simpele ALS RANG (oplopend) > 11 ; "0" ; 11-RANG (oplopend). Hiermee kan ik van van alle lijsten de grootste tien een waarde geven van 10 voor de grootste, 9 voor de volgende, etc etc. Alle getallen met een rang lager dan 10 krijgen automatisch de waarde 0!
Bij gelijke waarden krijg ik nu ook exact zelfde rang en wordt er daarna 1 rang overgeslagen!

Eigenlijk was ik gewoon veel te moeilijk aan het denken :cool:

Mocht er alsnog iemand een VBA oplossing weten dan ben ik alsnog zeer nieuwsgierig en zou ik dat graag horen. :)
 

Bijlagen

Laatst bewerkt:
rang i.c.m. opzoeken in een tabel

zelf had ik gisterenavond nog deze oplossing.

het gaat om de gele cellen.

maar ik vind hem zelf niet zo mooi.

wil je jou oplossing (bestand) ook eens plaatsen, dan hebben we er allemaal iets aan?
 

Bijlagen

Laatst bewerkt:
Xan der,
Je vraag in je eerste bericht is wel wat anders van aard dan die in je voorbeeldbestand.
Ik ga er nu maar van uit dat het om het probleem in je laatste bericht gaat (met voorbeeldbestand). Wat voor soort oplossing je het best kunt gebruiken, is bv. ook afhankelijk van het AANTAL waarden dat je moet evalueren. Dat laatse blijkt niet direct uit je voorbeeld, daarin gaat het slechts om 4 waarden. De eenvoudigste oplossing daarvoor is er een zonder vba (zie bijlage). Mét vba kan uiteraard ook; die oplossing is op hetzelfde principe gebaseerd als zonder vba, maar daar komt wel wat meer bij kijken.
 
Laatst bewerkt:
Bedankt voor jullie vervolgreacties! Ik heb in de bijlage een voorbeeld van mijn oplossing staan. Ik hoor graag wat jullie er van vinden.

@ Oeldere: Ik begrijp niet helemaal waarom je de vert.zoek gebruik.
Ik heb in de nieuwe bijlage mijn oplossing ingevuld. Achteraf gezien duidelijk een geval van veel te moeilijk denken :)

@ Zapatr: Het was de bedoeling dat in mijn eerste en tweede bericht hetzelfde probleem omschreven werd :) Uiteindelijk is het met een voorbeeld erbij altijd veel makkelijker uit te leggen. In het voorbeeld had ik inderdaad 4 waarden. In praktijk heb ik een vari�rend zo'n 10 tot 20 waarden. De oplossing die ik gevonden heb werkt echter ongeacht het aantal waarden. In jouw oplossing volg ik het nut van "kiezen" niet. Zou je dit uit kunnen leggen?

In VBA ben ik echt nog een beginner, heb alleen jaren terug wat dingen geprogrammeerd in PASCAL dus de basics zijn er wel. Het moet alleen allemaal weer even boven komen drijven. :d



Bekijk bijlage oplossing.xls
 
In je eerste bericht had je het over 15 getallen, waarvan het grootste de waarde 10 moest krijgen, het op een na grootste 9, enz.
In je bericht waar je een voorbeeldbestand bijvoegde ging het om een aantal getallen (2 x 4), waarvan het hoogste 3 punten moest krijgen , het op een na hoogste 2, en het daarna volgende 1 punt. Dat wil zeggen dat er slechts aan 3 getallen punten toegekend moeten worden en niet aan 10 zoals in je eerste bericht. Vandaar mijn oplossing met kiezen, waarbij de gewenste punten 3, 2, en 1 eenvoudig zijn toe te kennen. Een eenduidige omschrijving van je probleem ware beter geweest, dan hadden de lezers beter geweten wat je wenste.

Dat gezegd zijnde: voor je probleem in je laatste bijlage is jouw eigen oplossing prima.
Ze kan evenwel wel iets korter, zie bijlage.
 
Zapatr,

In die wijze gezien zijn het inderdaad 2 verschillende omschrijvingen die ik gegeven heb. In mijn gedachte zocht ik een oplossing die voor ieder aantal waarden te gebruiken was dus vandaar dat ik verschillende voorbeelden gegenereerd heb. Ik begrijp nu ook jouw keuze voor "kiezen"!!

Ik vind jouw variant van de oplossing erg netjes! Denk dat ik dat nog maar eventjes om ga zetten. Bedankt voor al het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan