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.
poimi.teksti
5
393
Vastaukset
- 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 Functiontä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
@KundeMitä 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
Kysymys muille miehille
Onko teille varattu nainen ongelma? Mikään muu naisessa ei töki kun se että hän on varattu. Kamppailen houkutuksen kanss895988Kohta katson sun kuvaasi
ja päästän ajatukseni liitämään. Jo kuvasi näkeminen rauhoittaa, ja pistää hyrräämään vähän muutakin. Ihanan kaunista sa243567- 1652128
Ahneus iski Fazeriin, suklaalevy kutistuu 180 grammaan
Kun mikään ei riitä. Shrinkflaatio. Mitä isot (Marabou) edellä, sitä pienet (Fazer) perässä. Pienikin voi siis olla a2312022Jos kaivattusi on perääntynyt lähestyessäsi
jossain tilanteessa, ymmärrätkö miksi hän saattoi tehdä sen?1771768Martinan bisnekset rajusti tappiolla
Seiska 28.7: nousukiito katkesi, yritykset C-luokkaa.2851532- 671051
Voiko olla, onko se tosiaan niin että
Kumpikin rakastetaan toisiamme. Nyt pitää sukeltaa pakastimeen ❤️🥵571041Metsa Man Extra kanava toimii hyvin
ja sieltä voipi kahta vanhoja vitejoita pahimpaan puutteeseen. Peukalot ylös.211020Mitkä yleiset huonot tavat ihmisillä ärsyttävät sinua ?
Aloitukseen saa vapaasti purkaa tuntojaan. Itseäni hiukan kiusaa, kun saman talon asukkaat eivät vastaa tervehdykseen.114984