Countif omassa funktiossa

funktio ylisuuret(alue as range)
ylisuuret = Application.WorksheetFunction.CountIf(alue, ">100")
end function

Mikä tossa yllä mättää? Ei oikein toimi. (solussa kutsu =ylisuuret(E2:E200))

Kumpi sitten on tehokkaampaa, käyttää countiffia vai loopata alue vertaillen läpi for each:lla?
3334
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Toimii mainiosti julkisessa modulissa. Ei toimi SheetX- tai ThisWorkbook-modulissa.

Function ylisuuret(alue As Range)
ylisuuret = Application.WorksheetFunction.CountIf(alue, ">100")
End Function

Äänestä

laita tämä moduuliin

Public Function ylisuuret(alue As Range)
ylisuuret = Application.WorksheetFunction.CountIf(alue, ">100")
End Function

ilman muuta kannattaa käyttää Excelin omia funktioita
for...next on yleensä hitain vaihtoehto

Äänestä

Pikkasen liikaa yksinkertaistin tuota ongelman esittelyä ja itse ongelma jäikin pois. Mulla nääs oli tuon ">100" rakennettu tosiasiassa siten, että vertailuarvo haettiin solusta. Solun arvossa on desimaaliosa, joka tietty suomalaisilla asetuksilla erotetaan pilkulla.

Siispä countiffiksi tuli CountIf(alue, ">100,0") mistä tietty excel hyperventiloi...

Täytyy siis tuo pilkku korvata arvon hakemisen jälkeen pisteellä rakennettaessa vertailuehtoa...

Äänestä

Kommentoi aloitusta


VBA-opiskelua kirjoitti:

funktio ylisuuret(alue as range)
ylisuuret = Application.WorksheetFunction.CountIf(alue, ">100")
end function

Mikä tossa yllä mättää? Ei oikein toimi. (solussa kutsu =ylisuuret(E2:E200))

Kumpi sitten on tehokkaampaa, käyttää countiffia vai loopata alue vertaillen läpi for each:lla?

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