/ Forside / Teknologi / Administrative / MS-Office / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Ombytning af ord i Excel
Fra : Michael Lund Sørense~


Dato : 26-06-02 00:49

Jeg har en kolonne med navne i Excel og jeg vil gerne have det sidste navn
(efternavnet) til at stå først.

Kan man lave en makro der lig snupper hele kolonnen og tager det sidste navn
og sætter det først (gerne med et komma efter navnet) ?
OBS der er altid minimum 2 navne adskilt med et mellemrum.

Eksempel:

Michael Lund Sørensen -> Sørensen, Michael Lund
Michael Lund-Sørensen -> Lund-Sørensen, Michael

Peter Hansen -> Hansen, Peter
Peter-Hansen Fejl!

Navene står i Excel, men hvis det er nemmere at bytte rundt i Word kan jeg
flytte navene der over.

--
Hilsen
Michael Lund Sørensen
www.milux.dk.sletdette





 
 
Leo Heuser (26-06-2002)
Kommentar
Fra : Leo Heuser


Dato : 26-06-02 07:25

Michael

Her er én måde at gøre det på.
Stil dig i startcellen og kør makroen.
Startcellen og alle celler under denne vil nu få
fornavne og efternavn byttet om med "komma mellemrum"
(DelimitChar) imellem.

Du kan også køre med en fast indstilling ved at fjerne de enkelte
citationstegn i linjerne

' SearchColumn = "A"
' FirstRow = 1

og i stedet sætte dem forrest i linjerne

With ActiveCell
SearchColumn = Split(.Address, "$")(1)
FirstRow = .Row
End With

Kopier og indsæt nedenstående kode i et almindeligt modul
(<Alt><F11>, Insert > Module)

Funktionerne StrReverse og Split blev først introduceret
i Excel 2000, derfor begrænsningen.

--
Med venlig hilsen
Leo Heuser


Sub OmbytNavne()
'Leo Heuser, 26-6-2002
'Virker kun i Excel 2000 og frem
Dim Counter As Long
Dim DelimitChar As String
Dim FirstRow As Long
Dim Rev1 As String
Dim Rev2 As String
Dim RevSearchData As String
Dim SearchColumn As String
Dim SearchRange As Range
Dim SearchData As Variant

On Error Resume Next

' SearchColumn = "A"
' FirstRow = 1

DelimitChar = ", "

With ActiveCell
SearchColumn = Split(.Address, "$")(1)
FirstRow = .Row
End With

Set SearchRange = Range(Range(SearchColumn & FirstRow), _
Range(SearchColumn & 65536).End(xlUp))

SearchData = SearchRange.Value

For Counter = 1 To UBound(SearchData, 1)
If Not IsEmpty(SearchData(Counter, 1)) Then
RevSearchData = StrReverse(SearchData(Counter, 1))
Rev1 = Left(RevSearchData, InStr(RevSearchData, Chr(32)) - 1)
Rev2 = Mid(RevSearchData, InStr(RevSearchData, Chr(32)) + 1)
SearchData(Counter, 1) = StrReverse(Rev1) & _
DelimitChar & StrReverse(Rev2)
End If
Next Counter

SearchRange.Value = SearchData

End Sub





"Michael Lund Sørensen" <hold-diskussionen-i@nyhedsgruppen-tak.dk> skrev i
en meddelelse news:1k7S8.9629$va.852834@news000.worldonline.dk...
> Jeg har en kolonne med navne i Excel og jeg vil gerne have det sidste navn
> (efternavnet) til at stå først.
>
> Kan man lave en makro der lig snupper hele kolonnen og tager det sidste
navn
> og sætter det først (gerne med et komma efter navnet) ?
> OBS der er altid minimum 2 navne adskilt med et mellemrum.
>
> Eksempel:
>
> Michael Lund Sørensen -> Sørensen, Michael Lund
> Michael Lund-Sørensen -> Lund-Sørensen, Michael
>
> Peter Hansen -> Hansen, Peter
> Peter-Hansen Fejl!
>
> Navene står i Excel, men hvis det er nemmere at bytte rundt i Word kan jeg
> flytte navene der over.
>
> --
> Hilsen
> Michael Lund Sørensen
> www.milux.dk.sletdette
>
>
>
>







Michael Lund Sørense~ (26-06-2002)
Kommentar
Fra : Michael Lund Sørense~


Dato : 26-06-02 12:08

Hej Leo

Endnu engang mange tak til dig!
Du fåe en tilbage melding når jeg har prøvet makroen.

--
Hilsen
Michael Lund Sørensen
www.milux.dk.sletdette





Leo Heuser (27-06-2002)
Kommentar
Fra : Leo Heuser


Dato : 27-06-02 06:32

Velbekomme, Michael!



"Michael Lund Sørensen" <hold-diskussionen-i@nyhedsgruppen-tak.dk> skrev i
en meddelelse news:6ghS8.9695$va.878295@news000.worldonline.dk...
> Hej Leo
>
> Endnu engang mange tak til dig!
> Du fåe en tilbage melding når jeg har prøvet makroen.
>
> --
> Hilsen
> Michael Lund Sørensen
> www.milux.dk.sletdette
>
>
>
>



Leo Heuser (27-06-2002)
Kommentar
Fra : Leo Heuser


Dato : 27-06-02 08:44

Jeg sender en fortrydelsesrutine senere på dagen (eller imorgen)



"Leo Heuser" <leo.heuser@adslhome.dk> skrev i en meddelelse
news:3d1aa71b$0$1468$edfadb0f@dspool01.news.tele.dk...
> Velbekomme, Michael!
>
>
>
> "Michael Lund Sørensen" <hold-diskussionen-i@nyhedsgruppen-tak.dk> skrev i
> en meddelelse news:6ghS8.9695$va.878295@news000.worldonline.dk...
> > Hej Leo
> >
> > Endnu engang mange tak til dig!
> > Du fåe en tilbage melding når jeg har prøvet makroen.
> >
> > --
> > Hilsen
> > Michael Lund Sørensen
> > www.milux.dk.sletdette
> >
> >
> >
> >
>
>



N/A (28-06-2002)
Kommentar
Fra : N/A


Dato : 28-06-02 07:52



Leo Heuser (28-06-2002)
Kommentar
Fra : Leo Heuser


Dato : 28-06-02 07:52

Tak for tilbagemeldingen!
Ja, du ville jo nok have haft "fast arbejde" i et stykke tid

Resultatet af en makro kan ikke fortrydes med fortrydknappen
(eller <Ctrl>z), så hvis "katastrofen" skulle indtræffe, og du kom
til at køre rutinen to (eller flere) gange på de samme navne
(eller blot ville tilbage til den oprindelige opstilling), så vidste
du pludselig, hvad du skulle få de næste dage (uger)
til at gå med
For at forhindre denne situation har jeg lavet en fortrydelses-
rutine. Trykker du fx 6 gange på "Ombyt", skal du blot trykke 6
gange på "FortrydOmbyt" osv., og du er tilbage ved udgangs-
punktet.

Samtidig har jeg lavet lidt om på den originale rutine, så man
nu kan køre den på ord, hvor adskillelsestegnet er et andet
end mellemrum (SeparatorChar). Læg mærke til, at der nu ikke
er noget mellemrum (eller andet SeparatorChar) i DelimitChar.
(Med mindre du altså explicit ønsker, at DelimitChar skal bestå af flere
tegn)

--
Med venlig hilsen
Leo Heuser

OmbytNavne()
'Leo Heuser, 28-6-2002
'Virker kun i Excel 2000 og frem
Dim Counter As Long
Dim DelimitChar As String
Dim FirstRow As Long
Dim Rev1 As String
Dim Rev2 As String
Dim RevSearchData As String
Dim SearchColumn As String
Dim SearchRange As Range
Dim SearchData As Variant
Dim SeparatorChar As String

On Error Resume Next

' SearchColumn = "A"
' FirstRow = 1

SeparatorChar = " " 'Tegnet mellem ordene (her mellemrum)
DelimitChar = ","

With ActiveCell
SearchColumn = Split(.Address, "$")(1)
FirstRow = .Row
End With

Set SearchRange = Range(Range(SearchColumn & FirstRow), _
Range(SearchColumn & 65536).End(xlUp))

SearchData = SearchRange.Value
DelimitChar = DelimitChar & SeparatorChar

For Counter = 1 To UBound(SearchData, 1)
If Not IsEmpty(SearchData(Counter, 1)) Then
RevSearchData = StrReverse(SearchData(Counter, 1))
Rev1 = Left$(RevSearchData, _
InStr(RevSearchData, SeparatorChar) - 1)
Rev2 = Mid$(RevSearchData, _
InStr(RevSearchData, SeparatorChar) + 1)
SearchData(Counter, 1) = StrReverse(Rev1) & _
DelimitChar & StrReverse(Rev2)
End If
Next Counter

SearchRange.Value = SearchData

End Sub



Sub FortrydOmbytNavne()
'Leo Heuser, 28-6-2002
'Virker kun i Excel 2000 og frem
Dim Counter As Long
Dim DelimitChar As String
Dim FindDelimitChar As Long
Dim FirstRow As Long
Dim LeftPart As String
Dim RightPart As String
Dim SearchColumn As String
Dim SearchRange As Range
Dim SearchData As Variant
Dim SeparatorChar As String

On Error Resume Next

' SearchColumn = "A"
' FirstRow = 1

SeparatorChar = " " ' Tegnet mellem ordene (her mellemrum)
DelimitChar = ","

With ActiveCell
SearchColumn = Split(.Address, "$")(1)
FirstRow = .Row
End With

Set SearchRange = Range(Range(SearchColumn & FirstRow), _
Range(SearchColumn & 65536).End(xlUp))

SearchData = SearchRange.Value
DelimitChar = DelimitChar & SeparatorChar

For Counter = 1 To UBound(SearchData, 1)
FindDelimitChar = InStr(SearchData(Counter, 1), DelimitChar)
If FindDelimitChar > 0 Then
LeftPart = _
Left$(SearchData(Counter, 1), FindDelimitChar - 1)
RightPart = _
Mid$(SearchData(Counter, 1), FindDelimitChar + _
Len(DelimitChar))
SearchData(Counter, 1) = _
RightPart & SeparatorChar & LeftPart
End If
Next Counter

SearchRange.Value = SearchData

End Sub


"Michael Lund Sørensen" <hold-diskussionen-i@nyhedsgruppen-tak.dk> skrev i
en meddelelse news:ZAoS8.9834$va.918172@news000.worldonline.dk...
> Som sædvanligt virkede det bare perfekt !
> 10.000 navne på et sekund! Hvor lang tid ville det ikke have taget mig?

>
> --
> Hilsen
> Michael Lund Sørensen
> www.milux.dk.sletdette
>
>
>













Michael Lund Sørense~ (28-06-2002)
Kommentar
Fra : Michael Lund Sørense~


Dato : 28-06-02 22:03

Hej Leo

Endnu engang tak for flot arbejde! Det virker perfekt.
Faktisk havde jeg brug for fortryd funktionen forleden, men jeg klarede det
ved at droppe filen og starte forfra. Det var ikke meget der gik tabt, men
din nye funktion kan komme i anvendelse.

--
Hilsen
Michael Lund Sørensen
www.milux.dk.sletdette





Leo Heuser (29-06-2002)
Kommentar
Fra : Leo Heuser


Dato : 29-06-02 06:17

Velbekomme, Michael.


"Michael Lund Sørensen" <hold-diskussionen-i@nyhedsgruppen-tak.dk> skrev i
en meddelelse news:O94T8.89926$N46.2460047@news010.worldonline.dk...
> Hej Leo
>
> Endnu engang tak for flot arbejde! Det virker perfekt.
> Faktisk havde jeg brug for fortryd funktionen forleden, men jeg klarede
det
> ved at droppe filen og starte forfra. Det var ikke meget der gik tabt,
men
> din nye funktion kan komme i anvendelse.
>
> --
> Hilsen
> Michael Lund Sørensen
> www.milux.dk.sletdette
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste