Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wie kan mij helpen met onderstaand vraagstuk? Ik probeer een lijst te maken op basis van een bestaande lijst. Moeilijkheid zit in het plaatsen van de waarden in één cel en het scheiden van de waarden door middel van pipes.

Gewenste lijst:

Term 1 waarde 1||waarde2||waarde3||waarde4||waarde5||waarde6||waarde7||waarde8||waarde9
Term 2 waarde 1||waarde2
Term 3 waarde 1||waarde2||waarde3||waarde4||waarde5||waarde6

Bronlijst:

Term 1 waarde 1
Term 1 waarde 2
Term 1 waarde 3
Term 1 waarde 4
Term 1 waarde 5
Term 1 waarde 6
Term 1 waarde 7
Term 1 waarde 8
Term 1 waarde 9
Term 2 waarde 1
Term 2 waarde 2
Term3 waarde 1
Term3 waarde 2
Term3 waarde 3
Term3 waarde 4
Term3 waarde 5
Term3 waarde 6

Acties:
  • 0 Henk 'm!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 17:53
Ik denk dat je via een draaitabel wel je bronlijst kan omvormen naar het juiste format, waarbij dan nog wel iedere waarde in een aparte cel zal staan.

Edit: Ik probeerde het even, maar een draaitabel gaat niet werken. Toevallig was laatst wel een functie hier langsgekomen die je bronlijst kan omvormen. [EXCEL] Meerdere resultaten INDEX en VERGELIJKEN

Afbeeldingslocatie: https://www.mupload.nl/img/wcehqb1ouv7nj.jpg

Vervolgens kun je deze cellen samenvoegen met een custom functie. Chip Pearson heeft hier een functie voor geschreven die hij direct op zijn site deelt: http://www.cpearson.com/excel/stringconcatenation.aspx

Als je die code (onderaan de pagina) even in een module in je Excel bestand plakt (via alt + F11) kun je met de formule hieronder de cellen van 1 rij samenvoegen. (Of het .bas bestandje via alt + f11 importeren dat je op de site van Chip Pearson kunt downloaden)

code:
1
=StringConcat("|",F1:Q1)

[ Voor 27% gewijzigd door Atanamir op 18-07-2017 11:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Top! Dank je wel. Dit zet me op het goede spoor. Ik heb n.a.v. het toepassen van de StringConcat nog één vraag.

StringConcat gebruikt een bereik. Dat bereik kan zijn cel B1:B9. Dat is het bereik, voor Term1. Wat ik me nu afvraag is of ik dat bereik ook relatief kan maken. Ik denk aan een formule als:

Waar "Term1" in "Kolom A" voorkomt, geef me het "Adres" van de eerste naastgelegen "Cel" terug én het "Adres" van de laatste naastgelegen "Cel", gescheiden door een ":". Dat zou de gehele bewerking tot een enkele handeling beperken.

Acties:
  • 0 Henk 'm!

  • Atanamir
  • Registratie: December 2014
  • Laatst online: 17:53
Ik gebruik zelf altijd de OFFSET functie om een bereik flexibel te maken.
Je kunt hier namelijk een range aangeven, welke je doormiddel van een COUNTA of iets dergelijks weer afhankelijk kunt maken van het aantal cellen dat een waarde heeft.

http://www.excel-easy.com/examples/offset.html

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb hem aan de praat. Was een kwestie van nog net wat meer aandacht. Super! Tijd voor een wijntje.

Onwijs bedankt voor jullie hulp! Belangrijk om te weten was even de relatie tussen de {} en CTRL SHIFT ENTER.

[ Voor 139% gewijzigd door Verwijderd op 19-07-2017 21:47 . Reden: Nieuwe inzichten ]


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Wat is het nu geworden? Bedank dat de concatfunctie ook in een matrixformule gebruikt kan worden, waardoor je de eerste stap met index en vergelijken kunt overslaan. Uit de documentatie;
Concatenation In An Array Formula (entered with CTRL SHIFT ENTER)
=StringConcat("|",IF(B30:B39>4,C30:C39,""))
returns the values from cells C30:C39, separated by a | character where the corresponding value in the range B30:B39 is greater than 4.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK, ik heb nogmaals gekeken naar de formule en nu is hij inderdaad nog eenvoudiger. Top! Om omslachtig uitleggen te voorkomen voeg ik een screenshot toe. Oh nee, toch niet... ik heb niet zoveel karma. Ik heb wel een mooie screenshot.

De formule: (het VB-script voor StringConcat is geimporteerd)

=StringConcat("||";ALS(A1:A17=E1;B1:B17;""))

Het resultaat:

Oorspronkelijke tabel: Nieuwe tabel:

Term1 1 Term1 1||2||3||4||5||6||7||8||9
Term1 2 Term2 1|2
Term1 3 Term3 1|2|3|4|5|6
Term1 4
Term1 5
Term1 6
Term1 7
Term1 8
Term1 9
Term2 1
Term2 2
Term3 1
Term3 2
Term3 3
Term3 4
Term3 5
Term3 6


Ik heb e.e.a. vandaag toegepast voor de opstellen van CVS-bestanden voor de Add-On "Insight" in Jira. Bespaart me een hoop tijd. Thx! Fijn dat jullie me hebben geholpen.
Pagina: 1