Avatar billede Kaspar V.S. Novice
15. juni 2017 - 11:39 Der er 6 kommentarer og
1 løsning

Søg og erstat i Excel, hvor jeg gerne vil fjerne et punktum i et nummer

Jeg har en større Excel fil, hvor jeg har en række celler med numre, som af Google Translate har fået indsat et punktum....

I stedet for manuelt at gennemgå hver celle, så kunne jeg godt tænke mig at "søg & erstat" tal der fx. starter med 8??.??? (eller et andet tal) og erstatter med 8xxxxx - så punkttummet nu er fjernet.

Et par eksempler:
812.820
834.819
856.818
878.550
890.551
812.552
834.553
456.572

Hvordan gør jeg dette?
Avatar billede finb Ekspert
15. juni 2017 - 11:49 #1
Ctrl + H
søg: . (punktum)
erstat med "" (2 gåseøjne = ingenting)
Avatar billede Kaspar V.S. Novice
15. juni 2017 - 11:59 #2
Tak, FinB :)

Men nu er der også tekst på hver side af nummeret, som fx:

Ricoh MPC3503 Black Toner 28.000 sidor original 841.817 Ricoh MPC3503 Black Toner 28.000 sidor original.

Så det er ikke alle punktummer jeg skal have fjernet i cellen. Det er kun det der adskiller det 6-cifret produktnummer 841.817. Altså skal der være 3 tal på hver side af punktummer før at punktummet må erstattes.

Eksempel.
Ricoh MPC3503 Black Toner 28.000 sidor original 841817 Ricoh MPC3503 Black Toner 28.000 sidor original.

PFT. :)
Avatar billede Jan Hansen Ekspert
15. juni 2017 - 12:05 #3
Har du en test fil vi kan prøve på?

Jan
Avatar billede Kaspar V.S. Novice
15. juni 2017 - 12:37 #4
Jeg indsætter et lille eksempel herunder, som du kan indsætte i Excel:

Ricoh MPC3503 Black Toner 28.000 sidor original 841.817
Ricoh MPC3503 cyan toner 18.000 sidor ursprungliga 841.820
Ricoh MPC3503 magenta toner 18.000 sidor ursprungliga 841.819
Ricoh MPC3503 Yellow Toner 18.000 sidor original 841.818
Ricoh MPC300 / 400 Black Toner 10.000 sidor original 841.550
Ricoh MPC300 / 400 cyan toner 10.000 sidor original 841.551
Ricoh MPC300 / 400 magenta toner 10.000 sidor original 841.552
Ricoh MPC300 / 400 gul toner 10.000 sidor original 841.553
RICOH SP 1100 svart toner 4000 sidor ursprungliga 406.572
RICOH SP 1200 svart toner 2600 sidor original 406.837 - TYPE-1200E
Ricoh SP201HE svart toner 2600 sidor original 407.254
RICOH SP 300 svarta toner 1500 sidor ursprungliga 406.956
Ricoh SP 3200 Black Toner 8000 sidor original 402.887
Ricoh SP 3300 Black Toner 9.000 sidor original 406.218
Ricoh SP 3500 Black Toner 6.400 sidor original 406.990
Ricoh SP 4100/4310 Black Toner 15.000 sidor original 402.810
Ricoh SP 5100 Black Toner 20.000 sidor original 402.877
Ricoh SP 5100 Black Toner 20.000 sidor original 402.877
Ricoh SP 6330 Black Toner 20.000 sidor original 406.649
Ricoh SP 8100 Black Toner 23.000 sidor original 885.251 TYPE 3205D
Ricoh SP 8200 Black Toner 36.000 sidor original 820.079
Ricoh SP 9100 Black Toner 43.000 sidor original 841.992
Ricoh SP C210 Black Toner 9.800 sidor original 402.097 TYPE-140BK

Hver linie udgør en celle (kolonne B).

Og i dette eksempel ønsker jeg at finde en hurtig løsning til søg/erstat af produktnumre der fx. har fået indsat et punktum af Google Translate....
Avatar billede Jan Hansen Ekspert
15. juni 2017 - 14:17 #5
Følgende kode lagt i et modul (makro "Test") vil ligge rettet i kolonne C,
så indsæt en tom kolonne efter B



Option Explicit

Dim ws As Worksheet
Dim rColumn As Range, rcell As Range
Dim sOld() As String, sNew() As String, sTemp As String, sHolder As String
Dim iCount As Integer, iText As Integer, iCiffer As Integer

Sub Test()
    Set ws = ActiveSheet
    Set rColumn = Range("B2")
    Set rColumn = Range(rColumn, rColumn.End(xlDown))
   
    ReDim sOld(2 To rColumn.Rows.Count + 1)
    ReDim sNew(2 To rColumn.Rows.Count + 1)
    For Each rcell In rColumn
        sOld(rcell.Row) = rcell.Value
    Next
    For iCount = 2 To rColumn.Rows.Count
        iCiffer = 0
        For iText = 1 To Len(sOld(iCount))
            If IsNumeric(Mid(sOld(iCount), iText, 1)) Then
                iCiffer = iCiffer + 1
                sTemp = sTemp & Mid(sOld(iCount), iText, 1)
                If iCiffer = 6 Then sHolder = sTemp
            Else
                If Not Mid(sOld(iCount), iText, 1) = "." Then
                    iCiffer = 0
                    sTemp = ""
                End If
            End If
        Next
        sNew(iCount) = Replace(sOld(iCount), Mid(sHolder, 1, 3) _
        & "." & Mid(sHolder, 4), sHolder)
        sTemp = ""
    Next
    Set rColumn = rColumn.Offset(0, 1)
    For Each rcell In rColumn
        rcell.Value = sNew(rcell.Row)
    Next
End Sub


Jan
Avatar billede Kaspar V.S. Novice
15. juni 2017 - 14:50 #6
Hej Jan, takker mange gange :-))
Avatar billede Jan Hansen Ekspert
15. juni 2017 - 15:10 #7
velbekomme
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

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