Excel lijst splitsen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Crxtreem
  • Registratie: Augustus 2007
  • Niet online
Ik heb in Excel een lijst met positieve en negatieve getallen.
Deze wil ik op een ander tabblad splitsen in 2 lijsten 1 met de negatieve en de andere met de positieve.

Ik heb dit Ik heb dit al gedeeltelijk werkend gekregen met de ALS functie en anders volgende rij.
Maar heeft de ALS functie ook een next functie?

De rest van de rij vul ik aan met vert.zoeken. (Of kan ik met de Als functie ook de complete rij plakken?)

Nu wil ik dit het liefst zonder macro's doen omdat ik thuis Libreoffice gebruik maar het ook op Excel wil gebruiken.

Alle reacties


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Zou het kunnen voldoen om te filteren? bij de een filteren op <0 en de ander op >= 0. Dat zal niet voldoen als je er ook nog mee wilt rekenen trouwens.

Makkelijkste daarvoor: voeg op het positieve tab een hulpkolom toe: als A1 >= 0 dan A1, anders "".
En nog steeds de lege regels filteren zodat het mooi lijkt aan te sluiten.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • +1 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Je kunt een tellertje maken die de positieve en negatieve getallen nummert. En in je andere tabbladen daarnaar verwijzen met een vlookup of index/match.
Dus
code:
1
2
3
4
5
1    => 1, 0
5    => 2, 0
-2    => 2, 1
5    => 3, 1
-4    => 3, 2

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 19:59

heuveltje

KoelkastFilosoof

Crxtreem schreef op maandag 6 juli 2020 @ 08:52:
Ik heb in Excel een lijst met positieve en negatieve getallen.
Deze wil ik op een ander tabblad splitsen in 2 lijsten 1 met de negatieve en de andere met de positieve.

Ik heb dit Ik heb dit al gedeeltelijk werkend gekregen met de ALS functie en anders volgende rij.
Maar heeft de ALS functie ook een next functie?

De rest van de rij vul ik aan met vert.zoeken. (Of kan ik met de Als functie ook de complete rij plakken?)

Nu wil ik dit het liefst zonder macro's doen omdat ik thuis Libreoffice gebruik maar het ook op Excel wil gebruiken.
Sorteer op 2 dat getal. kies alles tot de 0 en knip en plak dat naar een 2e blad ?

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • Crxtreem
  • Registratie: Augustus 2007
  • Niet online
heuveltje schreef op maandag 6 juli 2020 @ 09:15:
[...]


Sorteer op 2 dat getal. kies alles tot de 0 en knip en plak dat naar een 2e blad ?
Maar dat is niet te automatiseren zonder macro?
Mijn wens is dat ik dit met een formule automatisch kan doen zodat de nieuwe lijsten altijd bijgewerkt zijn.

Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 19:59

heuveltje

KoelkastFilosoof

Crxtreem schreef op maandag 6 juli 2020 @ 09:17:
[...]


Maar dat is niet te automatiseren zonder macro?
Mijn wens is dat ik dit met een formule automatisch kan doen zodat de nieuwe lijsten altijd bijgewerkt zijn.
Je kunt iets met verticaal zoeken zoals @KabouterSuper zegt.
Maar dan moet je filters instellen die automatisch opnieuw toegepast worden zodra er iets gewijzigd is.
Maar mij niet bekend dat dat mogelijk is zonder een (zeer simpel) macro.
(wat niet wil zeggen dat het niet bestaat :P)

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • +3 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
heuveltje schreef op maandag 6 juli 2020 @ 11:36:
[...]
Je kunt iets met verticaal zoeken zoals @KabouterSuper zegt.
Maar dan moet je filters instellen die automatisch opnieuw toegepast worden zodra er iets gewijzigd is.
Maar mij niet bekend dat dat mogelijk is zonder een (zeer simpel) macro.
(wat niet wil zeggen dat het niet bestaat :P)
De oplossing die ik voorstel, heeft juist geen filters nodig.
Even wat pseudo code.
Als in kolom A de reeks met positieve en negatieve getallen staan met een header, dan:
kolom B (formule is voor B2) om aantal positieve getallen te tellen: =COUNTIFS($A$2:$A2,">0")
kolom C (formule is voor C2) om aantal negatieve getallen te tellen: =COUNTIFS($A$2:$A2,"<0")
kolom D (formule is voor D2) omdat ik lui ben en geen zin had om een index/match te programmeren: =A2

kolom H (formule is voor H2, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A2)-1,B:D,3,FALSE),"")
kolom I (formule is voor I2, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A2)-1,C:D,2,FALSE),"")

Je krijgt dan in kolom H en I netjes een rijtje met de positieve en negatieve getallen zonder witte velden er tussen.

[ Voor 9% gewijzigd door KabouterSuper op 06-07-2020 12:13 . Reden: Geklooi met headers, soms begon ik in rij 2, soms in rij 1 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 19:59

heuveltje

KoelkastFilosoof

KabouterSuper schreef op maandag 6 juli 2020 @ 12:03:
[...]

De oplossing die ik voorstel, heeft juist geen filters nodig.
Even wat pseudo code.
Als in kolom A de reeks met positieve en negatieve getallen staan, dan:
kolom B (formule is voor B2) om aantal positieve getallen te tellen: =COUNTIFS($A$2:$A2,">0")
kolom C (formule is voor C2) om aantal negatieve getallen te tellen: =COUNTIFS($A$2:$A2,"<0")
kolom D (formule is voor D2) omdat ik lui ben en geen zin had om een index/match te programmeren: =A1

kolom H (formule is voor H1, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A1),B:D,3,FALSE),"")
kolom I (formule is voor I1, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A1),C:D,2,FALSE),"")

Je krijgt dan in kolom H en I netjes een rijtje met de positieve en negatieve getallen zonder witte velden er tussen.
Ik heb hem nu 3 keer gelezer, maar ik snap het nog steends niet.
als regel 3 een negatief getal is, dan is H toch gewoon leeg.
Dus wat je wil werkt wel, (mits aantal regels gelijk blijft). maar vervolgens zijn alle regels met negatieve waarde op je positive blad toch gewoon blank ?

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • +2 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
heuveltje schreef op maandag 6 juli 2020 @ 12:14:
[...]


Ik heb hem nu 3 keer gelezer, maar ik snap het nog steends niet.
als regel 3 een negatief getal is, dan is H toch gewoon leeg.
Dus wat je wil werkt wel, (mits aantal regels gelijk blijft). maar vervolgens zijn alle regels met negatieve waarde op je positive blad toch gewoon blank ?
No problem, het is niet een voor de hand liggende truc. Zie hieronder de sheet die ik net gemaakt heb. Er zijn geen lege velden in kolom H en I.
Afbeeldingslocatie: https://tweakers.net/i/1rd0DJ2vM-vFKJMCGIJMFlsmVK8=/800x/filters:strip_icc():strip_exif()/f/image/igCYQvRqB4PeV47nnLoAfQdi.jpg?f=fotoalbum_large
De vlookup condenseert de lijst zodat er geen lege velden zijn. Dat doe ik door het rijnummer (of eigenlijk rijnummer -1) op te zoeken in kolom B en C. Bij een vlookup wordt altijd de eerste teruggegeven, wat in dit geval precies degene is die we nodig hebben.

[ Voor 20% gewijzigd door KabouterSuper op 06-07-2020 12:24 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Crxtreem
  • Registratie: Augustus 2007
  • Niet online
Ik heb hem even naar Nederlands omgezet en dit stukje werkt.
Vanavond eens kijken of ik dit in mijn eigen bestand ook zo werkend krijg.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Crxtreem schreef op maandag 6 juli 2020 @ 12:34:
Ik heb hem even naar Nederlands omgezet en dit stukje werkt.
Vanavond eens kijken of ik dit in mijn eigen bestand ook zo werkend krijg.
Mooi. Je kunt waarschijnlijk wel kolom D vermijden met een index/match als je dat zou willen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 19:59

heuveltje

KoelkastFilosoof

KabouterSuper schreef op maandag 6 juli 2020 @ 12:03:
[...]

kolom B (formule is voor B2) om aantal positieve getallen te tellen: =COUNTIFS($A$2:$A2,">0")
kolom C (formule is voor C2) om aantal negatieve getallen te tellen: =COUNTIFS($A$2:$A2,"<0")
kolom D (formule is voor D2) omdat ik lui ben en geen zin had om een index/match te programmeren: =A2
Ah ik miste *het gebrek aan) 2e $ in de countif.
Dan werkt het inderdaad wel zoals je zegt.

Interessante oplossing !

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 23:55

g0tanks

Moderator CSA
KabouterSuper schreef op maandag 6 juli 2020 @ 12:03:
[...]

De oplossing die ik voorstel, heeft juist geen filters nodig.
Even wat pseudo code.
Als in kolom A de reeks met positieve en negatieve getallen staan met een header, dan:
kolom B (formule is voor B2) om aantal positieve getallen te tellen: =COUNTIFS($A$2:$A2,">0")
kolom C (formule is voor C2) om aantal negatieve getallen te tellen: =COUNTIFS($A$2:$A2,"<0")
kolom D (formule is voor D2) omdat ik lui ben en geen zin had om een index/match te programmeren: =A2

kolom H (formule is voor H2, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A2)-1,B:D,3,FALSE),"")
kolom I (formule is voor I2, hoort in eigen tabblad te staan) =IFERROR(VLOOKUP(ROW(A2)-1,C:D,2,FALSE),"")

Je krijgt dan in kolom H en I netjes een rijtje met de positieve en negatieve getallen zonder witte velden er tussen.
Mooie oplossing. Volgende uitdaging: automatisch sorteren. :P

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • +1 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
g0tanks schreef op maandag 6 juli 2020 @ 13:14:
[...]


Mooie oplossing. Volgende uitdaging: automatisch sorteren. :P
Challenge accepted >:)

Eerst de rank bepalen. Voor de positieve getallen bijv in kolom G: <G2>=IFERROR(RANK.EQ(H2,H:H,TRUE),-1)
Dan in kolom L de gesorteerde lijst: <L2>=IF(G2=-1,"",IFERROR(VLOOKUP(ROW(A2)-1,G:H,2,FALSE),M1))

Het lastigste is om de dubbele waarden ook terug te laten komen, aangezien een rank alleen de hoogste rank teruggeeft (of het average, maar daar heb je nog minder aan).

Update: binnen een kwartier opgelost. Anyone else :9 ?

[ Voor 4% gewijzigd door KabouterSuper op 06-07-2020 13:30 ]

When life gives you lemons, start a battery factory


Acties:
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

g0tanks schreef op maandag 6 juli 2020 @ 13:14:
[...]


Mooie oplossing. Volgende uitdaging: automatisch sorteren. :P
Die is alleen maar makkelijker (als je de route neemt via matrixformules):

Afbeeldingslocatie: https://tweakers.net/i/rg-H0d8wfS8_DuQvMBg0jslFsfg=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/BJawl1BH5kwGQcpDCXK2pxeL.png?f=user_large

De matrixformules voor ongesorteerd / gesorteerd:
code:
1
2
3
4
=ALS.FOUT(INDEX($A$1:$A$10;KLEINSTE(ALS($A$1:$A$10<0;RIJ($A$1:$A$10);"-");RIJ()));"")
=ALS.FOUT(INDEX($A$1:$A$10;KLEINSTE(ALS($A$1:$A$10>0;RIJ($A$1:$A$10);"-");RIJ()));"")
=ALS.FOUT(GROOTSTE(ALS($A$1:$A$10<0;$A$1:$A$10;"-");RIJ());"")
=ALS.FOUT(KLEINSTE(ALS($A$1:$A$10>0;$A$1:$A$10;"-");RIJ());"")


Ongesorteerd moet hij eerst een matrix opbouwen van rijnummers van getallen die kleiner resp groter zijn dan 0, of "-", en dan met index het getal ophalen.
gesorteerd bouwt hij een matrix op van getallen of "-" en pakt daar de k-grootste resp de k-kleinste van. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

KabouterSuper schreef op maandag 6 juli 2020 @ 13:29:
[...]
Update: binnen een kwartier opgelost. Anyone else :9 ?
Yep, en zonder hupkolommen. :P

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • +1 Henk 'm!

  • Crxtreem
  • Registratie: Augustus 2007
  • Niet online
Gisteravond werkend gekregen op de manier van @KabouterSuper in de lijst die ik zelf had.

Het is toch nog best een geworstel om de formule's in Libreoffice werkend te krijgen.
Maar ik ben weer een stap verder.

Volgende keer de matrix eens uit proberen.
Pagina: 1