Avatar billede Jjn Mester
11. maj 2020 - 13:21 Der 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 ?
Avatar billede jens48 Ekspert
11. maj 2020 - 15:29 #1
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
Avatar billede Jjn Mester
11. maj 2020 - 16:27 #2
Hej Jens,

Jeg forsøgte lige, den fjerner mellemrum, men kan jeg få den til at fjerne streger -se eksembel:

││││*410000
│││││*414114
│││││*445278
││15A57*47

Tak for hjælpen :-)
Avatar billede jens48 Ekspert
12. maj 2020 - 12:00 #3
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
Avatar billede Jjn Mester
12. maj 2020 - 12:43 #4
Hej Jens,

Nu begynder det at ligne noget :-)
Jeg har dog denne udfordring også:

│ │ │ └─    60 PUDSE-32
│ │ │ └ ─    70 PUDSE-43

Går udfra jeg kan labe to linjer mere i makro hvor den fjerner └─ og └ ─ i en kollone som G1 ?

Kan den undlade at fjerne - i mellem PUDSE og 32 eller erstatte med mellemrum ??
Avatar billede Jjn Mester
12. maj 2020 - 13:01 #5
Hej igen Jens,

Den fjerner også /

Kan du hjælpe med det også :-)
Avatar billede jens48 Ekspert
12. maj 2020 - 13:07 #6
Mon ikke denne makro kan klare det?

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
Avatar billede jens48 Ekspert
12. maj 2020 - 13:12 #7
Hvis du ikke vil slette / kan den se sådan ud:

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
Avatar billede Jjn Mester
13. maj 2020 - 09:50 #8
Hej Jens,

Fandt en udfordring mere :-(

Kan den laves så den slette mellemrum og streger ( G1 -som er ok) inden *
│  *43/KLARLAK TONET
og bibeholder mellemrummet mellem klarlak og tonet ??

Endnu engang tak!!
Avatar billede jens48 Ekspert
13. maj 2020 - 11:33 #9
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
Avatar billede Jjn Mester
13. maj 2020 - 12:17 #10
Ja det har du ret i, do er der stadig 2 "mellemrum" tilbage foran
Avatar billede jens48 Ekspert
13. maj 2020 - 12:25 #11
Lad mig lige forstå dig ret. Er der stadig 2 mellemrum efter du har kørt den seneste makro?
Avatar billede Jjn Mester
13. maj 2020 - 12:49 #12
Det virker nu, det var som om nogle tegn var skjult :-)

1000 tak for hjælpen
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