Avatar billede flashit Nybegynder
12. april 2003 - 18:32 Der er 12 kommentarer og
1 løsning

Storer bokstav i starten af et navn

Hej E
Jeg har en Excel fil med en masse navne i:

EKS:

Navn                  Ard          By      Postnr
FORNAVN EFTERNAVN    VEJNAVN 19    BYNAVN  1234

Nu vil jeg gerne have konveteret då det bliver "rigtigt"

Skal være:

Navn                  Ard          By      Postnr
Fornavn Efternavn    Vejnavn      Bynavn  1234

Jeg er kommet til følgende kode:

Sub test()
Dim test As String
Dim stortBNavn As String

    test = Range("a2")
    test = LCase(test)
   
stortBNavn = Left(test, 1)
stortBNavn = UCase(stortBNavn)
test = Mid(test, 2)

MsgBox " " & stortBNavn & "" & test & ""
Range("F19").Select

End Sub

Men hvor dan får jeg den til at søje hele excel arket igennem og rette den til at det kun er det føreste bokstav i starten og efter et mellemrum som er med store bokstaver.
Avatar billede kabbak Professor
12. april 2003 - 18:40 #1
STORT.FORBOGSTAV("forenede NATIONER") er lig med "Forenede Nationer"
Avatar billede kabbak Professor
12. april 2003 - 18:40 #2
dette er en funktion
Avatar billede kabbak Professor
12. april 2003 - 18:44 #3
kan du ikke bruge den i nogle kolonner til højre.

når du har gjort det, kopier dem og sig indsæt specielt værdier, så er formlen væk.
Avatar billede flashit Nybegynder
12. april 2003 - 19:24 #4
Pas pas pas.
Hvad er det du mener????
Avatar billede martin_moth Mester
12. april 2003 - 19:24 #5
Og nu du er i gang, så ret forkortelsen af "Adresse" fra "Ard" til "Adr" ;o)
Avatar billede kabbak Professor
12. april 2003 - 19:31 #6
I en tom celle til højre skriver du

=STORT.FORBOGSTAV(A1)
den trækker du så til højre lige så mange kolonner som der er data i der skal oversættes.
maker alle formelerne og træk dem nedad indtil der ikke er flere data
Avatar billede kabbak Professor
12. april 2003 - 20:01 #7
Hvis kun det er det første bogstav i cellen der skal være stort, kan denne makro bruges,

Sub test()
Dim test1, test2 As String, C, K, SK, SC  As Integer
SK = 4 ' sidste kolonne der skal oversættes
SC = ActiveCell.SpecialCells(xlLastCell).Row ' finder sidste række
For C = 1 To SC
For K = 1 To SK
Cells(C, K) = Left(Cells(C, K), 1) & LCase(Right(Cells(C, K), Len(Cells(C, K)) - 1))
  Next K
  Next C

End Sub
Avatar billede flashit Nybegynder
13. april 2003 - 00:29 #8
Super kabbak, men hvad nu når jeg også skal have det første bogstav efter et mellemrum med stort??
Avatar billede flashit Nybegynder
13. april 2003 - 00:31 #9
Det må da være muligt at bruge len funktionen til at tælle sig frem til placeringen af et mellemrun og så lægge en til..

Jeg kan bare ikke finde funktionen der finder et mellemrun :-(
Avatar billede flashit Nybegynder
13. april 2003 - 02:30 #10
OK så der der fanme dømt spagetti, med det virker :-)

Sub mellemrum()
Dim navn As String
Dim antal As Integer
Dim i As Integer
Dim forbokstav As String
Dim fornavn As String
Dim fornavn2 As String
Dim pos As Integer
Dim efternavn As String
Dim efternavn2 As String
Dim mellemrum As Integer
Dim ferdig As String
Dim C, K, SK, SC  As Integer

SK = 4
SC = ActiveCell.SpecialCells(xlLastCell).Row
For C = 1 To SC
For K = 1 To SK

navn = Cells(C, K)
navn = LCase(navn)
antal = Len(navn)

fornavn = Left(navn, 1)
fornavn = UCase(fornavn)

pos = InStr(1, navn, " ")

If pos > 1 Then
    mellemrum = pos + 1
        efternavn = Mid(navn, mellemrum, 1)
        efternavn = UCase(efternavn)
        fornavn2 = Mid(navn, 2, (pos - 2))
        efternavn2 = Mid(navn, (mellemrum + 1))
    ferdig = "" & fornavn & "" & fornavn2 & " " & efternavn & "" & efternavn2 & " "

    Cells(C, K) = ferdig
   
Else
    Cells(C, K) = Left(Cells(C, K), 1) & LCase(Right(Cells(C, K), Len(Cells(C, K)) - 1))

End If


  Next K
  Next C

End Sub

Hvis i kan gøre det smartere, vil jeg tage mod det med glæde.'
Det må da kunne gøres nemmere....
Avatar billede kabbak Professor
13. april 2003 - 23:24 #11
Sub test()
Dim C, K, SK, SC, MYPOS As Integer
SK = 4 ' sidste kolonne der skal oversættes
SC = ActiveCell.SpecialCells(xlLastCell).Row ' finder sidste række
For C = 1 To SC
For K = 1 To SK
MYPOS = InStr(1, Cells(C, K), " ")
If MYPOS = 0 Then
Cells(C, K) = Left(Cells(C, K), 1) & LCase(Right(Cells(C, K), Len(Cells(C, K)) - 1))
Else
Cells(C, K) = Left(Cells(C, K), 1) & LCase(Mid(Cells(C, K), 2, MYPOS - 1)) & _
Mid(Cells(C, K), MYPOS + 1, 1) & LCase(Right(Cells(C, K), Len(Cells(C, K)) - (MYPOS + 1)))
End If
  Next K
  Next C
End Sub

her er den med et mellemrum
der kommer fejl hvis der der flere
Avatar billede flashit Nybegynder
14. april 2003 - 13:34 #12
Mange tak kabbak :-)
Avatar billede kabbak Professor
14. april 2003 - 19:33 #13
selv tak, det skulle absolut være en makro, hva' *LOL*
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
Kurser inden for grundlæggende programmering

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