Solun sanojen lukumäärän laskeminen

Kuinka saadaan laskettua yhden solun sanojen lukumäärä, jotka on erotettu pilkulla tai tietyllä muulla merkillä?
10285
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

=LEN(TRIM(A1))-LEN(SUBSTITUTE(A1;" ";"")) 1
mutta tulos voi heittää, koska ylimääräiset/ puutuvat välilyönit vaikeuttaa tilannetta(mm. tupla välilyönti ennen pilkkua.)
Toki voishan sitä monsterikaavaa vääntää, mutta siististi ja varmasti VBA:lla

soluun kaava =sanojenlkm(A1;","), missä A1 solu ja "," erotin

moduuliin...

Function SanojenLkm(Solu As Range, Erotin As String) As Integer
SanojenLkm = UBound(Split(Solu, Erotin)) 1
End Function

Keep EXCELing
@Kunde

Äänestä
  • VBA toimii juuri kuten tarvitsin, kiitos!

    Äänestä

er

Äänestä
  • Juuri kun pääsin...

    eli ongelma jatkuu. Excel -03 homma toimii, mutta kun yritin töissä Excel 2000:ssa, palautuu virhe #NIMI?

    kaava taulukossa: =JOS(I6="ha";SUMMA(0,46 0,03*sanojenlkm(G6;",") );"")

    sama virhe palautuu kokeiltaessa yksinkertaista : =sanojenlkm(G6;",")

    Moduulissa on kunden koodi ja solussa G6 on nimiluettelo pilkuin erotettuna..

    Äänestä

jos oikein muistelen, niin toi SPLIT funtio tuli vasta 2003 versioon...
eli ei toimi sitten 2000 versiossa ja vaatii toisenlaisen lähestymistavan

Äänestä

Ok, kiitos kunde ja jos keksit jipon 2k versioon niin tupla kiitos :)

Äänestä
  • kyllä se SPLIT sittenkin esiteltiin jo 2000 versiossa...

    kokeilesvielä tällä toimiiko se. Eli pitäisi palauttaa sanojen lkm solusta G6

    Sub koe1()
    MsgBox UBound(Split(Range("G6"), ",")) 1
    End Sub

    en tiedä toimisko tämmönen sitten tämmönen "kikka kolmonen", että kopioit sen 2003 version EXCEL.EXE jonnekin kansioon siellä duunissa ja lisäät sitten VBA puolella referenssin siihen... ja sitten kokeilet uudelleen funktiota?

    Äänestä

  • kunde kirjoitti:

    kyllä se SPLIT sittenkin esiteltiin jo 2000 versiossa...

    kokeilesvielä tällä toimiiko se. Eli pitäisi palauttaa sanojen lkm solusta G6

    Sub koe1()
    MsgBox UBound(Split(Range("G6"), ",")) 1
    End Sub

    en tiedä toimisko tämmönen sitten tämmönen "kikka kolmonen", että kopioit sen 2003 version EXCEL.EXE jonnekin kansioon siellä duunissa ja lisäät sitten VBA puolella referenssin siihen... ja sitten kokeilet uudelleen funktiota?

    kokeile tätäkin...

    Sub koe2()
    MsgBox UBound(Split(Range("G6"), Chr(44))) 1
    End Sub
    jos ei näillä pelitä sitten toisella tapaa...
    nyt täällä paikallinen uusivuosi joten menee sitten ensiviikkoon vastaukset...

    Äänestä

  • kunde kirjoitti:

    kokeile tätäkin...

    Sub koe2()
    MsgBox UBound(Split(Range("G6"), Chr(44))) 1
    End Sub
    jos ei näillä pelitä sitten toisella tapaa...
    nyt täällä paikallinen uusivuosi joten menee sitten ensiviikkoon vastaukset...

    vielä yksi tarkistuspaikka
    Referenssit ja jos jossakin teksti Missing niin lisää se sitten
    Eihän siellä ole enkkuversio? Joten kaavassa oleva erotin ; pitäisi olla , ???

    no paikallista Hyvää Uutta Vuotta sitten ( 3. Uusi Vuosi jo tälle vuodelle...) olispas nää muutkit juhlat sitten aina kolmena kappaleena... ;-)

    Äänestä

Duuniversio on suomi. Koe1/2 palauttaa virheen #NIMI?. Varmuudeksi, riittääkö soluun aliohjelmakutsu: =koe1 tai =koe2?
Tsekkasin VB:n puolella Tools/References (onko oikea paikka?), ei näkynyt Missing. Siellä täpättynä VB for Applications, MS Excel 9.0 Object Library, OLE Automation, MS Office 9.0 Object Library. Nimim. pihalla :)

Äänestä

Kommentoi aloitusta


Petexcel kirjoitti:

Kuinka saadaan laskettua yhden solun sanojen lukumäärä, jotka on erotettu pilkulla tai tietyllä muulla merkillä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu