Gå till innehåll

Batch find and replace Excel


Gå till lösning Löst av MH_,

Recommended Posts

Nya funderingar...

Om jag vill söka efter ABCDE FGHIJK och ersätta med ABCDE[inte mellanslag][radbryt]FGHIJK?

Vad ska jag skriva in i dialogen "ersätt med" då?

Eller!

Detta är en engångsgrej, fast i 28 filer, och det är en(1) fast text och således känt antal tecken.

Dock inte kända celler.

ÖLFLEX® SERVO 2XSLCH-JB 3xarea+3Garea

ska bli

ÖLFLEX® SERVO 2XSLCH-JB
3xarea+3Garea

 

Länk till kommentar
Dela på andra webbplatser

Excel kan söka med jokertecken. Men så vitt jag vet kan du inte föra över det till ersätt med.

Word har "mönstermatchning" som är en en variant av "Regular Expression" (På svenska heter det något annat än mönstermatchning utanför Microsoft, men det är blankt i skallen)

https://support.microsoft.com/sv-se/topic/exempel-på-jokertecken-939e153f-bd30-47e4-a763-61897c87b3f4

Då kan du bygga delar där varje parantes är ett uttryck. T.ex (börja med 23 valfria tecken) (mellanslag) (13 valfria tecken)

(<?{23})( )(?{13})

och sedan ersätter du med Sökuttryck1, radbrytning, Sökuttryck3

\1^l\3

***************************** Ok, det var Word...************

Det finns tillägg som ger excel RegEx. Men det känns jobbigt.... Kolla här t.ex:

https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops

https://www.youtube.com/watch?v=OS7BPjTy3H0

  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

1 timme sedan, MH_ sade:

Men det känns jobbigt

Okej, jag har ju en mjukvara och som fungerar...

image.png.ff3a683691c2331f060327c8118ca1c8.png

... men den stökar till det med utskriftsområde mm varför jag försöker undvika den.

Länk till kommentar
Dela på andra webbplatser

Kolla Youtuben från 8:08 ungefär

https://youtu.be/OS7BPjTy3H0?t=487

I VBA-editorn

Verktyg->referenser

Bläddra ner till, och välj, MicrosoftVBscriptRegularexp...

Sen kan du använda regexp för att se om cellen passar mönstret. Tyvärr blir jag inte klok på hur du bygger delar som i word om du skulle vilja köra replace. Men du kan använda vanliga vänster/extext och helt enkelt byta ut det 24:e tecknet mot en radbrytning (chr(10) - jag kommer inte ihåg om en radbrytning har koden 10 eller 13, testa)

Sub MönsterMatch()

' hämtar regexp till ett eget objekt regex (eller vad det heter, se Youtuben)
Dim regEx As New regexp
regEx.Global = True

Dim rCell As Range

' Sökmönstret = radstart (^), 23 tecken, mellanslag, 13 tecken, radslut ($)
' i engelsk regexp så avänds "." istället för "?" för att ange "vilket tecken som helst"
regEx.Pattern = "^.{23} .{13}$"

' gå igenom alla celler i det markerade området
For Each rCell In Selection.Cells
    ' OM cellen passar mönstret så hämtar du de vänstraste 23 tecknen, skriver en  radbrytning och hämtar tecken 25+13
    If regEx.Test(rCell.Value) = True Then
        sOld = rCell.Value
        rCell.Value = Left(sOld, 23) & Chr(10) & Mid(sOld, 25, 13)
    End If
Next rCell
End Sub

Du får anpassa mönstret 23 mellanslag 13 så att det passar det du faktiskt har.

Om du vet att det alltids skall starta/sluta på samma sätt så kan du göra sökningen säkrare gemom att ändra söksträngen.

  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

Om man i boken man kör makrot från gör i ordning en cell med resultatet av ersättningen, med texten radbruten kopierar den cellen till urklipp, startar skriptet och skriver in söksträngen..

image.png.0bfb901de6e5c777af7447d98c77ead5.png

och i nästa dialog klistrar in från urklipp..

image.png.a2fb1c3e982432adc417d64385aa5d38.png

samt där tar bort " i början och " i slutet och OK,ejar så blir resultatet som önskat.

Det fungerar inte att använda Ctrl+J som beskrivs här:

https://www.ablebits.com/office-addins-blog/start-new-line-excel-cell/

Då tas endast mellanslag bort.

(i vanlig sök & ersätt fungerar det enligt länken men inte i dialogrutorna i makrot)

Man kan även använda en urklippshanterare som ex. den utmärkta M8 Free Clipboard men " " måste bort.

 

Länk till kommentar
Dela på andra webbplatser

Delta i dialogen

Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Only 75 emoji are allowed.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...