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

327

    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. Pienimäki ei anna haastatteluja

      medialle Ähtärin kunnan velka sotkuista, kertovat luotettavat lähteet.
      Ähtäri
      18
      3951
    2. Sinuun ei tehoa mikään

      Annan periksi. En vain jaksa tuulimyllyä vastaan taistella. Miehelle
      Ikävä
      37
      3741
    3. Onko Kuhmolaiset tyytyväisiä?

      Kun pääsivät eroon huijari Polvisesta?
      Kuhmo
      22
      3160
    4. Huomenta ja hyvää tiistaita

      Huomenta ja hyvää tiistaita. ❄️🐺☕❄️
      Ikävä
      88
      1961
    5. En tiedä mitä ajatella

      Petaatko perjantaille jotain. Ei meidän kannata minun sydän on viety. Se joka sen vei ei ole mieheni, etkä se ole sinä.
      Tunteet
      36
      1802
    6. voitaisiinko unohtaa se sotku?

      Olisiko mahdollista aloittaa puhtaalta pöydältä vielä? Ikävä sua ****
      Ikävä
      16
      1761
    7. Hyviä vinkkejä täällä

      Eli kaivattua vain kädestä kiinni ja jos vastustelee niin sanoo, että hei beibi beibi nyt mennään vaan. Näin he elivät e
      Ikävä
      17
      1657
    8. Naisten ulkonäkö, jos miehiä ei olisi?

      Mä meinasin ensiksi, että en aloittaisi tätä keskustelua, ainan nyt, mutta huomasin tossa toisessa ketjussa, että tämä s
      Sinkut
      245
      1629
    9. Myös lähellä keskustaa oleva Marttaliitto jättää lihan pois tilaisuuksistaan ja suosituksistaan.

      Marttaliitossa siirrytään terveellisempään ruokavalioon ja ihmiselle tarpeeton liha jätetään pois, ympäristö ja luonto k
      Suomen Keskusta
      192
      1169
    10. Jee! Palsta toimii jälleen!

      Viestiarkisto näkyy ja kaikki pelittää. Tätä on odotettu, vaikka ei tässä mitään odotettavaa ole ollut.
      Sinkut
      20
      1109
    Aihe