Avatar billede Molly4200 Nybegynder
11. februar 2014 - 13:52 Der er 37 kommentarer og
1 løsning

Tekst til kolonner - varierende antal navne i Excel

Hejsa,

Jeg kan godt dele teksten i en celle op; men hvordan håndterer jeg:

Jens Peter Hansen 108,57
Jens Hansen 108,57
Jens Peter Karl Hansen 108,57
J. P. Hansen 108,57
Hansen 108,57

så beløbet altid kommer til at stå i samme kolonne?

På forhånd tak for hjælpen :)

Molly4200
Avatar billede supertekst Ekspert
11. februar 2014 - 14:16 #1
Er det en bestående liste eller en der løbende ajourføres?

Lidt formel-akrobatik kan gøre det eller en makro.

og så velkommen til Eksperten.
Avatar billede Molly4200 Nybegynder
11. februar 2014 - 14:26 #2
Mange tak for velkomsten. Har i perioder været en flittig gæst herinde; men denne gang har jeg simpelthen ikke tid til at læse alle svarene igennem vedr. dette emne :) Fantastisk meget brugbar viden i dette forum!

Det er en funktion, som jeg sandsynligvis skal bruge ofte.

Mvh
Molly4200
Avatar billede supertekst Ekspert
11. februar 2014 - 14:43 #3
Selv tak

Er det i den samme fil eller ?
Avatar billede Molly4200 Nybegynder
11. februar 2014 - 14:56 #4
Altså... jeg er nødt til at kopiere noget tekst fra et system, hvor jeg ikke kan udlæse til Excel.

Når jeg vælger "indsæt speciel" i Excel får jeg kun 2 muligheder: Unicode-tekst eller tekst. Ligegyldig hvad jeg vælger er resultatet det samme. Ved at benytte funktionen "tekst til kolonner" kommer jeg et langt stykke vej, men da ikke alle navne består af samme antal mellemrum, står det vigtigste, beløbet, i forskellige kolonner.

Håber det giver mening :)
Avatar billede supertekst Ekspert
11. februar 2014 - 15:15 #5
Ok
Men er det den samme fil, som du kopiere til?

Hvis ja - så kunne en lille makro splitte teksten i kolonne A og placere beløbet automatisk i kolonne B
Avatar billede Molly4200 Nybegynder
11. februar 2014 - 15:26 #6
Ja, det er den samme fil
Avatar billede supertekst Ekspert
11. februar 2014 - 15:32 #7
Prøver at konstruere en makro..
Avatar billede supertekst Ekspert
11. februar 2014 - 15:34 #8
PS: Når du kopiere, er der så tale om flere navne & beløb ad gangen?
Avatar billede Molly4200 Nybegynder
11. februar 2014 - 16:13 #9
1 celle indeholder 1 rækkes data (regningsnr., dato 1, dato 2, cpr-nr., fulde navn, beløb)

Kun 1 celle pr. række. Men der kan sagtens være mange rækker.

Er det dét, du mener?
Avatar billede supertekst Ekspert
11. februar 2014 - 16:19 #10
Har konstrueret en lille model baseret på dit eksempel.
Hvis du vil afprøve makroen - så kan du sende en mail - så får du min model. VBA-koden er placeret under arket.

Marker de celler i kolonne A (sammenhængende), der skal have beløbet udtrukket til kolonne B. Derefter "højre klik" i markeringen.

@-adresse under min profil.
Avatar billede supertekst Ekspert
11. februar 2014 - 16:20 #11
VBA-kode:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim tabel As Variant, beløb As Double, navn As String
Dim cc
    Application.ScreenUpdating = False
   
    For Each cc In Selection.Rows
      If cc <> "" And Target.Column = 1 Then
            tabel = Split(cc, " ")
            beløb = tabel(UBound(tabel))
           
            tabel = Split(cc, beløb)
            navn = Trim(tabel(0))
           
            Cells(cc.Row, 1) = navn
            Cells(cc.Row, 2) = beløb
        End If
    Next cc
Cancel = True
End Sub
Avatar billede supertekst Ekspert
11. februar 2014 - 16:24 #12
Havde ikke set #9

Ja - koden kan godt "klare flere rækker"

Men står det hele i samme celle når du har indsat det?
Så bør alle felter jo adskilles...
Avatar billede Molly4200 Nybegynder
11. februar 2014 - 18:00 #13
Det er simpelthen så pænt af dig at bruge tid på dette... Men må indrømme, at jeg forstår ikke dit svar nr. 11. Jeg synes selv, at jeg er forholdsvis god til formler i Excel, men kodning??? Aner ikke hvordan jeg skal gribe det an.

Funktionen "tekst til kolonner" skiller tingene ad. Mit problem er, at navne kan bestå af mange ord, som alle er adskilt af et mellemrum. Beløbene kommer derfor til at stå i forskellige kolonner alt efter hvor mange navne en given person har.

Jeg skal bruge det til daglig afstemning af indbetalinger
Avatar billede supertekst Ekspert
11. februar 2014 - 22:51 #14
VBA-koden skal du ikke spekulere på. Du skal blot vide hvordan den skal anvendes.

Løsningen kan udvides således, at du ikke behøver anvende "tekst til kolonner", idet alle felter vil blive isoleret og placeret.

Vender tilbage..
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 08:38 #15
Super! Tak :)
Avatar billede supertekst Ekspert
12. februar 2014 - 10:17 #16
Hvad adskiller de enkelte data? Er det komma som du beskriver i #9 eller ?

1 celle indeholder 1 rækkes data (regningsnr., dato 1, dato 2, cpr-nr., fulde navn, beløb)
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 10:22 #17
Det bliver adskilt af mellemrum
Avatar billede supertekst Ekspert
12. februar 2014 - 10:26 #18
Ok
Avatar billede Slettet bruger
12. februar 2014 - 10:48 #19
Hvis en formel så prøv med denne i B1 (din tekst i A1):

=SLÅ.OP(9^9;--HØJRE(A1;RÆKKE($1:$100)))


LOOKUP hedder den hvis du bruger engelsksproget Excel.
Avatar billede supertekst Ekspert
12. februar 2014 - 10:50 #20
Rem Version 2
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim tabel As Variant, regNr, dato1 As Date, dato2 As Date, cprNr As String, navn As String, beløb As Double
Dim cc, antalFelter As Integer, f As Integer
    Application.ScreenUpdating = False
   
    For Each cc In Selection.Rows
      If cc <> "" And Target.Column = 1 Then
Rem opdel celledata i tabel(array) efter mellemrum
            tabel = Split(cc, " ")
            antalFelter = UBound(tabel)
           
            beløb = tabel(UBound(tabel))
           
            regNr = tabel(0)
            dato1 = tabel(1)
            dato2 = tabel(2)
            cprNr = tabel(3)
           
Rem Opbyg navn på basis af variable antal felter
            navn = ""
            For f = 4 To antalFelter - 1
                navn = navn & tabel(f) & " "
            Next f
           
            Range("A" & cc.Row) = regNr
            Range("B" & cc.Row) = dato1
            Range("C" & cc.Row) = dato2
            Range("D" & cc.Row) = cprNr
            Range("E" & cc.Row) = Trim(navn)
            Range("F" & cc.Row) = beløb
        End If
    Next cc

Rem Tilpas kolonnebredde
    Columns.AutoFit
   
Cancel = True
End Sub
Avatar billede supertekst Ekspert
12. februar 2014 - 10:51 #21
#20 - fejl - ikke denne tråd - undskyld forstyrrelsen :-)
Avatar billede supertekst Ekspert
12. februar 2014 - 10:52 #22
Jo - det var alligevel
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 11:41 #23
Hej Supertekst,

Det virker! :)

Men nu har jeg en udfordring, som jeg ikke synes, jeg havde igår. Nu deler den beløbet, når kopierer, så kroner bliver i kolonne A og øre lander i kolonne B. Det har altså ikke noget med din formular at gøre.

Jeg er ret overbevist om, at det ikke forholdt sig således i går; men jeg kan ikke se, hvad jeg gør anderledes, når jeg kopierer. Har stadig kun to muligheder for at indsætte speciel: Unicode-tekst og tekst... Har du et bud?
Avatar billede supertekst Ekspert
12. februar 2014 - 11:48 #24
Hej Molly4200

Hvad er det der virker? Er det funktionen fra #19 eller ...
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 11:52 #25
Ja. #19
Avatar billede supertekst Ekspert
12. februar 2014 - 11:57 #26
Det er ikke mit indlæg.
Avatar billede Slettet bruger
12. februar 2014 - 12:17 #27
Foreslår der gives point til supertekst. Han har lavet et stort arbejde.

Hans
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 12:18 #28
Næ, det kan jeg da godt se nu, Supertekst.

Tak til både Supertekst og dkhanknu for at bruge tid på at hjælpe. Det sætter jeg virkelig pris på.

:)
Molly4200
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 12:23 #29
Hej Hans,

Det gør jeg gerne. Er ny herinde. Hvordan gør jeg? :)
Avatar billede Slettet bruger
12. februar 2014 - 12:46 #30
Du spørger supertekst om at afgive et svar. Når han har gjort det accepterer du hans svar, hvorefter han får tildelt point.

Du kan i øvrigt læse om det på FAQ'en (øverst ud ad til højre)

Hans
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 13:28 #31
Point til Supertekst
Avatar billede Slettet bruger
12. februar 2014 - 13:34 #32
Om igen Molly4200

Du skal få supertekst til at give et svar, som du så efterfølgende accepterer.
Avatar billede supertekst Ekspert
12. februar 2014 - 13:47 #33
#32
Hej Hans & Molly4200

Molly4200 har oprettet et nyt spørgsmål med Point til Supertekst.
Da nu Molly4200 har lagt et svar her - var det så måske nemmest at hun selv Accepterede dette - #31

Ja det kan være svært.. :-)
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 14:50 #34
Jamen, så accepterer jeg mit eget svar - tror jeg nok :)
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 14:51 #35
F***

Nå, men... hvordan lukker jeg dette spørgsmål ned?
Avatar billede supertekst Ekspert
12. februar 2014 - 15:21 #36
Spørgsmålet lukkes ikke ned - men er markeret som besvaret og accepteret (Grøn markering) - så Ok
Avatar billede Molly4200 Nybegynder
12. februar 2014 - 15:29 #37
Man skal helst lære noget nyt hver dag.

Jeg sætter hermed "tjek" udfor det punkt i kalenderen :)
Avatar billede supertekst Ekspert
12. februar 2014 - 15:40 #38
Det gør man blandt andet på "Eksperten"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester