11. maj 2020 - 13:21Der er
7 kommentarer og 5 løsninger
Sletning af tegn
Hej.
Kan man lave en makro der sletter tegn og mellemrum på hver linje indtil den møder f.eks. * eller bogstav i et varenummer ? Og hvordan opretter jeg denne ?
Mærk det område op du ønsker specielle tegn fjernet fra og kør denne makro. Den fjerner alle ASCII tegn med numrene 32 til 41, 43 til 64, 91 til 96 og 123 til 191
Sub Replace() Application.Calculation = xlCalculationManual Dim x As Long Dim c As Range For Each c In Selection For x = 32 To 41 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 43 To 47 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 58 To 64 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 91 To 96 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 123 To 191 c = WorksheetFunction.Substitute(c, Chr(x), "") Next Next Application.Calculation = xlCalculationAutomatic End Sub
Den kunne jeg ikke lige umiddelbart få til at fungere. Det ligner ASCII karakteren 124, og den burde min makro fjerne. Jeg har prøvet at kopiere tegnet og sætte det separat ind i makroen, men det virker heller ikke. Men hvis jeg sætter tegnet ind i en celle og bruger den i makroen kører det. Jeg har valgt G1 i makroen. Vælg selv en anden hvis det passer bedre:
Sub Replace() Application.Calculation = xlCalculationManual Dim x As Long Dim c As Range For Each c In Selection For x = 32 To 41 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 43 To 47 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 58 To 64 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 91 To 96 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 123 To 191 c = WorksheetFunction.Substitute(c, Chr(x), "") Next c = WorksheetFunction.Substitute(c, Range("G1"), "") ' I G1 står der kun en lodret streg Next Application.Calculation = xlCalculationAutomatic End Sub
Sub Replace() Application.Calculation = xlCalculationManual Dim x As Long Dim c As Range For Each c In Selection For x = 32 To 41 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 43 To 44 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 46 To 47 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 58 To 64 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 91 To 96 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 123 To 191 c = WorksheetFunction.Substitute(c, Chr(x), "") Next c = WorksheetFunction.Substitute(c, Range("G1"), "") ' I G1 står der kun en lodret streg c = WorksheetFunction.Substitute(c, Range("G2"), "") ' I G2 står der kun et tegn c = WorksheetFunction.Substitute(c, Range("G3"), "") ' I G3 står der kun et tegn Next Application.Calculation = xlCalculationAutomatic End Sub
Sub Replace() Application.Calculation = xlCalculationManual Dim x As Long Dim c As Range For Each c In Selection For x = 32 To 41 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 43 To 44 c = WorksheetFunction.Substitute(c, Chr(x), "") Next c = WorksheetFunction.Substitute(c, Chr(46), "") For x = 58 To 64 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 91 To 96 c = WorksheetFunction.Substitute(c, Chr(x), "") Next For x = 123 To 191 c = WorksheetFunction.Substitute(c, Chr(x), "") Next c = WorksheetFunction.Substitute(c, Range("G1"), "") ' I G1 står der kun en lodret streg c = WorksheetFunction.Substitute(c, Range("G2"), "") ' I G2 står der kun et tegn c = WorksheetFunction.Substitute(c, Range("G3"), "") ' I G3 står der kun et tegn Next Application.Calculation = xlCalculationAutomatic End Sub
Jeg går ud fra at det blot er de mellemrum der stå i starten af teksten der skal fjernes, og resten skal beholdes. Jeg har forkortet makroen lidt.
Sub Replace() Application.Calculation = xlCalculationManual Dim x As Long Dim c As Range For Each c In Selection For x = 33 To 191 If x = 42 Then x = x + 1 If x = 45 Then x = x + 1 If x = 47 Then x = x + 11 If x = 65 Then x = x + 26 If x = 97 Then x = x + 26 c = WorksheetFunction.Substitute(c, Chr(x), "") Next 'Special non-ASCII characters in G1:G3 c = WorksheetFunction.Substitute(c, Range("G1"), "") ' I G1 står der kun en lodret streg c = WorksheetFunction.Substitute(c, Range("G2"), "") ' I G2 står der kun et tegn c = WorksheetFunction.Substitute(c, Range("G3"), "") ' I G3 står der kun et tegn c = Trim(c) Next Application.Calculation = xlCalculationAutomatic End Sub
Det virker nu, det var som om nogle tegn var skjult :-)
1000 tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.