Waarde van X in een kolom zoeken en die plaatsen in de kolom ernaast.

Status
Niet open voor verdere reacties.

sandert93

Nieuwe gebruiker
Lid geworden
29 apr 2018
Berichten
4
goedenavond allemaal,

Voor school moet ik een opdracht maken waarmee je de eerste en laatste waarde van "X" uit een tabel moet zoeken en die in de kolom ernaast weer te geven.
Nu is het gelukt om de eerste waarde eruit te halen, alleen de laatste kom ik niet.. hebben jullie tips voor mij?

Code:
Sub SevenVinden()
    Dim i As Integer
    Dim x As Integer
    Dim EersteZeven As Integer
    Dim LaatsteZeven As Integer
    
    'variabel i wordt gebruikt voor het refereren naar de juiste cel
    i = 1
    EersteZeven = 0
    LaatsteZeven = 0
    
    'We lezen elke waarde in de reeks vanaf cel A2
    Do While IsEmpty(ActiveSheet.Cells(i + 1, 1)) = False
        x = ActiveSheet.Cells(i + 1, 1).Value
        'Schrijf hieronder een if statement om de positie van de eerste 7 te vinden
        'If ....
        
        If x = 7 Then
        ActiveSheet.Cells(i + 1, 2).Value = EersteZeven
        If IsNumeric(7) Then Exit Sub
        
        End If
        

        'Schrijf hier een if statement om de positie van de laatste 7 te vinden
        '...
    
       
        i = i + 1
        
    Loop

    'We schrijven de posities van de eerste en laatste cellen met waarde 7
    'ActiveSheet.Range("B2").Value = EersteZeven
    'ActiveSheet.Range("C2").Value = LaatsteZeven

End Sub

Ik zat zelf aan een code te denken die kijkt of de waarde "x" = 7 bij True naar de volgende, is er geen volgende waarde meer met 7 dan vervolgens laatste rij waar hij die waarde gevonden heeft weer geven.
Ik weet alleen niet hoe ik dit in VBA kan programmeren.

alvast heel erg bedankt!

Groet


SanderBekijk bijlage 2_4.3.4_Combinatie.xlsm
 
Laatst bewerkt:
Goedemorgen Sander,

Aangezien het een schoolopdracht betreft mogen we conform de huisregels geen kant en klare oplossingen geven, maar we mogen je wel in de goede richting sturen.

Je code werkt voor de eerste 7 maar is erg omslachtig. Ik zou je willen wijzen op de Range.Find.
 
Goedemorgen Sjon,

Bedankt voor je reactie, en snap dat jullie niks mogen voorkauwen. Ik snap alleen de hint niet (mede doordat ik niet weet hoe je de find.range toe kan passen)
 
Dan zal ik het iets makkelijker maken.

Voor het vinden van de eerste 7 zou je deze kunnen gebruiken:

Code:
Range("A:A").Find(7, , , xlWhole, , xlNext).Offset(, 1).Value = 0

Dan kan je zelf even puzzelen hoe je de 0 bij de laatste 7 krijgt.
 
ah kijk nu snap ik ook wat ze op de site bedoelen!
Ik heb ook gevonden hoe je de laatste 7 kan vinden, dat heb ik gedaan door de zoek richting te veranderen naar xlPrevious ipv xlNext en natuurlijk de offset aan gepast zodat hij in de kolom komt waar die hoort.

Code:
Range("A:A").Find(7, , , xlWhole, , xlPrevious).Offset(, 2).Value = LaatsteZeven

Nu vraag ik me toch af hoe je dit in een IF-statement zou kunnen schrijven, dit zal dan wel met iteratie`s opgelost moeten worden?

Na wat door testen en waardes veranderen merk ik dat als er maar 1 - 7 voorkomt hij deze noteert bij beide kolommen, hoe kan ik ervoor zorgen dat als de waarde 1x gevonden is deze niet meer gevonden mag worden?
 
Laatst bewerkt:
Dat zou je kunnen ondervangen door te tellen hoe vaak de bewuste waarde voorkomt. Als de waarde maar 1 keer voorkomt dan zorg je dat de tweede regel niet draait.

Kijk eens hier
 
helaas hier kom ik ook niet uit, denk dat dit later nog moet komen als ik er wat meer mee ga werken.
Ik zou het toch verder willen proberen met de IF-Statement.

Zou je me kunnen helpen met een code die:

Leest: getallen in reeks "A:A" (In principe is deze code al gegeven)
If 7 then:
zoeken naar nog een 7 ;
False = positie opschrijven True= verder kijken naar nog een 7 (net zo lang tot dat hij bij de laatste 7 is en die opschrijven)

in mijn hoofd klinkt het heel makkelijk, alleen als ik dit moet vertalen naar een code beginnend met IF zou ik niet weten hoe.
 
de kern van de opdracht is dus dat het een IF-statement moet zijn. Dat zal het ook moeten worden:

If Application.CountIf ........................................ then

in de link die ik plaatste staat Application.worksheetfunction.countif, maar de worksheetfunctie kan ook weg worden gelaten.

Mag ik vragen voor welk vak/opleiding deze opdracht is verstrekt?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan