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

Zoeken en kopieren

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
Beste kenners,

ik heb in bijlage een bepaald probleem opgesteld.. ik zou echter ni weten hoe daar aan te beginnen met VBA.. kan iemand mij eventueel tips geven? zo leer ik het ook hoe i k het moet doen.. hoe kan ik VBA laten zoeken anar de absolute waarde van het getal dat ik wil zoeken, en nadien een range daarrond te specifiëren?

groetjes en bedankt!!
 

Bijlagen

Beste kenners,

ik heb in bijlage een bepaald probleem opgesteld.. ik zou echter ni weten hoe daar aan te beginnen met VBA.. kan iemand mij eventueel tips geven? zo leer ik het ook hoe i k het moet doen.. hoe kan ik VBA laten zoeken anar de absolute waarde van het getal dat ik wil zoeken, en nadien een range daarrond te specifiëren?

groetjes en bedankt!!

Je zegt het zelf al: de absolute waarde (dat doe je dmv ABS).
Ik wacht even af of je met mijn code uit de voeten kunt.
Het wordt gewaardeerd om NIET een nieuwe thread te starten voor dezelfde vraag.
Dus voortaan gaarne het nieuwe bestand aan de oorspronkelijke thread toevoegen eventueel met de opmerking dat het zo wat duidelijker zou zijn.

Met vriendelijke groet,


Roncancio
 
Je zegt het zelf al: de absolute waarde (dat doe je dmv ABS).
Ik wacht even af of je met mijn code uit de voeten kunt.
Het wordt gewaardeerd om NIET een nieuwe thread te starten voor dezelfde vraag.
Dus voortaan gaarne het nieuwe bestand aan de oorspronkelijke thread toevoegen eventueel met de opmerking dat het zo wat duidelijker zou zijn.

Met vriendelijke groet,


Roncancio

het is in feite een ander model hoor..dus hooort niet echt in de vorige thread thuis.. mijn excuses indien dit zo overkomt.. ik ga nu op onderzoek uit op je code.. en zie dn hoe ver het mij brengt :) tochalvast bedankt!!
 
het is in feite een ander model hoor..dus hooort niet echt in de vorige thread thuis.. mijn excuses indien dit zo overkomt.. ik ga nu op onderzoek uit op je code.. en zie dn hoe ver het mij brengt :) tochalvast bedankt!!

wat doet het volgende stukje code? is dat om te bepalen dat enkel indien er iets verandert in D1:D4 dat er iets moet gebeuren?

Code:
If Not Intersect(Target, Range("D1:D4")) Is Nothing Then

oorspronkelijke code voor de anderen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D1:D4")) Is Nothing Then
    Set DT = Range("A1:A1000").Find(Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole)
    For R = DT.Row - WorksheetFunction.Sum(Range("D2:D3")) To DT.Row - Range("D2").Value - 1
        Range("I" & R).Value = Range("B" & R).Value + Range("D4").Value
    Next
End If
End Sub
 
wat doet het volgende stukje code? is dat om te bepalen dat enkel indien er iets verandert in D1:D4 dat er iets moet gebeuren?

Code:
If Not Intersect(Target, Range("D1:D4")) Is Nothing Then

:thumb::thumb:
Idd.

Met vriendelijke groet,


Roncancio
 
:thumb::thumb:
Idd.

Met vriendelijke groet,


Roncancio


hoe kan ik nu ervoor zorgen dat hij die ranges die hij telkens selecteert plakt eerst in J1, nadien in K1 etc?

ik denk dat ik een soort variabele moet creeëren die zegt hoeveel keer de waarde 2 is gevonden in de reeks.. en nadien dan werken met een loop.. maar ik kom er niet uit..

ps: als ik deze code in een subroutine zet, geeft hij een error.. "object doesn't support this method"..

(ik eb er een sub van gemaakt omdat het makkelijker werkt, en ook wekrt als er een nieuwe input is in de kolom A)

Code:
Sub test()
    Set DT = Range("A1:A1000").Find(WorksheetFunction.Abs([C1]), LookIn:=xlValues, lookat:=xlWhole)
    For R = DT.Row - WorksheetFunction.Sum(Range("C2:C3")) To DT.Row - Range("D2").Value - 1
        Range("I" & R).Value = Range("B" & R).Value
    Next
   End Sub
 
hoe kan ik nu ervoor zorgen dat hij die ranges die hij telkens selecteert plakt eerst in J1, nadien in K1 etc?

ik denk dat ik een soort variabele moet creeëren die zegt hoeveel keer de waarde 2 is gevonden in de reeks.. en nadien dan werken met een loop.. maar ik kom er niet uit..

Kan je een voorbeeld sturen hoe je het voor ogen heeft, zodat ik kan welke gegevens waar moeten staan.

Met vriendelijke groet,


Roncancio
 
Kan je een voorbeeld sturen hoe je het voor ogen heeft, zodat ik kan welke gegevens waar moeten staan.

Met vriendelijke groet,


Roncancio

ja , zie bijlage


bedankt!!

ik vermoed dat ik iets nodig heb zoals een variabele die telst hoeveel keer abs(2) is gevonden , en dan een loop te doen en dan die variabele kan gebruiken om de kolom aan te duiden (die dan telkens 1 opspringt).. dus als ab(2) 2 keer is gevonden, komt de range eerst in J1, en nadien in K1 etc..
 

Bijlagen

Laatst bewerkt:
ja , zie bijlage


bedankt!!

ik vermoed dat ik iets nodig heb zoals een variabele die telst hoeveel keer abs(2) is gevonden , en dan een loop te doen en dan die variabele kan gebruiken om de kolom aan te duiden (die dan telkens 1 opspringt).. dus als ab(2) 2 keer is gevonden, komt de range eerst in J1, en nadien in K1 etc..

hoe kan ik tellen hoeveel keer een waarde voorkomt in een range? ik heb al geprobeerd met onderstaande code, maar hij geeft telkens 1 als waarde ook als ik de te zoeken waarde een paar keer in de range A:A zet..

Code:
X = Range("A1:A1000").Find(Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole).Count
 
hoe kan ik tellen hoeveel keer een waarde voorkomt in een range? ik heb al geprobeerd met onderstaande code, maar hij geeft telkens 1 als waarde ook als ik de te zoeken waarde een paar keer in de range A:A zet..

Code:
X = Range("A1:A1000").Find(Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole).Count

ik heb dit geprobeerd, maar lukt ook niet

Code:
Sub test()
Do While Range("A:A").Cells.Find(Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious) = True

n = Range("A:A").Cells.Find(Range("D1").Value, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Count

n = n + 1
Loop
MsgBox n

End Sub
 
Hallo nobody11,

Ik zou een lus gebruiken om een bepaalde waarde in een range te zoeken.
Zoals deze bijvoorbeeld.
Code:
Sub tellen()
    
    For Each c In Range("A1:A1000")
        If c.Value = Range("D1").Value Then
            Range("C1").Value = Range("C1").Value + 1
        End If
    Next
        
End Sub

Met vr gr
Jack
 
Hallo nobody11,

Ik zou een lus gebruiken om een bepaalde waarde in een range te zoeken.
Zoals deze bijvoorbeeld.
Code:
Sub tellen()
    
    For Each c In Range("A1:A1000")
        If c.Value = Range("D1").Value Then
            Range("C1").Value = Range("C1").Value + 1
        End If
    Next
        
End Sub

Met vr gr
Jack

ja, bedankt! je oplossing geldt vr mn vorige thread eigenlijk.. deze probleemstelling is lichtejs anders, maar ik kan er denk ik wel ook iets mee.. moest je tijd hebben kan je eens zien naar deze probleemstelling.. ik ga proberen enkele elementen van je code op te nemen! bedankt!!

het enige dat door te werken met for each c in range.. dat de code heel traag zal worden.. er zullen immers meer dan 10000 observaties in de range A:A komen..
 
Laatst bewerkt:
In bijlage mijn vordering tot nu toe (+ code)

ivm de absolute waarde, ik heb geprobeerd voor dit erin te zetten:

Code:
 If c.Value = WorksheetFunction.Abs(Range("C1").Value) Then
maar dat doet hij niet?


iemand suggesties voor verbeteringen / versnellingen? (dit is zeker het geval met mijn prul code :-) )

Code:
Sub test()
    kolom = Range([C4]).Column
    'bepaalt de kolom waar de eerste reeks moet komen
    n = 0
    'hulpvariabele nodig voor het opschuiven van de kolommen
    'totale venster
    
    window1 = Range("C2").Value + 2 * Range("C3").Value + 1
         
    For Each c In Range("A1:A22") [COLOR="Red"]dit gaat traag gaan vrees ik als de range waarin hij moet zoeken A1:A10000 zal zijn[/COLOR]
    If c.Value = Range("C1").Value Then  [COLOR="Red"]hij zou ook moeten zoeken naar waarden die groter zijn dan de absolute waarde van C1..[/COLOR]
    n = n + 1
    Start = c.Row - WorksheetFunction.Sum(Range("C2:C3"))
    ' start row of window to copy
    endd = c.Row + Range("C3").Value
    ' end row of window to copy
    Window = Range("A" & Start & ":A" & endd)
    ' total window to copy
    Range(Cells(1, kolom + n - 1), Cells(window1, kolom + n - 1)).Value = Window
    End If
    Next
   End Sub
 

Bijlagen

Laatst bewerkt:
Hallo

Ik heb wel een paar antwoorden voor je vragen, maar wat je code betreft daar kan ik niet helemaal goed aan uit.

1) Om je code sneller te laten lopen kun je ervoor kiezen om de screenupdating uit te schakelen, dus begin je code met Application.ScreenUpdating = False en eindig met Application.ScreenUpdating = True
2) Om waarden groter dan C1 te laten zoeken verander je dit ...
Code:
If c.Value = Range("C1").Value
naar dit ...
Code:
If c.Value[COLOR="red"] >[/COLOR] Range("C1").Value
.

Ik hoop dat je hier mee verder kunt,

Met vr gr
Jack
 
Laatst bewerkt:
Hallo

Ik heb wel een paar antwoorden voor je vragen, maar wat je code betreft daar kan ik niet helemaal goed aan uit.

1) Om je code sneller te laten lopen kun je ervoor kiezen om de screenupdating uit te schakelen, dus begin je code met Application.ScreenUpdating = False en eindig met Application.ScreenUpdating = True

2) Om waarden groter dan C1 te laten zoeken verander je dit ...
Code:
If c.Value = Range("C1").Value
naar dit ...
Code:
If c.Value > Range("C1").Value
.

Ik hoop dat je hier mee verder kunt,

Met vr gr
Jack

bedankt!

en als ik wil zoeken naar de absolute waarde van C1.. dus als C1 bijvoorbeeld 5 is, moet hij ook -5 detecteren in de range A:A.. hoe doe ik dat? iets met abs(c).value ofzoiets?
 
In plaats van dat je de cellen stuk voor stuk vergelijkt, kan je gebruik maken van FIND en FINDNEXT.

De FIND zoekt een bepaalde waarde en FINDNEXT gaat verder in het bereik zoeken naar de waarde.

Met vriendelijke groet,


Roncancio
 
In plaats van dat je de cellen stuk voor stuk vergelijkt, kan je gebruik maken van FIND en FINDNEXT.

De FIND zoekt een bepaalde waarde en FINDNEXT gaat verder in het bereik zoeken naar de waarde.

Met vriendelijke groet,


Roncancio

bedankt! ik zoek dit even uit
hoe kan ik dieze functies combineren met de abs functie? als ik vraag bv om 2 op te zoeken, dat hij ook -2, -3 en 3, 4 etc zoekt.. de functie application.worksheetfunction.abs werkt niet bij mij??

het probleem is volgens mij dat ik niet moet zoeken naar de absolute waarde van C1, maar dat ik van elke cel in de A:A range de absolute waarde moet vergelijken met C1.. hoe doe ik dat in die FIND functie?
 
Laatst bewerkt:
bedankt! ik zoek dit even uit
hoe kan ik dieze functies combineren met de abs functie? als ik vraag bv om 2 op te zoeken, dat hij ook -2, -3 en 3, 4 etc zoekt.. de functie application.worksheetfunction.abs werkt niet bij mij??

het probleem is volgens mij dat ik niet moet zoeken naar de absolute waarde van C1, maar dat ik van elke cel in de A:A range de absolute waarde moet vergelijken met C1.. hoe doe ik dat in die FIND functie?

dit is momenteel mijn "finale" code

Code:
Sub test()
    Application.ScreenUpdating = False
    endd = 0
    Start = 0
    n = 0
    kolom = Range([C4]).Column
    'bepaalt de kolom waar de eerste reeks moet komen
    'hulpvariabele nodig voor het opschuiven van de kolommen
    window1 = Range("C2").Value + 2 * Range("C3").Value + 1
    ' venster bepalen (voor en na dus maal 2)
    
    For Each c In Range("A1:A10000")
    If Abs(c.Value) > Range("C1").Value Then
    On Error Resume Next
    n = n + 1
    Start = c.Row - WorksheetFunction.Sum(Range("C2:C3"))
    ' start row of window to copy
    endd = c.Row + Range("C3").Value
    ' end row of window to copy
    Window = Range("A" & Start & ":A" & endd)
    ' total window to copy
    Range(Cells(1, kolom + n - 1), Cells(window1, kolom + n - 1)).Value = Window
    End If
    Next
     Application.ScreenUpdating = True
   End Sub

zou er iemand mij op weg kunnen zetten om deze om te zetten met de FIND en FINDNEXT? ik heb al tutorials gelezen,m aar ik snap totaal niet hoe ik dit kan implemeteren hier..
 
bedankt! ik zoek dit even uit
hoe kan ik dieze functies combineren met de abs functie? als ik vraag bv om 2 op te zoeken, dat hij ook -2, -3 en 3, 4 etc zoekt.. de functie application.worksheetfunction.abs werkt niet bij mij??

Je zoekt naar 2, maar dan ook direct naar -2, 3 en -3, 4 en -4, 5 en -5, 6 en -6, etc
Als je zoveel waardes zoekt, dan valt er weinig te zoeken:p

Dit riekt naar een uitgebreid filter.

Met vriendelijke groet,


Roncancio
 
Je zoekt naar 2, maar dan ook direct naar -2, 3 en -3, 4 en -4, 5 en -5, 6 en -6, etc
Als je zoveel waardes zoekt, dan valt er weinig te zoeken:p

Dit riekt naar een uitgebreid filter.

Met vriendelijke groet,


Roncancio

ja, maar in de meeste gevallen zal ik enkel zoeken naar "extreme " waarden, dit per definitie niet veel voorkomen.. 10% van de gevallen ofzo..
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan