Använd kalkylbladsfunktioner i ett makro - exempel på VBA -kod

Det finns många sätt att använda funktioner i VBA. VBA har många inbyggda funktioner. Du kan till och med skapa dina egna funktioner (UDF). Du kan dock också använda många av Excel -funktioner i VBA genom att använda Application.WorksheetFunction.

Så här använder du kalkylbladsfunktioner i VBA

För att komma åt en Excel -funktion i VBA, lägg till Application.WorksheetFunction framför funktionen som du vill ringa. I exemplet nedan kallar vi Excel: s maxfunktion:

12 Dimma maxvärdet så längemaxvalue = Application.WorksheetFunction.Max (Range ("a1"). Value, Range ("a2"). Value)

Syntaxen för funktionerna är densamma, men du kommer att ange funktionsargumenten precis som alla andra VBA -funktioner.

Lägg märke till att syntaxen för maxfunktionen visas när du skriver (liknande med VBA -funktioner):

ArbetsbladFunktionsmetod

WorksheetFunction är en metod för applikationsobjekt. Det ger dig tillgång till många (inte alla) vanliga Excel -kalkylbladsfunktioner. I allmänhet får du inte tillgång till några kalkylbladsfunktioner som har en motsvarande VBA -version.

Du kan se en lista över många av de vanligaste kalkylbladsfunktionerna nedan.

Application.WorksheetFunction vs.Application

Det finns faktiskt två sätt att komma åt dessa funktioner:

Application.WorksheetFunction (enligt ovan):

1 maxvalue = Application.WorksheetFunction.Max (Range ("a1"). Value, Range ("a2"). Value)

eller så kan du utelämna WorksheetFunction

1 maxvalue = Application.Max (Range ("a1"). Value, Range ("a2"). Value)

Tyvärr kommer utelämning av arbetsbladsfunktionen att eliminera Intellisense som visar syntaxen (se bilden ovan). Det har dock en stor potentiell fördel: Felhantering.

Om du använder programmet och din funktion genererar ett fel returnerar det felvärdet. Om du använder metoden WorksheetFunction kommer VBA att kasta ett körtidsfel. Naturligtvis kan du hantera VBA -felet, men det är vanligtvis bättre att undvika felet i första hand.

Låt oss titta på ett exempel för att se skillnaden:

Vlookup -arbetsblad Funktionsfelhantering

Vi kommer att försöka utföra en Vlookup som inte kommer att resultera i en match. Så Vlookup -funktionen returnerar ett fel.

Först kommer vi att använda metoden WorksheetFunction. Lägg märke till hur VBA kastar ett fel:

Därefter utelämnar vi arbetsbladsfunktionen. Lägg märke till hur

Därefter utelämnar vi arbetsbladsfunktionen. Lägg märke till hur inget fel kastas och istället innehåller "värde" -funktionen felvärdet från Vlookup.

Funktionslista för VBA -kalkylblad

Nedan hittar du en lista över de flesta vanliga VBA WorksheetFunctions.

FungeraBeskrivning
Logisk
OCHKontrollerar om alla villkor är uppfyllda. SANT FALSKT
OMOm villkoret är uppfyllt, gör något, om inte, gör något annat.
IFERROROm resultatet är ett fel, gör något annat.
ELLERKontrollerar om några villkor är uppfyllda. SANT FALSKT
Sökning och referens
VÄLJAVäljer ett värde från en lista baserat på dess positionsnummer.
HLOOKUPLeta upp ett värde på den första raden och returnera ett värde.
INDEXReturnerar ett värde baserat på dess kolumn- och radnummer.
SLÅ UPPSlår upp värden antingen horisontellt eller vertikalt.
MATCHSöker efter ett värde i en lista och returnerar sin position.
ÖVRIGTVänder riktningen för ett antal celler.
VLOOKUPLeta upp ett värde i den första kolumnen och returnera ett värde.
Datum Tid
DATUMReturnerar ett datum från år, månad och dag.
DATEVALUEKonverterar ett datum som lagras som text till ett giltigt datum
DAGReturnerar dagen som ett tal (1-31).
DAGAR 360Returnerar dagar mellan 2 datum under ett 360 dagars år.
EDATEReturnerar ett datum, n månader kvar från ett startdatum.
EOMONTHReturnerar den sista dagen i månaden, n månader bort.
TIMMEReturnerar timmen som ett tal (0-23).
MINUTReturnerar minuten som ett tal (0-59).
MÅNADReturnerar månaden som ett tal (1-12).
NÄTVERKSDAGARAntal arbetsdagar mellan 2 datum.
NETWORKDAYS.INTLArbetsdagar mellan 2 datum, anpassade helger.
NUReturnerar aktuellt datum och tid.
ANDRAReturnerar den andra som ett tal (0-59)
TIDReturnerar tiden från en timme, minut och sekund.
TIMEVALUEKonverterar en tid som lagras som text till en giltig tid.
VECKODAGReturnerar veckodagen som ett tal (1-7).
VECKANReturnerar veckonumret på ett år (1-52).
ARBETSDAGDatumet n arbetsdagar från ett datum.
ÅRReturnerar året.
YEARFRACReturnerar bråkdelen av ett år mellan 2 datum.
Teknik
KONVERTERAKonvertera nummer från en enhet till en annan.
Finansiell
FVBeräknar det framtida värdet.
PVBeräknar nuvärdet.
NPERBeräknar det totala antalet betalningsperioder.
PMTBeräknar betalningsbeloppet.
BETYGSÄTTABeräknar räntan.
NPVBeräknar nuvärdet.
IRRDen interna avkastningen för en uppsättning periodiska CF: er.
XIRRDen interna avkastningen för en uppsättning icke-periodiska CF: er.
PRISBeräknar priset på en obligation.
INTRATERäntan på ett fullt investerat värdepapper.
Information
ISERRTesta om cellvärdet är ett fel, ignorerar #N/A. SANT FALSKT
FELTesta om cellvärdet är ett fel. SANT FALSKT
ÄR JÄMNTTesta om cellvärdet är jämnt. SANT FALSKT
ISLOGISKTTesta om cellen är logisk (SANT eller FALSK). SANT FALSKT
ISNATesta om cellvärdet är #N/A. SANT FALSKT
ISNONTEXTTesta om cellen inte är text (tomma celler är inte text). SANT FALSKT
ISNUMBERTesta om cellen är ett tal. SANT FALSKT
ISODDTesta om cellvärdet är udda. SANT FALSKT
ISTEXTTesta om cellen är text. SANT FALSKT
TYPReturnerar värdetypen i en cell.
Matematik
magmusklerBeräknar det absoluta värdet för ett tal.
AGGREGATEDefiniera och utför beräkningar för en databas eller en lista.
TAKAvrundar ett tal upp till närmaste angivna multipel.
COSReturnerar cosinus för en vinkel.
GRADERKonverterar radianer till grader.
DSUMSummer databasposter som uppfyller vissa kriterier.
ÄVENAvrundar till närmaste jämna heltal.
EXPBeräknar det exponentiella värdet för ett givet tal.
FAKTUMReturnerar faktorn.
GOLVAvrundar ett tal ner till närmaste angivna multipel.
GCDReturnerar den största gemensamma delaren.
INTAvrundar ett tal ner till närmaste heltal.
LCMReturnerar den minst gemensamma multipeln.
LNReturnerar den naturliga logaritmen för ett tal.
LOGGAReturnerar logaritmen för ett tal till en angiven bas.
LOG10Returnerar bas-10-logaritmen för ett tal.
MROUNDAvrundar ett tal till en angiven multipel.
UDDAAvrundar till närmaste udda heltal.
PIVärdet på PI.
KRAFTBeräknar ett tal som höjs till en effekt.
PRODUKTMultiplicerar en rad siffror.
KVOTReturnerar heltalets resultat av division.
RADIANSKonverterar en vinkel till radianer.
RANDBETWEENBeräknar ett slumpmässigt tal mellan två nummer.
RUNDAAvrundar ett tal till ett visst antal siffror.
AVRUNDA NEDÅTAvrundar ett tal nedåt (mot noll).
RUNDA UPPAvrundar ett tal uppåt (bort från noll).
SYNDReturnerar sinus för en vinkel.
DELSUMMAReturnerar en sammanfattande statistik för en serie data.
BELOPPLägger ihop siffror.
SUMIFSummanummer som uppfyller ett kriterium.
SUMIFIERSummanummer som uppfyller flera kriterier.
SUMPRODUKTMultiplicerar matriser med tal och summerar den resulterande matrisen.
SOLBRÄNNAReturnerar tangenten för en vinkel.
Statistik
GENOMSNITTGenomsnittssiffror.
GENNEMSNITTGenomsnittssiffror som uppfyller ett kriterium.
GENNEMSNITTGenomsnittssiffror som uppfyller flera kriterier.
CORRELBeräknar korrelationen mellan två serier.
RÄKNARäknar celler som innehåller ett tal.
COUNTARäkna celler som inte är tomma.
RUNTBLANKRäknar tomma celler.
RÄKTARäknar celler som uppfyller ett kriterium.
RÄKNINGARRäknar celler som uppfyller flera kriterier.
PROGNOSFörutse framtida y-värden från linjär trendlinje.
FREKVENSRäknar värden som faller inom angivna intervall.
TILLVÄXTBeräknar Y -värden baserat på exponentiell tillväxt.
GENSKJUTABeräknar Y-avlyssningen för en linje som passar bäst.
STORReturnerar det kth största värdet.
LINESTReturnerar statistik om en trendlinje.
MAXReturnerar det största antalet.
MEDIANReturnerar mediannumret.
MINReturnerar det minsta antalet.
LÄGEReturnerar det vanligaste numret.
PERCENTILReturnerar kth percentilen.
PERCENTIL.INCReturnerar kth percentilen. Där k är inkluderande.
PERCENTILE.EXCReturnerar kth percentilen. Där k är exklusivt.
KVARTILReturnerar det angivna kvartilvärdet.
QUARTILE.INCReturnerar det angivna kvartilvärdet. Inklusive.
QUARTILE.EXCReturnerar det angivna kvartilvärdet. Exklusiv.
RANGRankning av ett nummer inom en serie.
RANK.AVGRankning av ett nummer inom en serie. Genomsnitt.
RANK.EQRankning av ett nummer inom en serie. Att skämta.
BACKEBeräknar lutningen från linjär regression.
SMÅReturnerar det kth minsta värdet.
STDEVBeräknar standardavvikelsen.
STDEV.PBeräknar SD för en hel befolkning.
STDEV.SBeräknar SD för ett prov.
STDEVPBeräknar SD för en hel befolkning
TRENDBeräknar Y -värden baserat på en trendlinje.
Text
RENATar bort alla tecken som inte kan skrivas ut.
DOLLARKonverterar ett tal till text i valutaformat.
HITTALokaliserar textens position i en cell.Case-sensitive.
VÄNSTERAvkortar text ett antal tecken från vänster.
LENRäknar antalet tecken i texten.
MITTENExtraherar text från mitten av en cell.
RÄTTKonverterar text till rätt bokstav.
BYTA UTErsätter text baserat på platsen.
REPTUpprepar texten ett antal gånger.
HÖGERAvkortar text ett antal tecken från höger.
SÖKLokaliserar textens position i en cell. Inte skiftlägeskänslig.
ERSÄTTNINGHittar och ersätter text. Skiftlägeskänsliga.
TEXTKonverterar ett värde till text med ett visst talformat.
TRIMTar bort alla extra mellanslag från text.
wave wave wave wave wave