02. februar 2022 - 09:40Der er
29 kommentarer og 1 løsning
Erstat æ til æ, ø til ø, o.s.v.
Hej
Er der nogen der kan hjælpe med en smartere måde at erstatte mystiske tegn i et excel ark til de bogstaver det skulle have været?
Jeg har en liste med, indtil videre, 25 tegn som: æ, ø, å, Æ, Ø, Å, é, Þ, ð, o.s.v. Det var de tegn der skulle have været i excel arket. De kommer så ud som: æ - ø - Ã¥, o.s.v.
Det jeg gør nu er, at jeg går op på luppen i højre hjørne, pil ned og erstat. Der kan jeg så skive æ i søgefeltet og æ i ertat med feltet. Det var så ét ud af 25 tegn. Så mangler jeg bare de 24 andre. Det er en meget lang historie hver dag.
Så mit spørgsmål er om der findes en smart måde at rette alle 25 tegn på én gang? - Håber nogen kan hjælpe med dette.
Jeg ved godt, at bedste løsning er at der hvor excel arket bliver dannet, skal man vælge det rigtige format og ikke csv. Men nu har jeg kæmpet med det i 3 år. Og det bliver nok ikke anderledes. Der er for mange led i kommunikationen til at det åbenbart kan lade sig gøre.
Du kunne prøve at optage en makro når du retter et bogstav, så kan vi sikkert hjælpe dig med at bygge en makro der kan rette dem alle. Det lyder som om det blot er noget du skal kunne køre, har du arbejdet med makroer før?
Har du prøvet når du åbner filen, som CSV, og så i det første vindue, vælge et andet karakter sæt "Filoprindelse" (Dropdown menu). Prøv at vælge "1252: Vesteuropæisk oprindelse" (helt nede i bunden af listen), og se om det gør en forskel.
ebea, jeg modtager filen som xlsx. Men den har sansynligvis været en csv fil, før jeg har fået den. Så jeg ved ikke om det med filoprindelse er en mulighed. Jeg støder ihvertfald ikke på det nogen steder, når jeg åbner filen.
Kan du uploade et eksempel til dropbox eller lignende hvor vi kan tilgå den, så skal jeg lave en makro der kan tricket og forklare hvordan du bruger den.
#3 - Nu nævnte du selv, at den var dannet som CSV i dit spørgsmål, så jeg gik ud fra det ;-) Men når det er en .xlsx fil, er det ikke en mulighed, da data er dannet.
Det er muligvis en "lidt-langt-ude" antagelse, men hvis du skulle have Microsoft 365 og er tilknyttet Office Insider (gratis for alle der har lyst) kan det nemt laves med en såkaldt Lambda funktion.
Hvis det bare er en data fil med et sheet, kunne du prøve at gemme den som csv og så importere den igen med et andet tegnsæt, som foreslået af ebea i #2
ebea og acore - Jeg har prøvet at gemme det som CSV og åbne det igen som CSV. Men det åbner jo bare. Såjeg forstår ikke lige det med "føste vindue"
xl-Enthusiast - Kender ikke til Lambda funktion
kim1-a - Her er et link til et Exel ark med 4 rækker. Alle 4 rækker indeholder et af de mystiske tegn og en forklaring på, hvilket tegn det skulle have været. https://1drv.ms/x/s!Ajemkpt7NcdzhOBk9OkF5ZsM6LSsQw?e=iQZ7q6 Jeg kan ikke sende det konkrete Excel ark, jeg sidder med, da det indeholder fortrolige oplysninger. Men hvis det kan lade sig gøre at skifte de 4 tegn ud til de rigtige, uden at søge og erstate på hvert tegn enkeltvis, kan det jo også lade sig gøre, når jeg sidder med et Excel ark med mange rækker og flere tegn.
#8 - Når du gemmer som en CSV fra en xlsx fil, bliver den som du har opdaget, åbnet igen uden at være en "rigtig" csv fil. Du skal gemme den som en .txt fil. Men jeg har afprøvet dit lille uploadede eksempel, og der er ingen tegnsæt, som kan erstatte de bogstaver du har problemet med. Så løsningen er nok, som en tilpasset VBA løsning, som foreslået i #4.
Jeg har lavet en lille makro, som du kan lægge ind under Vis Koder, hvis du højrekikker på fanebladet. Den skifter karktererne ud i det valgte område - enten ved at du selv mærker området op, eller ved at du aktiverer og retter i linje 3. Håber at jeg har fået alle karakterer med.
#11 - VBA løsningen, var den som #4 foreslog. Men Jens48 har lavet et eks. i #9, med en masse specialtegn. Hvis det kan være nemmere for dig, har jeg lavet et lille eks. ud fra Jens48 kode i #9, og som du kan se i Linket, nederst her. Der er lavet en lille knap, som du kan se, som fjerner og erstatter dine tegn.
Så giv jens48 kredit for det, og ikke mig, da han har brugt tiden på at indsætte tegn, som jeg blot har forenklet, for oversigtens skyld.
jens48 - Jeg fandt ud af, hvor koden skulle lægges ind. Tak for det.
ebea
Når jeg åbner dit Excel med knappen, skal jeg tage stilling til om jeg vil deaktivere eller aktivere makroer. Har prøvet begge dele. Ved ikke hvad jeg skal vælge der.
Der næst kan jeg kun åbne dokumentet som skrivebeskyttet eller annuller. Når jeg trykker på knappen, sker der ikke noget.
Men jeg tænker, at jeg er ved at nærme mig noget rigtigt. Hvordan kommer jeg det sidste stykke?
#20 - ja, nu har du fået aktiveret "Beskyttet visning". Så gå op i menu linjen i "Filer", vælg "indstillinger", i indstillinger vælger du nederste funktion "Center for cyb...", og ude til højre, kan du se en knap "Indstillinger for center f.....". Inde i den nye menu der fremkommer, vælger du menulinjen "Beskyttet visning", og der fjerner du fluebenet fra de 2 øverste linjer.
Nu er det på Macbook jeg arbejder. Der hedder tingene nok ikke det samme. Men hvis jeg kliker filer og egenskaber, så kommer jeg her ind. Se skærmudklip på linket. Attributter: Skrivebeskyttet. Jeg har ikke mulighed for at fjerne fluebet.
Nå men tak for hjælpen alligevel til alle der har budt ind. Jeg tænker jeg alligevel har lært noget. Nemlig hvor man kan lægge sådan en kode ind. Så skal jeg bare finde ud af, hvordan jeg får det til at virke i cellerne.
Og lige til #23 - Jeg ved ikke hvorfor linket ikke virker. men hvis man kopierer linket og sætter det ind i browseren, skulle det gerne virke. Det har jeg testet i et Inkognitovindue :-)
arne_v i #14 er som sædvanlig inde på det rigtige. Omskrevet lidt til excel kunne hans kode se sådan ud:
Sub cv() For Each cell In Selection Set stm = CreateObject("ADODB.Stream") stm.Open stm.Charset = "iso-8859-1"
stm.WriteText cell.Value stm.Position = 0 stm.Charset = "UTF-8" cell.Value = stm.ReadText stm.Close Next cell End Sub
Den ændrer alle celler i det valgte range. Så fremgangsmåden er: Vælg range. Kør makro.
Den er ikke perfekt. For eksempel giver den fej, hvis der er tegn, der skal ændres, men som allerede er ændret. For eksempel, hvis teksten indeholder et "æ". Det kan sikkert fixes. Så husk backup før du bruger den.
Og så kan den helt sikert optimeres, så den bliver hurtigere.
#27 - Problemet ligger jo ikke i, om den ene kode, eller anden kode bruges. Den del virker jo. men problemet er, at OP ikke kan finde ud af at bruge det. Som om du kommer med en ny kode, ændrer ingenting!
De foreslåede løsninger er, som arne_v indikerer, lappeløsninger, mens den her løsning er generisk. Det kunne jo være, at andre kunne lære noget af det.
Desuden er det et specifikt svar på spørgers request i #17.
Jeg bruger Mac, og jeg troede ikke det gjorde en forskel, at man bruger Excel på Mac. Men kan godt se nu, at jeg burde have gjort opmærksom på dette tidligere. Macintosh har ikke ActiveX så derfor kan man ikke bruge streams.
Det er to-bogstavs kombinationer, dem kan man ikke skrive i VB, så derfor bliver det nødt til at stå på excel siden. De står så i kolonne N og O (14 og 15)
Så fik jeg også lige slået en flue mere i samme smæk, da jeg har et telefonnummer i kolonne B stående sådan her: "+4512345678. Og her ville jeg gerne have fjernet "+45. Det er også med i koden.
Jeg har haft en med forstand på Excel til at hjælpe mig. Han vil helst ikke hjælpe mig, før jeg har søgt andre løsninger først. Derfor startede jeg denne tråd i håb om at komme i mål den vej.
Men løsningen blev sådan her:
Sub Button1_Click() Dim erstat, med As Variant antal = Range("P1").Value()
Range("A1:A1000").Select ' Ret selv området til
For i = 1 To antal erstat = Cells(i, 14).Value med = Cells(i, 15).Value Selection.Replace What:=erstat, Replacement:=med, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True Next
Range("B1:B1000").Select ' telefon ret selv området til Selection.Replace What:="+45", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True End Sub
Tak til alle der har budt ind i denne tråd.
Mvh Sammy
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.