poimi.teksti

excel-hevijuuser

Onko mahdollista tehdä funktio, jossa on etsittävä teksti (esim. cm) ja sen EDESSÄ vaihtuva numero (esim. 5cm, 7cm ...). Eli ottaisi huomioon aloitusmerkin edessä olevan merkin? Se kyllä onnistuu, että funktio ottaa huomioon aloitusmerkin jälkeen tulevat merkit.

5

463

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • muuan_mies2

      Jos tarvitaan vain yksi numero ennen "cm" tekstiä:
      =ARVO(POIMI.TEKSTI(A1;ETSI("cm";A1;1)-1;1))

    • Tämmöinen

      Tämä ei sallii välilyönnit luvun ja yksikön välissä. Pelkkää etumerkkiä ei hyväksytä luvuksi. Desimaalierottimeksi käy sekä pilkku että piste. Niiden lukumäärää ei tarkisteta - toinen pilkku vain katkaisee luvun.

      Function HaeLuku(s As String, y As String)
         
         n = ""
         p = InStr(s, y)
         
         If p > 0 Then

            Do While Mid(s, p - 1, 1) = " "
               p = p - 1
            Loop

            Do
               nyt = Mid(s, p - 1, 1)
               Select Case nyt
                  Case "0" To "9", ".", ","
                     n = nyt n
                     p = p - 1
                  Case " ", "-"
                     n = nyt n
                     Exit Do
                  Case Else
                     Exit Do
               End Select
            Loop
            
         End If
         
         n = WorksheetFunction.Substitute(n, ",", ".")
         If n = "" Or n = " " Or n = "-" Then
            HaeLuku = CVErr(xlErrNA)
         Else
            HaeLuku = Val(n)
         End If
         
      End Function

      • tämmösen funktiohan ei palauta mitään... ;-)

        luvun tai lukujen välissä voi olla tyhjiäkin. Kyssäristä ei käy ilmi voiko olla desimaaleja yms ?

        Sub Testi()
        MsgBox HaeLuku("222227 cm")
        End Sub

        Public Function HaeLuku(s As String) As Variant
        HaeLuku = Trim(Mid(StrReverse(s), 3))
        If IsNumeric(HaeLuku) Then
        HaeLuku = StrReverse(HaeLuku)
        Else
        HaeLuku = "VIRHE"
        End If
        End Function

        Keep EXCELing
        @Kunde


      • Tämmöinen
        kunde kirjoitti:

        tämmösen funktiohan ei palauta mitään... ;-)

        luvun tai lukujen välissä voi olla tyhjiäkin. Kyssäristä ei käy ilmi voiko olla desimaaleja yms ?

        Sub Testi()
        MsgBox HaeLuku("222227 cm")
        End Sub

        Public Function HaeLuku(s As String) As Variant
        HaeLuku = Trim(Mid(StrReverse(s), 3))
        If IsNumeric(HaeLuku) Then
        HaeLuku = StrReverse(HaeLuku)
        Else
        HaeLuku = "VIRHE"
        End If
        End Function

        Keep EXCELing
        @Kunde

        Mitä tarkoitat, ettei palauta mitään? Sellainen vika siinä kyllä oli, että jos haettava luku oli jo tekstin alussa, tuli virhe. Muuten se toimii. EndSelect:in jälkeinen Loop pitää muuttaa:
        Loop Until p = 1

        Riippuen siitä, mihin tätä tarvitaan, CVErr(xlErrNA) tilalla toiminee paremmin pelkkä tyhjä "". Näin ainakin, jos funktiota käytetään kuten ao. testissä. Siis, ymmärsin tarpeen näin:

        Sub Testi()
        Dim teksti As String
        teksti="4 ffwf222f227 km wfwwfwf88cm fw"
        MsgBox HaeLuku(teksti, "km") & " km"
        ' -> 227 km
        MsgBox HaeLuku(teksti, "cm") & " cm"
        ' -> 88 cm
        End Sub


    • excel-hevijuuser

      Kiitos!

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      54
      2798
    2. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      61
      2641
    3. SDP:n lyhyt selviytymisopas

      1. Komitea on vastaus, oli kysymys mikä tahansa Jos maailma on muuttumassa tai jossain palaa, demari ei hätiköi. Ensin p
      Maailman menoa
      36
      2163
    4. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      63
      1937
    5. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      55
      1905
    6. Kiva kun SDP alkaa hallitsemaan Suomea

      Vanhat hyvät ajat taas palaavat ja kansa vaurastuu. Muistatteko vielä Sorsan aikakauden? Silloin Suomessa tehtiin jopa
      Maailman menoa
      35
      1602
    7. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      41
      935
    8. Toivoisitko

      Toivoisitko, että kaivattusi olisi introvertimpi tai extrovertimpi? Itsenäinen tai tarvitsisi enemmän apua/sinua? Osoit
      Ikävä
      112
      863
    9. Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!

      Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.
      Kotimaiset julkkisjuorut
      123
      839
    10. Sotekeskus

      Aloite on hyvä, kiitokset siitä. Mutta jos olette yhtään seuranneet hyvinvointialueen kokouksia niin sehän on jo nuijit
      Ähtäri
      37
      824
    Aihe