Avatar billede cboss Nybegynder
11. september 2008 - 13:42 Der er 7 kommentarer og
1 løsning

Programmere VBA-kode til flytning af tekst i Excel

Hej,

Jeg har følgende udfordring:

Jeg skal gerne have flyttet de otte-cifrede numre ned i cellerne til venstre for de to-cifrede tal.

Eksempel:

50784095
23
35
27
97

50238095
27
35
97
35

50247820
35
97


Skal gerne se sådan ud:

50247820 35
50247820 97

...og fortløbende. Er det muligt at programmere sig ud af denne problemstilling?
Avatar billede jonesw Nybegynder
11. september 2008 - 23:18 #1
Når der er mellemrum mellem talllene, så er det vel okay at de bliver et tekst-felt ikke?
Avatar billede jonesw Nybegynder
11. september 2008 - 23:40 #2
Nå men så vidt jeg ved så er det kun muligt at lave et mellemrum i mellem to tal, hvis det er tekst-felter...

Men jeg har lavet denne lille makro, den skulle gerne virke efter hensigten... du skal blot ændre feltet allCells til det område som du ønsker at ændringen skal udføres for...

Public Sub flytTal()
Dim oneCell As Range
Dim addNumber As String
Dim allCells As Range
Dim eachNumber As String

Set allCells = Range("A1:A16")

For Each oneCell In allCells
    eachNumber = CStr(oneCell.Value)
    If Len(eachNumber) > 2 Then
        addNumber = eachNumber
    ElseIf Len(eachNumber) > 0 And Len(eachNumber) <= 2 Then
        oneCell.Value = addNumber & " " & eachNumber
    End If

Next


End Sub
Avatar billede cboss Nybegynder
12. september 2008 - 08:26 #3
Hej Jonesw,

Det virker fint - men jeg glemte måske at forklare i formuleringen, at det det otte-cifrede tal skal stå i en selvstændig celle lige til venstre for cellen med det to-cifrede tal.
Avatar billede jonesw Nybegynder
12. september 2008 - 10:47 #4
Okay.

Så bliver det som følger... Du skal selvfølgelig lige sørger for at der er en kolonne parat til venstre for den kolonne hvor du ønsker at tallene skal flyttes fra.
Endnu engang skal du vælge området i allCells

Public Sub flytTal()
Dim oneCell As Range
Dim addNumber As String
Dim allCells As Range
Dim eachNumber As String

Set allCells = Range("C1:C16")

For Each oneCell In allCells
    eachNumber = CStr(oneCell.Value)
    If Len(eachNumber) > 2 Then
        addNumber = eachNumber
    ElseIf Len(eachNumber) > 0 And Len(eachNumber) <= 2 Then
        oneCell.Offset(0, -1).Value = addNumber
    End If

Next


End Sub
Avatar billede cboss Nybegynder
12. september 2008 - 11:37 #5
Perfekt! Tak for hjælpen.

Hvordan får jeg tildelt dig dine point for svaret?
Avatar billede cboss Nybegynder
12. september 2008 - 11:38 #6
Perfekt! Tak for hjælpen.

Hvordan får jeg tildelt dig dine point for svaret?
Avatar billede jonesw Nybegynder
12. september 2008 - 12:04 #7
Det var godt... Jeg ligger lige et svar og så kan du give point...
Avatar billede cboss Nybegynder
12. september 2008 - 12:28 #8
Tak for hjælpen
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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