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?
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?
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
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
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...