Avatar billede palmanimal Nybegynder
10. oktober 2002 - 19:40 Der er 14 kommentarer og
1 løsning

Udskiftning af cifre

Hej experter
For et stykke tid siden lavede Flemming Dahl denne lækkerbisken til mig (se evt. spg. 251165)

Public Sub ReplaceChar()
    Dim rCell As Range
   
    For Each rCell In Range("A1").CurrentRegion.Columns(1).Cells
        If Len(rCell.Value) = 8 Then
            Select Case Right(rCell.Value, 1)
                Case 1
                    rCell.Value = Left(rCell.Value, 7) & "G"
                Case 2
                    rCell.Value = Left(rCell.Value, 7) & "H"
                Case 3
                    rCell.Value = Left(rCell.Value, 7) & "I"
                Case 4
                    rCell.Value = Left(rCell.Value, 7) & "J"
                Case 7
                    rCell.Value = Left(rCell.Value, 7) & "K"
                Case 8
                    rCell.Value = Left(rCell.Value, 7) & "L"
            End Select
        End If
    Next rCell
    Set rCell = Nothing
End Sub


Der sker det at ciffer nr 8 i kolonne A1 bliver skiftet.
Nu har jeg et nyt problem. Jeg skal have skiftet 5 ciffer. Men jeg kan ikke få det til at virke nogle forslag ???

:-)
Avatar billede lsimony Nybegynder
10. oktober 2002 - 19:53 #1
Jeg er ikke helt med. Har du et 5 cifret tal istedet for 8? Hvis, ja, da brug følgende kode:

Public Sub ReplaceChar()
    Dim rCell As Range
   
    For Each rCell In Range("A1").CurrentRegion.Columns(1).Cells
        If Len(rCell.Value) = 5 Then
            Select Case Right(rCell.Value, 1)
                Case 1
                    rCell.Value = Left(rCell.Value, 4) & "G"
                Case 2
                    rCell.Value = Left(rCell.Value, 4) & "H"
                Case 3
                    rCell.Value = Left(rCell.Value, 4) & "I"
                Case 4
                    rCell.Value = Left(rCell.Value, 4) & "J"
                Case 7
                    rCell.Value = Left(rCell.Value, 4) & "K"
                Case 8
                    rCell.Value = Left(rCell.Value, 4) & "L"
            End Select
        End If
    Next rCell
    Set rCell = Nothing
End Sub


Med venlig hilsen

Lars Simonÿ
Avatar billede palmanimal Nybegynder
10. oktober 2002 - 19:58 #2
Nej. Det er det 5. ciffer der skal udskiftes i stedet for det 8. ciffer.
Det 5. ciffer er nu 1 og i fremtiden skal det være E.
Avatar billede sjap Praktikant
10. oktober 2002 - 20:11 #3
Prøv at bruge følgende i stedet for:

rCell.Value = Left(rCell.Value, 4) & "E" & Right(rCell.Value, 3)
Avatar billede sjap Praktikant
10. oktober 2002 - 20:13 #4
Nåh ja, du skal sætte den ind i din oprindelige funktion under Case 1 i stedet for den der står der nu.  :-)
Avatar billede palmanimal Nybegynder
10. oktober 2002 - 20:15 #5
giver mig en masse fejl. Ved ikke om jeg sætter linien rigtigt ind.
Avatar billede sjap Praktikant
10. oktober 2002 - 20:18 #6
Jeg prøver det lige :-)
Avatar billede lsimony Nybegynder
10. oktober 2002 - 20:19 #7
Prøv denne...

Public Sub ReplaceChar()
    Dim rCell As Range
   
    For Each rCell In Range("A1").CurrentRegion.Columns(1).Cells
        If Len(rCell.Value) = 8 Then
       
            Select Case Mid(rCell.Value, 5, 1)
                Case 1
                    rCell.Value = Left(rCell.Value, 4) & "G" & Right(rCell.Value, 3)
                Case 2
                    rCell.Value = Left(rCell.Value, 4) & "H" & Right(rCell.Value, 3)
                Case 3
                    rCell.Value = Left(rCell.Value, 4) & "I" & Right(rCell.Value, 3)
                Case 4
                    rCell.Value = Left(rCell.Value, 4) & "J" & Right(rCell.Value, 3)
                Case 7
                    rCell.Value = Left(rCell.Value, 4) & "K" & Right(rCell.Value, 3)
                Case 8
                    rCell.Value = Left(rCell.Value, 4) & "L" & Right(rCell.Value, 3)
            End Select
        End If
    Next rCell
    Set rCell = Nothing
End Sub
Avatar billede sjap Praktikant
10. oktober 2002 - 20:23 #8
Nåh ja select sætningen skal jo også lige fange det femte tegn:

Select Case Right(Left(rCell.Value, 5), 1)
Avatar billede sjap Praktikant
10. oktober 2002 - 20:25 #9
Case sætningerne vil iøvrigt give en fejl, hvis det ikke er tal, der står på den femte karakters plads.
Avatar billede sjap Praktikant
10. oktober 2002 - 20:27 #10
VIGTIGT!
Du skal iøvrigt også lige fjerne eller udkommentere de øvrige cases, da der ellers kan ske sjove ting med dem eftersom du nu ændrer på indgangskriteriet (femte karakter i stedet for den ottende)!
Avatar billede lsimony Nybegynder
10. oktober 2002 - 20:27 #11
Øhhh

Er Select Case Right(Left(rCell.Value, 5), 1)

det samme som

Select Case Mid(rCell.Value, 5, 1)

;-)

Lars
Avatar billede sjap Praktikant
10. oktober 2002 - 20:32 #12
Isimony
Tjah, det giver i hvert tilfælde det samme resultat - men min måde at skrive det på er da klart mere kompliceret  :o)
Avatar billede palmanimal Nybegynder
10. oktober 2002 - 20:34 #13
Den skal se sådan ud så virker den

Public Sub ReplaceChar()
    Dim rCell As Range
   
    For Each rCell In Range("A1").CurrentRegion.Columns(1).Cells
        If Len(rCell.Value) = 8 Then
       
            Select Case Mid(rCell.Value, 5, 1)
                Case 1
                    rCell.Value = Left(rCell.Value, 4) & "E" & Right(rCell.Value, 3)
               
            End Select
        End If
    Next rCell
    Set rCell = Nothing
End Sub

Tak for hjælpen
Avatar billede sjap Praktikant
10. oktober 2002 - 20:35 #14
Sku' det være en anden gang... Tak for pointene.
Avatar billede lsimony Nybegynder
10. oktober 2002 - 20:41 #15
Tja, Hvad skal jeg sige...
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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