abonnement Unibet Coolblue
pi_142131405
Beste mensen,

Ik zit met het volgende probleem en vroeg mijzelf af, of er iemand is die het kan oplossen.

Momenteel ben ik bezig met het automatisch laten verwijderen van rijen waarvan de datum nieuwer is dan de vorige maand (juni) en ouder dan 01-01-2013. Volgend maand zullen de rijen waarvan de datum nieuwer is dan juli moeten worden verwijderd enz. Volgend jaar zullen de gegevens vanaf 01-01-2014 moeten beginnen. In het bestandje heb ik de vraag beter geformuleerd.

https://www.dropbox.com/s(...)RijenVerwijderen.xls

Bij voorbaat dank!
Mvg,
Dusan Ilic
pi_142134395
Een loop door 20.000 rijen gaat erg lang duren, volgens mij kun je beter een filter toepassen in kolom B op hetgeen wat je wilt verwijderen en vervolgens de zichtbare cellen verwijderen.

Probeer zelf ook te spelen met de opname functie, in dit geval is het filter toepassen>alle rijen selecteren>F5>speciaal>alleen zichtbare cellen>rechtermuisknop op cel>verwijderen

Leuk om te zien dat je de eerder genoemde functie(cdate) gebruikt :)
pi_142135871
Hey Stickers,
CDatum is erg handig, heel erg bedankt daarvoor! Alleen ik zou graag die loop willen draaien omdat de medewerkers, die ermee willen werken, alles zo automatisch mogelijk willen hebben. Hoe lang zou zo een loop duren en is er geen andere mogelijkheid? Ik wil namelijk diezelfde macro gebruiken om ook andere gegevens te veranderen van benaming etc. Zou iemand een van deze kunnen toepassen op mijn worksheet? http://www.exhelp.be/vba/902
Mvg,
Dusan Ilic
pi_142138688
Een macro is automatisch, ongeacht de methode. In jouw link worden meerdere manier uitgelegd om rijen te verwijderen. Inclusief een tabel met de tijdsduur per methode.

Je staat vrij om de loopmethode te proberen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Methode1()
Application.ScreenUpdating = False
Dim i As Long

    Range("A2").Select
    Selection.End(xlDown).Select
    lastRow = ActiveCell.Row

With ActiveWorkbook.Sheets(1)

    For i = lastRow To 1 Step -1

            If CDate(Cells(i, 2)) > CDate(Range("H2").Value) Then

            Rows(i).Delete

            End If

    Next i

End With

Application.ScreenUpdating = True
End Sub

Enfin, zoals ik het probleem nu begrijp:

Je rapporteert per kalenderjaar en per volledige maand, dat wil zeggen alleen over afgeronde maanden. Alles van het voorgaande kalenderjaar wordt verwijderd en alles van de niet afgeronde maand en later.

voorbeeld:
op 1 juli t/m 31 juli rapporteer je over januari t/m juni
op 1 augustus t/m 31 augustus rapporteert je over januari t/m juli

[ Bericht 9% gewijzigd door Stickers op 11-07-2014 14:23:21 (faalcode) ]
pi_142141822
Ben bezig met een soort van dashboard in Excel. Daarin heb ik een ranglijst van zeg 1 tot en 500 en nu wil ik dat als je je op bijvoorbeeld de nummer 2 klikt dat ik dan met wat verticaal zoeken acties wat waardes opvraag die bij die geselecteerde cel horen. Verticaal zoeken en dergelijke lukt prima. Heb echter nog 2 vragen:
1) Actieve cell waarde. Is dat alleen mogelijk met VB? of is er ook een mogelijkheid om dit met een formule in excel zelf op te vragen?
2) Wat ik dan vervolgens zou willen is dat je aan de linkerkant van het scherm kan scrollen en aan de rechterkant dan de waardes verschijnen waarbij de rechterkant niet scrollt.

Weet iemand hoe ik dit kan doen? Thx alvast!
pi_142142916
quote:
0s.gif Op donderdag 10 juli 2014 16:33 schreef jakees het volgende:
Ben bezig met een soort van dashboard in Excel. Daarin heb ik een ranglijst van zeg 1 tot en 500 en nu wil ik dat als je je op bijvoorbeeld de nummer 2 klikt dat ik dan met wat verticaal zoeken acties wat waardes opvraag die bij die geselecteerde cel horen. Verticaal zoeken en dergelijke lukt prima. Heb echter nog 2 vragen:
1) Actieve cell waarde. Is dat alleen mogelijk met VB? of is er ook een mogelijkheid om dit met een formule in excel zelf op te vragen?
2) Wat ik dan vervolgens zou willen is dat je aan de linkerkant van het scherm kan scrollen en aan de rechterkant dan de waardes verschijnen waarbij de rechterkant niet scrollt.

Weet iemand hoe ik dit kan doen? Thx alvast!
1. Wat bedoel je precies met actieve cell waarde? Ik neem aan dat je je huidige selectie wil registreren voor je vlookup formules? Dan is vba de enige optie:
SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
2. Nee, je kan wel titels blokkeren en scherm splitsen, maar de rechterzijde als het ware vasthouden kan niet. Wellicht is een dropdownbox een idee, zodat er helemaal niet gescrollt hoeft te worden
pi_142144167
ok thx!
pi_142165724
Beste Stickers,

Sorry voor het laat reageren op je reactie. Je hebt het helemaal goed begrepen.
Alleen bij het toepassen van jouw macro/loop geeft hij een fout bij:
If DateValue(Cells(i, 2)) > DateValue(Range("H2").Value) Then
Deze regel wordt geel gemarkt. Heeft het misschien iets te maken met datumwaarde en datumnotatie?
Mvg,
Dusan Ilic
pi_142170516
quote:
0s.gif Op vrijdag 11 juli 2014 11:54 schreef DIlic het volgende:
Beste Stickers,

Sorry voor het laat reageren op je reactie. Je hebt het helemaal goed begrepen.
Alleen bij het toepassen van jouw macro/loop geeft hij een fout bij:
If DateValue(Cells(i, 2)) > DateValue(Range("H2").Value) Then
Deze regel wordt geel gemarkt. Heeft het misschien iets te maken met datumwaarde en datumnotatie?
Ik heb zitten kloten met de notatie van H2 en het stuk van verwijderen niet echt bekeken. Onderstaande zou moeten werken.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Methode1()
Application.ScreenUpdating = False
Dim i As Long

    Range("A2").Select
    Selection.End(xlDown).Select
    lastRow = ActiveCell.Row

With ActiveWorkbook.Sheets(1)

    For i = lastRow To 1 Step -1

            If CDate(Cells(i, 2)) > CDate(Range("H2").Value) Then

            Rows(i).Delete

            End If

    Next i

End With

Application.ScreenUpdating = True
End Sub


[ Bericht 45% gewijzigd door Stickers op 11-07-2014 14:26:32 (aanpassing code) ]
pi_142171510
Heb het net toegepast maar helaas nogsteeds dezelfde foutmelding bij de volgende zin:
If CDate(Cells(i, 2)) > CDate(Range("H2").Value) Then
Ook zegt hij erbij "fout 13: typen komen niet overeen"
Mvg,
Dusan Ilic
pi_142172276
quote:
0s.gif Op vrijdag 11 juli 2014 14:43 schreef DIlic het volgende:
Heb het net toegepast maar helaas nogsteeds dezelfde foutmelding bij de volgende zin:
If CDate(Cells(i, 2)) > CDate(Range("H2").Value) Then
Ook zegt hij erbij "fout 13: typen komen niet overeen"
Code zoals hierboven gekopieerd in het bestand wat je eerder hebt geüpload. Ik krijg geen foutmelding. Heb je iets aangepast in het bestand?
pi_142173292
Ik zit er de hele tijd mee te stoeien en heb het net als jij toegepast, maar tevergeefs. Ik stuur je nu een gedeelte van het originele bestand.
Kan je kijken als je het daarin kan verwerken? Dan zouden al mijn problemen opgelost zijn:
https://www.dropbox.com/s(...)ijenVerwijderen2.xls
Sorry als ik het je moeilijk maak. Waardeer het enorm dat je me wilt helpen!!
Mvg,
Dusan Ilic
pi_142174475
Dit bewijst alweer dat wanneer je code niet begrijpt, je deze niet klakkeloos over moet nemen.

De macro loopt op meerdere plekken vast, omdat het werkelijke bestand afwijkt van de test.

1
2
3
    Range("A2").Select
    Selection.End(xlDown).Select
    lastRow = ActiveCell.Row

Probeer dit maar in excel. Selecteer A2, druk op de knop 'End' en vervolgens de pijl naar beneden. Hiermee zoek je naar de laatste gevulde cel, is een cel tussendoor leeg? Dan stopt hij daar een boven. In jouw bestand is zowat heel kolom A leeg, je eindigt dus op de laatste rij van het bestand: 65536.
1    If CDate(Cells(i, 2)) > CDate(Range("H2").Value) Then
Cells(i,2) bestaat uit een rij, kolom verwijzing. Hier verwijst i naar een rij en 2 naar een kolom. Begin je op rij 65536, dan is de cel waarop hij controleert B65536. Aangezien deze leeg is, converteert CDate dit naar 0 als datum, oftewel 0-1-1900.

Nogmaals, probeer eerst te begrijpen wat alles doet. Als de output van het bestand over x maanden anders is, loopt de macro vast en weet jij niet waar je het zoeken moet.
pi_142276042
Beste Stickers,

Ik begrijp de code wel hoor, alleen heb ik je een nieuwe worksheet gestuurd met een andere kolomvolgorde. Mijn fout. De code werk nu perfect voor de datum tot (in dit geval) juni (omdat het nu juli is). Maar de gegevens voor 1-1-2013 horen ook verwijderd te worden. Heb het volgende geprobeerd, maar het is niet gelukt:

If CDate(Cells(i, 7)) < CDate(Range("AI2").Value) And _
CDate(Cells(i, 7)) > CDate(Range("AG2").Value) Then

(AI2 heb ik de cdatum waarde 1-1-2013 gegeven en AG2 heeft de cdatum waarde 1-7-2014)

Weet jij misschien hoe ik dit laatste zou kunnen oplossen Stickers?

Voor alsnog heel erg bedankt met de macro tot nu toe.
Mvg,
Dusan Ilic
pi_142276726
quote:
0s.gif Op maandag 14 juli 2014 11:13 schreef DIlic het volgende:
Beste Stickers,

Ik begrijp de code wel hoor, alleen heb ik je een nieuwe worksheet gestuurd met een andere kolomvolgorde. Mijn fout. De code werk nu perfect voor de datum tot (in dit geval) juni (omdat het nu juli is). Maar de gegevens voor 1-1-2013 horen ook verwijderd te worden. Heb het volgende geprobeerd, maar het is niet gelukt:

If CDate(Cells(i, 7)) < CDate(Range("AI2").Value) And _
CDate(Cells(i, 7)) > CDate(Range("AG2").Value) Then

(AI2 heb ik de cdatum waarde 1-1-2013 gegeven en AG2 heeft de cdatum waarde 1-7-2014)

Weet jij misschien hoe ik dit laatste zou kunnen oplossen Stickers?

Voor alsnog heel erg bedankt met de macro tot nu toe.
Je controleert of een datum na 1-7-2014 ligt én voor 1-1-2013. Dat kan dus niet. And moet Or worden :)

Hoe lang duurt de macro nu trouwens?

edit: Ik zie dat je de code hebt aangepast naar kolom 7, In het laatste bestand die je hebt geüpload, is kolom 7 "complicatie Subcategorie". Dat lijkt me geen datum :)

[ Bericht 9% gewijzigd door Stickers op 14-07-2014 11:46:35 ]
pi_142278329
Wellicht kunnen jullie me helpen. Ik heb een scatter plot die ik in VBA aanmaak.
Nu wil ik, zonder de brondata van de grafiek uit te breiden een horizontale norm-streep door mijn grafiek laten lopen.

Weet iemand of dit mogelijk is? (het zij zonder, het zij met gebruik van VBA)

Bvd
Webster
to say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, or of what is not that it is not, is true
pi_142316899
Beste allemaal, als Excel noob heb ik een vraagje....

Op m'n werk maak ik wekelijks een lijst A welke tientallen e-mailadressen bevat. Hieruit wil ik een aantal e-mailadressen verwijderen die op andere lijsten voorkomen (ik noem ze maar even B en C).

Wat is hiervoor de meest handige en efficiënte manier?
pi_142320439
quote:
0s.gif Op maandag 14 juli 2014 12:41 schreef webbyplus het volgende:
Wellicht kunnen jullie me helpen. Ik heb een scatter plot die ik in VBA aanmaak.
Nu wil ik, zonder de brondata van de grafiek uit te breiden een horizontale norm-streep door mijn grafiek laten lopen.

Weet iemand of dit mogelijk is? (het zij zonder, het zij met gebruik van VBA)

Bvd
Webster
Je kan een tweede lijn in je grafiek toevoegen. enige wat je moet doen is voor elk punt op je X as je normwaarde plaatsen.
pi_142320828
quote:
0s.gif Op dinsdag 15 juli 2014 11:00 schreef Trusten het volgende:
Beste allemaal, als Excel noob heb ik een vraagje....

Op m'n werk maak ik wekelijks een lijst A welke tientallen e-mailadressen bevat. Hieruit wil ik een aantal e-mailadressen verwijderen die op andere lijsten voorkomen (ik noem ze maar even B en C).

Wat is hiervoor de meest handige en efficiënte manier?
Plaats in de lijst met je adressen een vergelijking naar B en een vergelijking naar C.


Als je B lijst de adressen bijvoorbeeld onder elkaar in de A kolom heeft staan krijg je iets als: vert.zoeken(A1;sheetB!a:a;1;onwaar). Hij zoekt nu waarde A1 in de A kolom van sheetB. Als hij het vindt dan geeft hij de betreffende waarde en anders een foutmelding dat hij het niet gevonden heeft. Kopieer de formule naar beneden. Filter nu de foutmeldingen weg en je houdt alleen de regels die in lijst B staan. Selecteer de regels en verwijder ze.
pi_142395264
Even nog een kleine vraag, want mijn collega komt er niet uit en ik denk dat ik het antwoord weet, maar kan het niet ondersteunen met een link.
Als er staat Cells.Find(What:="*".....
Dan zoekt de functie toch gewoon naar een waarde (welke waarde maakt niks uit, zolang er maar wat staat)? dank!
I never think of the future - it comes soon enough. - Albert Einstein
pi_142399636
quote:
0s.gif Op dinsdag 15 juli 2014 11:00 schreef Trusten het volgende:
Beste allemaal, als Excel noob heb ik een vraagje....

Op m'n werk maak ik wekelijks een lijst A welke tientallen e-mailadressen bevat. Hieruit wil ik een aantal e-mailadressen verwijderen die op andere lijsten voorkomen (ik noem ze maar even B en C).

Wat is hiervoor de meest handige en efficiënte manier?
Je kan overigens ook alles onder elkaar zetten, de kolom selecteren en vervolgens Gegevens > Duplicaten verwijderen > Doorgaan met huidige selectie.

quote:
0s.gif Op donderdag 17 juli 2014 13:30 schreef kipptje het volgende:
Even nog een kleine vraag, want mijn collega komt er niet uit en ik denk dat ik het antwoord weet, maar kan het niet ondersteunen met een link.
Als er staat Cells.Find(What:="*".....
Dan zoekt de functie toch gewoon naar een waarde (welke waarde maakt niks uit, zolang er maar wat staat)? dank!
Klopt.
pi_142399813
quote:
0s.gif Op donderdag 17 juli 2014 13:30 schreef kipptje het volgende:
Even nog een kleine vraag, want mijn collega komt er niet uit en ik denk dat ik het antwoord weet, maar kan het niet ondersteunen met een link.
Als er staat Cells.Find(What:="*".....
Dan zoekt de functie toch gewoon naar een waarde (welke waarde maakt niks uit, zolang er maar wat staat)? dank!
Maar hou er dan wel rekening mee dat find ergens zomaar begint te zoeken en je dit ook moet definieren.
pi_142399975
quote:
0s.gif Op donderdag 17 juli 2014 15:38 schreef Stickers het volgende:
Je kan overigens ook alles onder elkaar zetten, de kolom selecteren en vervolgens Gegevens > Duplicaten verwijderen > Doorgaan met huidige selectie.
Damn wat een open deur...dat we dat niet eerder bedacht hebben (niet sarcastisch bedoeld). Thanks :)

Inmiddels ook gelukt naar aanleiding van bovenstaande tip.
pi_142404170
quote:
0s.gif Op donderdag 17 juli 2014 15:44 schreef Basp1 het volgende:

[..]

Maar hou er dan wel rekening mee dat find ergens zomaar begint te zoeken en je dit ook moet definieren.
Cells geeft aan dat je overal zoekt in je activesheet, toch? .Find werkt wel per rij. Daar kun je wel op letten.
pi_142412342
quote:
0s.gif Op donderdag 17 juli 2014 15:44 schreef Basp1 het volgende:

[..]

Maar hou er dan wel rekening mee dat find ergens zomaar begint te zoeken en je dit ook moet definieren.
Oh, de rest van de definities staan er al in en hebben we volledig geanalyseerd, dat sterretje was het enige waar nig wat onduidelijkheid over bestond.
Bedankt!
I never think of the future - it comes soon enough. - Albert Einstein
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')