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

398

    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. Kaipaatko sinä

      Yhtään meidän katseita
      Ikävä
      204
      2358
    2. Törkeä eläinsuojelurikos Sonkajärvellä

      Pohjois-Savossa Sonkajärvellä noin 40 kissaa ja reilut 10 koiraa on jouduttu lopettamaan kaltoinkohtelun vuoksi, kertoo
      Sonkajärvi
      40
      1572
    3. Jotkut ihmiset pelkäävät syöpää sairastavaa

      On hauskaa, kun kertoo jollekin, että "minulla on syöpä". Jotkut käyttäytyvät kuin se olisi tarttuva tauti. Eivät uskall
      Sinkut
      135
      1222
    4. Lavrov suivaantui Stubbille perustellusti.

      Lavrov perusteli suivaantumistaan tosiasioilla Suomen tarinasta sotiemme jälkeen, tutkija Tynkkynen ja pankkihenkilö Sol
      Maailman menoa
      288
      1018
    5. Se ei ihan oikeasti vaatisi kuin yhden

      Tekstiviestin... Jos rakastat minua vielä toivoisin että laittaisit minulle viestiä. Rakastatko? Oletko oikeasti niin pe
      Ikävä
      56
      972
    6. Sukupuolia on vain kaksi- kohukassista tuli kova tuomio perheenisälle oikeudessa.

      https://www.iltalehti.fi/kotimaa/a/4d4db0d9-4dda-4ba6-a699-25d725683ad6 Miten näin normaalista kassissa olevasta tekstis
      Maailman menoa
      288
      915
    7. olisit voinut mies edes

      Pyytää anteeksi 🙏🫶
      Ikävä
      55
      906
    8. Kääminsä polttanut taksi suomussalmella

      Vieläkö sillä hermonsa menettäneellä hulluja ylinopeuksia ajavalla asiakkaansa haukkuvalla( jos ajat paska kyydin hänen
      Suomussalmi
      20
      902
    9. Jorma Uotinen avaa sanaisen arkkunsa TTK-miesparista ja koko uudistuksesta: "Sehän on..."

      Tanssii Tähtien Kanssa -parketilla nähdään ensimmäistä kertaa Suomessa tanssiparina miespari kauden alusta asti. Mikko S
      Tanssii tähtien kanssa
      18
      765
    10. Aina ku nään sun kuvan

      Tekis mieli kirjoittaa viesti: Moi kulta, on ikävä❣️🤗 ihan noin vain, lyhyt ja ytimekäs 😁🤭
      Ikävä
      58
      763
    Aihe