Gå till innehåll

MH_

Medlem
  • Innehållsantal

    180
  • Gick med

  • Dagar vunna

    20

Inlägg postade av MH_

  1. 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). 

  2. 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

    • Thanks 1
  3. 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 sno låna ifrån

    https://stackoverflow.com/questions/43655288/vba-code-to-save-excel-sheet-as-tab-delimited-text-file

    • Thanks 1
  4. 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/

    https://regexr.com/3hmb6

    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.

    • Like 1
×
×
  • Skapa nytt...