Avatar billede rickie Juniormester
06. maj 2003 - 20:37 Der er 7 kommentarer og
1 løsning

Opdel af cellinformation

Hej alle eksperter!

Jeg har ett problem med Excel. Det er sådan at jeg vil dele navn op i flere celler ved en filindläsning og har fået et "script". Problemet er bare at jeg ikke vil lave min "Selection" selv uden den skal automatiskt välge fex. A kolonen.
Resultatet/Opdelningen skal derefter, såfremt det er muligt lägges i A og B kolonnen

Hvis det ikek er muligt at den overskriver samme kolonne så er det okay.

Håber på hjälp! :-)

-------------------

Option Explicit

Sub Separera_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim vaData As Variant, vaFNamn() As Variant, vaENamn() As Variant
Dim i As Integer

vaData = Selection.Value

ReDim vaFNamn(1 To UBound(vaData))
ReDim vaENamn(1 To UBound(vaData))

'Här separeras för- och efternamn och tilldelas till varsin matris
For i = 1 To UBound(vaData)
    vaFNamn(i) = Left(vaData(i, 1), Application.Find(" ", vaData(i, 1), 1))
    vaENamn(i) = Right(vaData(i, 1), Len(vaData(i, 1)) - Len(vaFNamn(i)))
Next i

Application.ScreenUpdating = False

'Här skrivs data tillbaka till arbetsbladet till initilliggande kolumner
With Selection
    .Offset(0, 1).Resize(UBound(vaFNamn)) = Application.Transpose(vaFNamn)
    .Offset(0, 2).Resize(UBound(vaENamn)) = Application.Transpose(vaENamn)
End With

Application.ScreenUpdating = True
End Sub
Avatar billede bak Forsker
06. maj 2003 - 21:02 #1
Jeg er ikke meget for at rette i xl-Dennis's kode, men her kommer det alligevel :-)

Sub Separera_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim vaData As Variant, vaFNamn() As Variant, vaENamn() As Variant
Dim i As Integer, LastRow As Long
Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, 1))
rng.Select
vaData = rng
ReDim vaFNamn(1 To UBound(vaData))
ReDim vaENamn(1 To UBound(vaData))

'Här separeras för- och efternamn och tilldelas till varsin matris
For i = 1 To UBound(vaData)
    vaFNamn(i) = Left(vaData(i, 1), Application.Find(" ", vaData(i, 1), 1))
    vaENamn(i) = Right(vaData(i, 1), Len(vaData(i, 1)) - Len(vaFNamn(i)))
Next i

Application.ScreenUpdating = False

'Här skrivs data tillbaka till arbetsbladet till initilliggande kolumner
With Selection
    .Resize(UBound(vaFNamn)) = Application.Transpose(vaFNamn)
    .Offset(0, 1).Resize(UBound(vaENamn)) = Application.Transpose(vaENamn)
End With

Application.ScreenUpdating = True
End Sub
Avatar billede rickie Juniormester
06. maj 2003 - 21:10 #2
Du er simpelthen en perle. Jeg lover, at jeg ikke giver det videre.
Har prövet at kontakte XL for 14 dage siden men fik intet svar.

:-)

Her er pointen!
Avatar billede rickie Juniormester
06. maj 2003 - 21:11 #3
Öh! Hvordan giver jeg dig pointen? Den mulighed er väk eller er det mig der er dum? :-)
Avatar billede bak Forsker
06. maj 2003 - 21:15 #4
Jeg skal lige svare :-)
Her er samme kode, men gjort lidt mindre.

Option Explicit
Option Base 1
Sub Separera_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim vaData As Variant, vaFNamn() As Variant
Dim i As Integer, LastRow As Long
Dim rng As Range

Set rng = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, 1))
rng.Select
vaData = rng
ReDim vaFNamn(UBound(vaData), 2)
For i = 1 To UBound(vaData)
    vaFNamn(i, 1) = Left(vaData(i, 1), Application.Find(" ", vaData(i, 1), 1))
    vaFNamn(i, 2) = Right(vaData(i, 1), Len(vaData(i, 1)) - Len(vaFNamn(i, 1)))
Next i
rng.Resize(, 2) = vaFNamn
End Sub
Avatar billede rickie Juniormester
06. maj 2003 - 21:18 #5
OK! Hvordan får jeg den så til, at välge en anden kolonne som start?
I stedet for A så måske B?
Avatar billede bak Forsker
06. maj 2003 - 22:06 #6
Ja,Rickie. Du får lige et stykke nyt kode for at gøre det nemmere :-)
Når du skal ændre startkolonnen ændrer du bare denne linie Set Start = Range("c1")



Option Explicit
Option Base 1
Sub Separera_Namn()
'© 2002 Alla rättigheter XL-Dennis
Dim vaData As Variant, vaFNamn As Variant
Dim i As Integer, Start As Range
Set Start = Range("c1")

vaData = Range(Start.Address, Cells(65536, Start.Column).End(xlUp).Address)
ReDim vaFNamn(UBound(vaData), 2)
For i = 1 To UBound(vaData)
    vaFNamn(i, 1) = Left(vaData(i, 1), Application.Find(" ", vaData(i, 1), 1))
    vaFNamn(i, 2) = Right(vaData(i, 1), Len(vaData(i, 1)) - Len(vaFNamn(i, 1)))
Next i
Start.Resize(i - 1, 2) = vaFNamn
End Sub
Avatar billede rickie Juniormester
06. maj 2003 - 22:36 #7
Den kommer med en fejlmeddelelse når jeg tester det.

ReDim vaFNamn(UBound(vaData), 2)
Avatar billede rickie Juniormester
06. maj 2003 - 22:38 #8
Ups! Jeg var vist lige lidt dum. Glemte at ändre som du skrev.
Den er i orden....sorry og mange 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