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

Copieren geselecteerde waarden uit een kolom, en dezelfde volgorde handhaven

Status
Niet open voor verdere reacties.

Vecernicek

Nieuwe gebruiker
Lid geworden
1 aug 2004
Berichten
4
Hallo, ik zou erg blij zijn als iemand me hier mee kan helpen;

In kolom A heb ik een reeks getallen

bijv. 4 0 3 7 0 4 0 9

Van deze reeks wil ik een selectie (bijvoorbeeld > 0) copieren naar kolom B.

Maar deze getallen moeten daar dan in dezelfde volgorde in komen te staan;

4 3 7 4 9

Weet iemand hoe dit moet? Mijn dank is groot.
 
Met een macro;

Sub Macro1()
'
Dim x, y, Laatste, nr As Long

Columns("B:B").Select 'maak kolom b leeg
Selection.ClearContents
Range("A1").Select

y = 1
nr = InputBox("Groter of gelijk aan:")

[A65536].Select
Selection.End(xlUp)(1).Select 'vind laatste rij blad 1 in kolom a
Laatste = ActiveCell.Row

For x = 1 To Laatste ' controlleer gevonden rijen
If Range("A" & x) >= nr Then
Range("A" & x).Select
Selection.Copy
Range("B" & y).Select
ActiveSheet.Paste
y = y + 1
Else
'
End If
Next x
Range("A1").Select
End Sub
 
ik ben er bijna

Ontzettend bedankt. Ik ben helemaal geholpen als je me nog kunt vertellen hoe ik de kolommen (a en b) kan invoeren als input. Dus dat kolom a en b beide variabelen zijn. Thanx a lot.
 
Sub Macro1()
'
Dim x, y, Laatste, nr As Long
Dim v, n As String

y = 1
v = InputBox("Van kolom:")
n = InputBox("Naar kolom:")
nr = InputBox("Groter of gelijk aan:")

Columns(n).Select
Selection.ClearContents
Range(v & "1").Select

Range(v & "65536").Select
Selection.End(xlUp)(1).Select 'vind laatste rij blad 1 in kolom
Laatste = ActiveCell.Row

For x = 1 To Laatste ' controlleer gevonden rijen
If Range(v & x) >= nr Then
Range(v & x).Select
Selection.Copy
Range(n & y).Select
ActiveSheet.Paste
y = y + 1
Else
'
End If
Next x
Range("A1").Select
End Sub
 
Hoi Vecernicek,

Het kan ook met een matrix-formule:
B7: =ALS(RIJEN(A$7:A7)>AANTAL.ALS($A$7:$A$37;">0");"";INDEX($A$7:$A$37;93-GROOTSTE(($A$7:$A$37>0)*(99-RIJ($A$7:$A$37));RIJEN(A$7:A7))))

Bij invoeren Shift + Crtl indrukken en Enter.

Jeroen
 
Hoi Withaar & Jeroen,
thanx voor beide,

wb de matrixcode; ik gebruikt de engelse excel.
kun je me zeggen waar AANTAL voor staat?
en hoort de punt achter aantal? (A$7:A7)>AANTAL.ALS

wb de macro;
ik had m'n probleem wat duidelijker moeten maken;

probleem is niet het copieren van een selectie, maar het copieren van een selectie naar een kleiner aantal rijen;

4 4 4
0 3
3 moet worden 1 en niet 3
0
1 1

Zelf heb ik 40 (het gaat om 40 rijen) geneste IF functies geprobeerd, maar dat accepteert Excel niet.
 
Hoi Vecernicek,

Het kan ook met een matrix-formule:
B7: =IF(ROWS(A$7:A7)>COUNTIF($A$7:$A$37;">0");"";INDEX($A$7:$A$37;93-LARGE(($A$7:$A$37>0)*(99-ROW($A$7:$A$37));ROWS(A$7:A7))))

Dit zou 'm moeten zijn.

In de Nederlandse functienaam moet er een . in aantal.als, in de engelse functienaam countif niet.

Jeroen
 
Uiteindelijk

Ik heb het met de matrixformule geprobeerd, maar

INDEX
(..:..;
93-LARGE((..:..>..)*(99-ROW(..:..))
;ROWS(..:..)
))

Excel trekt het 'nesten' van LARGE() binnen INDEX niet.
Maar ik ben met de functies in Jeroens formule gaan spelen, en toen kwam ik er uit. Wel met een niet cleane oplossing;

in kolom C tel ik het aantal keren dat een waarde > 0 is.

C35 heeft zo dan bijvoorbeeld waarde 6 als het de 6e waarde is die ik in kolom c wil hebben.

Vervolgens in kolom b de code;

INDEX(kolom a;MATCH(ROW(huidige rij in kolom b);kolom c;0))


Maar jullie oplossingen zien er technischer uit, helaas heb ik niet de tijd om die helemaal te doorgronden. In elk geval erg bedankt voor de moeite, nu krijg ik op tijd m'n scriptie af.
 
Met if/als red je dat inderdaad niet.

Alternatie is Kiesen in combinatie met als.
een voorbeeldje met 58 argumenten:

=ALS(C6<29;KIEZEN(C6;A7;A8;A9;A10;A11;A12;A13;A14;A15;A16;A17;A18;A19;A20;A21;A22;A23;A24;A25;A26;A27;A28;A29;A30;A31;A32;A33;A34;A35);...
... KIEZEN(C6-29;C6;A36;A37;A38;A39;A40;A41;A42;A43;A44;A45;A46;A47;A48;A49;A50;A51;A52;A53;A54;A55;A56;A57;A58;A59;A60;A61;A62;A63;A64))

bij de ... loopt de formule gewoon door, maar de regel werdt te lang en helpmij brak de 'zin' op een wat ongelukkig punt af.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan