Jjn Juniormester
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 ?
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
Jjn Juniormester
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 :-)
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
Jjn Juniormester
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 ??
Jjn Juniormester
12. maj 2020 - 13:01 #5
Hej igen Jens,

Den fjerner også /

Kan du hjælpe med det også :-)
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
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
Jjn Juniormester
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!!
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
Jjn Juniormester
13. maj 2020 - 12:17 #10
Ja det har du ret i, do er der stadig 2 "mellemrum" tilbage foran
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?
Jjn Juniormester
13. maj 2020 - 12:49 #12
Det virker nu, det var som om nogle tegn var skjult :-)

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

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





Premium
Tirsdag kårer Microsoft de bedste partnere i Danmark: Proactive og Delegate fører feltet an med flest nomineringer
Landets ypperste Microsoft-partnere bliver tirsdag hædret af Microsofts danske ledelse. 20 virksomheder har fået en indbydelse til det prestigefyldte arrangement. Her er et overblik over, hvem der er blevet nomineret.
Computerworld
Biden sender skjult besked til kode-folket: "Hvis du læser dette, har vi brug for din hjælp”
En stående invitation er blevet opdaget i kildekoden på Det Hvide Hus' hjemmeside. Men den er kun til de eksperter, der selv kan finde den.
CIO
Podcast: Her er seks gode råd om ledelse og digitalisering fra danske top-CIO'er
The Digital Edge: Vi har talt med 17 af Danmarks dygtigste digitale ledere - og samlet deres seks bedste råd om digitalisering og ledelse. Få alle rådene på 26 minutter i denne episode af podcasten The Digital Edge.
White paper
Kunsten at navigere i en tilpasningsøkonomi
Evnen til at tilpasse sig en verden i konstant forandring bliver afgørende for virksomhedens mulighed for at vækste i fremtiden. Ét af de finansielle håndtag du kan skrue på, er en hel eller delvis outsourcing af it-driften. I e-bogen ”Kunsten at navigere i en tilpasningsøkonomi” får du viden om, hvordan din virksomhed kan bruge tilpasningsøkonomi til at håndtere fremtidens krav til it. Vi spørger blandt andet: - Kan din virksomhed skalere og tilpasse sin digitale kapacitet og økonomi? - Har dine kunder tillid til, at du har de skarpeste it-løsninger? - Ville I kunne styrke forretningen ved at give jeres it mere fokus? - Kan I få øget funktionalitet til samme pris? Vi fokuserer på risiko, økonomi, fokus og valg af it-partner, som er fire opmærksomhedspunkter du skal have styr på for at lykkes med at tilpasse virksomheden til at modstå forandringerne i verden.