-
Innehållsantal
180 -
Gick med
-
Dagar vunna
20
Inlägg postade av MH_
-
-
Såg att jag missat en detalj
om det redan har bytts till det, byts ut till ingenting,
Om det inte finns mer än ett "_" så är det väl enklast att vända på makrot och börja med att byta ut det sista tecknet till "" (reverse) så är du färdig med den delen.
För formlerna blir det krångligare dey blir svårt om det saknas fler "_" än det första. Hmmm
Du skulle kanske kunna göra något smart med hjälp av
=OMFEL(SÖK("€";BYT.UT(A12;"_";"€";SEKVENS(10)));"")
som ger en matris med positionen för alla "_"
den här formeln som hittar det sista förekomsten av "_"
=MAX(OMFEL(SÖK("€";BYT.UT(A12;"_";"€";SEKVENS(10)));""))
Men du måste nog krångla till det oavsett.
VBA-Makrot låter enklare
- 1
-
https://docs.microsoft.com/en-us/office/vba/api/excel.range.areas
Kan användas för att växla mellan områdena
Selection.Areas(1)
Selection.Areas(2)Då borde du kunna skapa en tabbseparerad textvariabel som du sen kan spara undan eller pipa till en text-fil
Sub tjo() Dim str As String Dim i As Integer If Selection.Areas(1).Cells.Count <> Selection.Areas(2).Cells.Count Then MsgBox "falektig markering, gör om, gör rätt" Exit Sub End If For i = 1 To Selection.Areas(1).Cells.Count str = str & Selection.Areas(1).Cells(i, 1).Value str = str & vbTab str = str & Selection.Areas(2).Cells(i, 1).Value str = str & vbCrLf Next i MsgBox str 'Open "C:\tmp\Tjoho.txt" For Output As #1 End Sub
Jag surnade till och raderade min profil på det andra forumet så jag hittar inte gamla inlägg. Men visst hade vi en tråd där du fick en en sån där "Open for Output" att fungera? Behövs det inte en End of file t.ex...
Här är en tråd du borde kunna
snolåna ifrånhttps://stackoverflow.com/questions/43655288/vba-code-to-save-excel-sheet-as-tab-delimited-text-file
- 1
-
Formel.
Om du VET att det alltid är det 3:e "-" som skall bytas ut kan du lägga på en byt.ut till
=BYT.UT(BYT.UT(BYT.UT(A12;"_";"-");"-";"_";1);"-";"";3)
Förklaringstexten till BYT.UT är lite förvirrande. "antal förekomster" skall nog vara "Förekomst NR". Dvs 3:ean betyder att den tredje förekomsten byts ut, inte de tre första
Annars får du räkna ut hur många gånger det förekommer
=LÄNGD(A12)-LÄNGD(BYT.UT(A12;"_";""))-1
och klämma in där 3:an står
=BYT.UT(BYT.UT(BYT.UT(A12;"_";"-");"-";"_";1);"-";"";LÄNGD(A12)-LÄNGD(BYT.UT(A12;"_";""))-1)
VBA har mönstermatchning/regular expression. Då går det att trixa hur man vill (om du ändå skall köra makro).
hhttps://software-solutions-online.com/vba-regex-guide/
Men då måste kryssa i att VBA skall använde RegExp osv
Du kan även använda VBAs egna sök/ersätt och utnyttja att det finns en inverteringsfunktion i VBA StrReverse
Sub tjo() Dim mintext As String Dim sistaStreck As Integer mintext = Selection.Value 'byt ut alla "_" mot "-" mintext = Replace(mintext, "_", "-") 'byt tillbasks det första "-" mot "_" mintext = Replace(mintext, "-", "_", , Count:=1) 'Och byt tillbaks det sista "-" mot "" genom att vända på strängen och byta ut första förekomsten mintext = Replace(StrReverse(mintext), "-", "", , Count:=1) ' och vänd tillbaks texten mintext = StrReverse(mintext) End Sub
eller utnyttja att VBA kan söka både framifrån och bakifrån
InStrRev function (Visual Basic for Applications) | Microsoft Docs
och göra något smart som jag inte kommer på...
För övrigt funkar inte notifiering hos mig. Jag fick bara notis om att du hade Messat.
- 1
-
Om du vet att de 16 första tecknen skall lämnas oförändrade så kan du ju dela upp det i två delar:
=VÄNSTER(A12;16)&BYT.UT(EXTEXT(A12;17;LÄNGD(A12));"_";"-")
Men din lösning är mycket elegantare
=BYT.UT(BYT.UT(A12;"_";"-");"-";"_";1)
Hmm, vad kan jag ha kryssat i fel? jag trodde att jag bevakade Office-tråden här, skumt
- 1
Lösenord forum
i Hemsidan och forumet
Postad
Jag lyckas aldrig logga in igen när jag har loggat ut från forumet.
Blir tvungen att köra "glömt lösenord" och skapa ett nytt lösenord varje gång jag har loggat ut. Är det någon som har en aning om vad jag gör för fel? När jag väl är inloggad verkar det extra lösenordet på "kontosäkerhet" funka så det borde inte vara totaldemens (Opera, privat läge).