Avatar billede larskoch Nybegynder
21. maj 2014 - 11:32 Der er 11 kommentarer og
1 løsning

Trække periode ud af tekstfelt

Hej er der nogen der har en stump kode til, at trække periode ud fra et tekstfelt....
Periode/dato står forskellige steder i tekstfeltet jf. nedenfor

Felt                                    Resultat
010113 - 310313 øvle bøvle bavle    jan-13    mar-13
Øvle bøvle bavle 010113 - 310313    jan-13    mar-13
Øvle bøvle 010113 - 310313 bavle    jan-13    mar-13
010114 Øvle bøvle bavle                    jan-14
Avatar billede supertekst Ekspert
21. maj 2014 - 11:37 #1
I hvilken kontekst er teksten - regneark?
Avatar billede larskoch Nybegynder
21. maj 2014 - 11:41 #2
Det er tekstfelt i excel
Avatar billede supertekst Ekspert
21. maj 2014 - 11:46 #3
Skal resultat(erne) placeres i hver sin kolonne?
Avatar billede larskoch Nybegynder
21. maj 2014 - 11:56 #4
Gerne i hver sin kolonne som vist i eksemplet - og hvis hele datoen kan trækkes ud eks 050113 så vil det være ideelt ellers kun måned år
Avatar billede supertekst Ekspert
21. maj 2014 - 13:36 #5
Rem Anbringes under relevante ark
rem Evt. formater kolonner t/tekst for at få foranstillet nul i datoerne
rem ============================================================
Const startRæk = 1                                  'kan justeres

Dim antalRæk As Long, ræk As Long
Dim tekst As String
Public Sub udtrækDatoer()
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    For ræk = startRæk To antalRæk
        tekst = Range("A" & ræk)
       
        findDatoer tekst
        If resultat <> "" Then
            Range("C" & ræk) = resultat
        End If
    Next ræk
End Sub
Private Sub findDatoer(tekst)
Dim x As Integer, antal As Integer, tabel As Variant
    antal = 0
    tabel = Split(tekst, " ")
    For x = 0 To UBound(tabel)
        If IsNumeric(tabel(x)) = True Then
           
            antal = antal + 1
            Range("A" & ræk).Offset(0, antal) = tabel(x)
        End If
    Next x
End Sub
Avatar billede larskoch Nybegynder
21. maj 2014 - 13:47 #6
Den er lige i skabet :-)
1.000 tak for hurtig assistance
Avatar billede supertekst Ekspert
21. maj 2014 - 13:51 #7
Fint & selv tak
Avatar billede larskoch Nybegynder
04. august 2014 - 12:11 #8
Hej igen.... håber på lidt hjælp til koden da jeg er stødt ind i lidt udfordringer med det tekstfelt som koden skal trække dato/perioden ud af.
Hvis der står andre tal i tekstfeltet skrives disse i de efterfølgende felter.
Eks. hvis der står Hent 5 l mælk, 2 l fløde og 1 citron så sætterden felterne til 5 2 og 1
Er det muligt, at den kun henter datoer ud som opfylder formatet eks 010113.
Derudover lidt udfordringer hvis bindestreg i posteringsperiode står som henholdsvis 010113-310113 eller 010113 - 310113

Håber det giver mening det jeg skriver og jeg kan få lidt hjælp

Lars
Avatar billede supertekst Ekspert
04. august 2014 - 13:40 #9
Hej Lars

Ser på det..
Avatar billede supertekst Ekspert
04. august 2014 - 14:06 #10
Rem Version 2
Rem =========
Rem Anbringes under relevante ark
Rem Evt. formater kolonner t/tekst for at få foranstillet nul i datoerne
Rem ============================================================
Const startRæk = 1                                  'kan justeres

Dim antalRæk As Long, ræk As Long
Dim tekst As String
Public Sub udtrækDatoer()
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    For ræk = startRæk To antalRæk
        tekst = Range("A" & ræk)
       
        findDatoer tekst
        If resultat <> "" Then
            Range("C" & ræk) = resultat
        End If
    Next ræk
End Sub
Private Sub findDatoer(tekst)
Dim x As Integer, antal As Integer, tabel As Variant
    antal = 0
Rem er der bindestreg
    If InStr(tekst, "-") > 0 Then
        If InStr(tekst, " - ") = 0 Then
            tekst = Replace(tekst, "-", " - ")
        End If
    End If
   
    tabel = Split(tekst, " ")
    For x = 0 To UBound(tabel)
        If IsNumeric(tabel(x)) = True Then
            If Len(tabel(x)) = 6 Then
                antal = antal + 1
                Range("A" & ræk).Offset(0, antal) = tabel(x)
            End If
        End If
    Next x
End Sub
Avatar billede larskoch Nybegynder
08. august 2014 - 11:30 #11
Hej "Supertekst"
Hvis der står et tegn/bogstav lige efter dato eks.
011013-311013,så sættes den sidste dato 311013 ikke - men ellers virker koden fint.
Avatar billede supertekst Ekspert
08. august 2014 - 11:58 #12
Rem Version 3
Rem =========
Rem Anbringes under relevante ark
Rem Evt. formater kolonner t/tekst for at få foranstillet nul i datoerne
Rem ============================================================
Const startRæk = 1                                  'kan justeres

Dim antalRæk As Long, ræk As Long
Dim tekst As String
Public Sub udtrækDatoer()
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    For ræk = startRæk To antalRæk
        tekst = Range("A" & ræk)
       
        findDatoer tekst
        If resultat <> "" Then
            Range("C" & ræk) = resultat
        End If
    Next ræk
End Sub
Private Sub findDatoer(tekst)
Dim x As Integer, antal As Integer, tabel As Variant
    antal = 0
Rem er der bindestreg
    If InStr(tekst, "-") > 0 Then
        If InStr(tekst, " - ") = 0 Then
            tekst = Replace(tekst, "-", " - ")
        End If
    End If
   
    tabel = Split(tekst, " ")
    For x = 0 To UBound(tabel)
        If Len(tabel(x)) > 6 Then
            tabel(x) = Left(tabel(x), 6)
        End If
       
        If IsNumeric(tabel(x)) = True Then
            If Len(tabel(x)) = 6 Then
                antal = antal + 1
                Range("A" & ræk).Offset(0, antal) = tabel(x)
            End If
        End If
    Next x
End Sub
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede 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