Tekst samenvoegen in Excel uit 1 kolom met 40.000 tekens.

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Moby
  • Registratie: November 2003
  • Niet online

Moby

Iets te zeggen? Nou en!

Topicstarter
Ik probeer in Excel een tekst samen te voegen uit een bepaald bereik. Klinkt makkelijk, is het niet. Mijn tabel is ongeveer 40.000 rijen en 140 kolommen. In elke cel staat 1 letter en ik wil 1 kolom samenvoegen tot een stuk tekst van ongeveer 40.000 tekens. En dat lijkt teveel voor power query want deze lijkt te stoppen bij 12000 tekens. Tekst samenvoegen en uitvullen werkt ook niet in de praktijk

Ik werk met een Nederlandse Excel 2016. Weet iemand een oplossing?

Kink FM radio player. Doet aan ultracrepidarianisme

Alle reacties


Acties:
  • 0 Henk 'm!

  • _--[]--__
  • Registratie: Juni 2017
  • Laatst online: 11-10 13:08
Als je het niet veel vaker hoeft te doen: De rijen per 10.000 samenvoegen en daarna met de hand de tekst in de 4 samengevoegde cellen samenvoegen? (Soms kost alles automatiseren gewoon teveel tijd)

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Dus
d
i
t
i
s
e
e
n
t
e
k
s
t
moet worden: ditiseentekst?

Sla 1 kolom op als tekst, in een platte tekstverwerker (dus geen Word maar bijv Notepad+) zoek (enter) vervang door (niets).

Maar omdat je het geen 140x wilt herhalen, is een script beter. In powershell kan je een simpel script maken (voorbeeld: https://mcpmag.com/articl...text-with-powershell.aspx) dat het zoek&vervangen doet. Waarbij je de end of line vindt via `r of `r`n. (Waarschijnlijk is er namelijk zowel een carriagereturn als een linefeed code voor de 'enter' gebruikt).

In Excel transponeren zou het makkelijker maken, maar dat is bij 140x40000 vast geen pretje. En sowieso is het max aantal kolommen "slechts" 16K.

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


Acties:
  • 0 Henk 'm!

  • Sibrand
  • Registratie: Januari 2011
  • Nu online
Vba?

Iets in de richting van:

Dim i as long
Dim j as long
j = 1
For i = 2 to 40000
Range(j & 1).Value = Range(j & 1).Value & Range(J & i)
If i = 40000 then
J = j+1
I =2
End if
If J= 141 exit
Next i

Waarbij i voor de rijen staat, en j de kolommen. Dit is uit mijn hoofd even, dus ik weet zeker dat het zo niet werkt, maar misschien kun je er wat mee.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Die if i = 40000 zou ik vervangen door een tweede loop. Maar: dat gaat niet werken. Een cel in Excel kan geen 40.000 krakaters bevatten. Dit moet tenminste deels buiten Excel.

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


Acties:
  • +1 Henk 'm!

  • Steefph
  • Registratie: Juli 2002
  • Laatst online: 20:47
Met boven :)

Je loopt tegen deze limitatie aan

Total number of characters that a cell can contain
32,767 characters

https://support.office.co...43-467e-8e27-269d656771c3

Alles is terug te redeneren naar 4


Acties:
  • 0 Henk 'm!

  • CappieL
  • Registratie: November 2006
  • Laatst online: 09-10 16:25
Steefph schreef op woensdag 10 april 2019 @ 10:19:
Met boven :)

Je loopt tegen deze limitatie aan

Total number of characters that a cell can contain
32,767 characters

https://support.office.co...43-467e-8e27-269d656771c3
Tegen die limitatie kun je niets doen...

Acties:
  • 0 Henk 'm!

  • RocketKoen
  • Registratie: December 2001
  • Laatst online: 21:19
Als je het bovenstaande loopje pakt, maar de output in word of notepad doet in plaats van excel dan werkt het wel.
Moet je wel VBS gebruiken ipv VBA. Maar de code van het loopje blijft gelijk.

TheS4ndm4n#1919


Acties:
  • 0 Henk 'm!

  • Moby
  • Registratie: November 2003
  • Niet online

Moby

Iets te zeggen? Nou en!

Topicstarter
Powershell, VBA, VBS, code. Ik hoor het al, voor mij is het makkelijker om dit uit te besteden aan mensen die hier 2 minuten over doen. Het is niet op te lossen binnen Excel.

Bedankt in ieder geval.

Kink FM radio player. Doet aan ultracrepidarianisme


Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Moby schreef op woensdag 10 april 2019 @ 18:07:
voor mij is het makkelijker om dit uit te besteden aan mensen die hier 2 minuten over doen. Het is niet op te lossen binnen Excel.
Daar denk je toch te gemakkelijk over; de eerste die dat in twee minuten kan moet ik nog tegenkomen. Maar uiteraard gaat het wél in Excel !
Ervan uitgaand dat je gegevens in Excel in het eerste blad in de kolommen A:FD staan (160 kolommen, elk 40000 cellen groot), kun je onderstaande macro gebruiken, die je vanuit Excel kunt uitvoeren. De macro brengt je gegevens over naar een Wordbestand. Elke kolom van Excel neemt in Word (met gebruikmaking van lettertype Calibri en lettergrootte 11) bijna 9 pagina's in beslag (na elke negende pagina wordt een pagina-einde ingevoegd).
De gegevens van 10 Excelkolommen (400.000 cellen) naar Word overbrengen duurt op mijn (niet al te snelle) computer met deze macro bijna vijf seconden, dus ook voor 160 kolommen zal de tijd nog aanvaardbaar zijn. (Ter vergelijking: met een macro waarmee elk karakter afzonderlijk naar Word wordt overgebracht, duurt het overbrengen van 10 kolommen bijna een half uur).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Option Base 1
Sub macro2()
Dim myarray1(1), myarray2(1), mydoc As Object, a As Integer, x As Long, y As Long
Set mydoc = CreateObject(Class:="Word.Application")
With mydoc
.Visible = True
.documents.Add
.Activate
End With
For a = 1 To 160
With Sheets(1)
myarray1(1) = "": myarray2(1) = ""
For x = 1 To 20000
myarray1(1) = myarray1(1) & .Cells(x, a)
Next x
For y = 20001 To 40000
myarray2(1) = myarray2(1) & .Cells(y, a)
Next y
End With
Application.ScreenUpdating = False
With mydoc.Selection
.typetext "Kolom " & a & Chr(13)
.typetext myarray1(1)
.Collapse Direction:=0
.typetext myarray2(1)
.InsertBreak Type:=7
End With
Application.ScreenUpdating = True
Next a
Set mydoc = Nothing
End Sub
Wat ik mij afvraag: hoe kom je aan die lange kolommen in Excel met in elke cel slechts 1 karakter?
En wat moet je nu met 1440 Wordpagina's waarvan elke 9 pagina's bestaan uit 40.000 aaneengesloten karakters?

[ Voor 5% gewijzigd door dix-neuf op 13-04-2019 08:47 ]


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Wat ik mij afvraag: hoe kom je aan die lange kolommen in Excel met in elke cel slechts 1 karakter?
En wat moet je nu met 1440 Wordpagina's waarvan elke 9 pagina's bestaan uit 40.000 aaneengesloten karakters?
Dat is kennelijk te veel gevraagd...

Acties:
  • 0 Henk 'm!

  • Moby
  • Registratie: November 2003
  • Niet online

Moby

Iets te zeggen? Nou en!

Topicstarter
dix-neuf schreef op vrijdag 12 april 2019 @ 01:18:
[...]
Daar denk je toch te gemakkelijk over; de eerste die dat in twee minuten kan moet ik nog tegenkomen. Maar uiteraard gaat het wél in Excel !
Ervan uitgaand dat je gegevens in Excel in het eerste blad in de kolommen A:FD staan (160 kolommen, elk 40000 cellen groot), kun je onderstaande macro gebruiken, die je vanuit Excel kunt uitvoeren. De macro brengt je gegevens over naar een Wordbestand. Elke kolom van Excel neemt in Word (met gebruikmaking van lettertype Calibri en lettergrootte 11) bijna 9 pagina's in beslag (na elke negende pagina wordt een pagina-einde ingevoegd).
De gegevens van 10 Excelkolommen (400.000 cellen) naar Word overbrengen duurt op mijn (niet al te snelle) computer met deze macro bijna vijf seconden, dus ook voor 160 kolommen zal de tijd nog aanvaardbaar zijn. (Ter vergelijking: met een macro waarmee elk karakter afzonderlijk naar Word wordt overgebracht, duurt het overbrengen van 10 kolommen bijna een half uur).
[
Wat ik mij afvraag: hoe kom je aan die lange kolommen in Excel met in elke cel slechts 1 karakter?
En wat moet je nu met 1440 Wordpagina's waarvan elke 9 pagina's bestaan uit 40.000 aaneengesloten k
Dank je. Dit ga ik misschien nog proberen.

De grote hoeveelheid data komt doordat genoomdata is. Dan kom je vrij makkelijk aan deze aantallen.
dix-neuf schreef op woensdag 17 april 2019 @ 13:37:
[...]
Dat is kennelijk te veel gevraagd...
Sorry, ik was even vergeten dat ik het verplicht is om te vertellen waarom je iets vraagt. Stom van mij zeg.

Kink FM radio player. Doet aan ultracrepidarianisme


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Moby schreef op woensdag 17 april 2019 @ 15:40:
Dank je. Dit ga ik misschien nog proberen.
Wat gebruik je nu ?
De grote hoeveelheid data komt doordat genoomdata is. Dan kom je vrij makkelijk aan deze aantallen.
Dat begrijp ik. Moet(en) er dan na een bepaald aantal letters geen spatie (meerdere spaties) staan ?

Acties:
  • 0 Henk 'm!

  • Moby
  • Registratie: November 2003
  • Niet online

Moby

Iets te zeggen? Nou en!

Topicstarter
dix-neuf schreef op donderdag 18 april 2019 @ 11:54:
[...]

Wat gebruik je nu ?

[...]
Dat begrijp ik. Moet(en) er dan na een bepaald aantal letters geen spatie (meerdere spaties) staan ?
Nog niets, dit is meer iets wat leuk is om te hebben en te kunnen, niet iets dat ik nodig heb voor mijn werkzaamheden. Ik ben er dus nog niet verder mee gegaan.

En nee, spaties heb ik niet nodig. Dat zou er voor zorgen dat het inlezen van deze data gestopt wordt.


Overigens een leuke oefening die ook voort komt uit dit soort data. Ik heb een cel waar 5000 karakters in staan zonder scheidingsteken. Hoe krijg ik die in 5000 kolommen. Duurde wel even voordat ik daar iets op had gevonden.

Kink FM radio player. Doet aan ultracrepidarianisme


Acties:
  • +1 Henk 'm!

  • gwystyl
  • Registratie: Juni 2001
  • Laatst online: 22:40

gwystyl

Beugeltje dan maar?

Hoe krijg je het in de eerste plaats in Excel? Wordt de data dan al niet geïmporteerd uit een platte tekst / csv bestand oid? Als dat het geval is, is het misschien makkelijker om de ruwe data in een bepaald format te gieten dan te proberen zoveel cellen uit Excel samen te voegen.

De DNA-programma's waar ik in een ver verleden mee gewerkt heb slikte volgens mij alleen platte tekst, en het PCR-apparaat spuugde dat ook uit.
Moby schreef op woensdag 17 april 2019 @ 15:40:
[...]


Dank je. Dit ga ik misschien nog proberen.

De grote hoeveelheid data komt doordat genoomdata is. Dan kom je vrij makkelijk aan deze aantallen.
[...]


Sorry, ik was even vergeten dat ik het verplicht is om te vertellen waarom je iets vraagt. Stom van mij zeg.
Het is natuurlijk niet verplicht om te vertellen waarom je iets vraagt, maar dat kan wel voor context zorgen die het oplossen van het probleem makkelijker maakt. Daarnaast is het vaak gewoon interessant om te weten waarom iemand tegen een bepaald probleem aanloopt, en is het voor mensen die een vergelijkbaar probleem hebben makkelijker om een antwoord terug te vinden als er trefwoorden genoemd worden die zij gebruiken om mee te zoeken.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
gwystyl schreef op donderdag 18 april 2019 @ 13:18:
Het is natuurlijk niet verplicht om te vertellen waarom je iets vraagt, maar dat kan wel voor context zorgen die het oplossen van het probleem makkelijker maakt. Daarnaast is het vaak gewoon interessant om te weten waarom iemand tegen een bepaald probleem aanloopt, en is het voor mensen die een vergelijkbaar probleem hebben makkelijker om een antwoord terug te vinden als er trefwoorden genoemd worden die zij gebruiken om mee te zoeken.
Ik had het niet beter kunnen verwoorden.
En verder is het ook altijd wel interessant (vind ik) om te vernemen of de vragensteller met een antwoord geholpen is.
Moby schreef op donderdag 18 april 2019 @ 13:01:
Overigens een leuke oefening die ook voort komt uit dit soort data. Ik heb een cel waar 5000 karakters in staan zonder scheidingsteken. Hoe krijg ik die in 5000 kolommen. Duurde wel even voordat ik daar iets op had gevonden.
Jammer dat je niet vermeldde hoe je dat hebt opgelost.
Als in het eerste blad cel A1 de cel met 5000 karakters is,en je wil die karakters in de eerste rij in het tweede blad in afzonderlijke cellen, dan kan dat bv. zo:
code:
1
2
3
4
5
6
7
Sub macro1()
Dim mystr As String, y As Integer
mystr = Sheets(1).Range("A1").Value
For y = 1 To 5000
Sheets(2).Cells(1, y).Value = Mid(mystr, y, 1)
Next y
End Sub

Acties:
  • 0 Henk 'm!

  • Moby
  • Registratie: November 2003
  • Niet online

Moby

Iets te zeggen? Nou en!

Topicstarter
dix-neuf schreef op donderdag 18 april 2019 @ 17:46:
[...]
Ik had het niet beter kunnen verwoorden.
En verder is het ook altijd wel interessant (vind ik) om te vernemen of de vragensteller met een antwoord geholpen is.

[...]
Jammer dat je niet vermeldde hoe je dat hebt opgelost.
Als in het eerste blad cel A1 de cel met 5000 karakters is,en je wil die karakters in de eerste rij in het tweede blad in afzonderlijke cellen, dan kan dat bv. zo:
code:
1
2
3
4
5
6
7
Sub macro1()
Dim mystr As String, y As Integer
mystr = Sheets(1).Range("A1").Value
For y = 1 To 5000
Sheets(2).Cells(1, y).Value = Mid(mystr, y, 1)
Next y
End Sub
Dat heb ik met een formule weten op te lossen in de Nederlandse Excel

=DEEL($A1;KOLOM(A:A);1)

Maar dit is uit mijn hoofd

[ Voor 0% gewijzigd door Moby op 18-04-2019 22:28 . Reden: Welk laatste haakje? ]

Kink FM radio player. Doet aan ultracrepidarianisme


Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Dat is een prima oplossing !
(het laatste haakje moet je wel verwijderen).
Pagina: 1