Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Excel-Datentypen ermöglichen es benutzerdefinierten Funktionen, Werte zu akzeptieren und zurückzugeben, die über Zeichenfolgen, Zahlen, boolesche Werte und Fehler hinausgehen. Beispielsweise kann eine benutzerdefinierte Funktion eine formatierte Zahl zurückgeben oder einen Entitätswert als Argument akzeptieren.
Benutzerdefinierte Funktionen und die Excel-JavaScript-API verwenden dasselbe JSON-Schema für Datentypen. Nach der Aktivierung behält Excel dieses Schema bei, da benutzerdefinierte Funktionen Werte berechnen und auswerten.
Testen von benutzerdefinierten Funktionen mit Datentypen
Installieren Sie Script Lab in Excel, und führen Sie dann das Beispiel Datentypen: Benutzerdefinierte Funktionen aus der Bibliothek Beispiele aus.
Behandeln von Datentypen durch benutzerdefinierte Funktionen
Benutzerdefinierte Funktionen können Datentypen als Parameter akzeptieren und Datentypen als Rückgabewerte erstellen. Eine Einführung in die verfügbaren Typen finden Sie unter Übersicht über Datentypen in Excel-Add-Ins.
Hinweis
Benutzerdefinierte Funktionen unterstützen nicht die vollständige Funktionalität der erweiterten Fehlerobjekte, die von Datentypen bereitgestellt werden. Eine benutzerdefinierte Funktion kann ein Datentypfehlerobjekt akzeptieren, behält den Fehler aber nicht während der gesamten Berechnung bei. Derzeit unterstützen benutzerdefinierte Funktionen nur die Fehler, die im CustomFunctions.Error-Objekt beinhaltet sind.
Aktivieren von Datentypen für benutzerdefinierte Funktionen
Projekte mit benutzerdefinierten Funktionen enthalten eine JSON-Metadatendatei, die sich vom JSON-Schema unterscheidet, das von den Datentyp-APIs verwendet wird. Um Datentypen für benutzerdefinierte Funktionen zu aktivieren, fügen Sie die allowCustomDataForDataTypeAny Eigenschaft manuell der Metadatendatei für benutzerdefinierte Funktionen hinzu, und legen Sie sie auf fest true.
"allowCustomDataForDataTypeAny": true
Eine vollständige Beschreibung des manuellen Json-Metadatenerstellungsprozesses finden Sie unter Manuelles Erstellen von JSON-Metadaten für benutzerdefinierte Funktionen. Weitere Informationen zu dieser Eigenschaft finden Sie unter allowCustomDataForDataTypeAny.
Ausgeben einer formatierten Zahl
Die folgende benutzerdefinierte Funktion akzeptiert eine Zahl und ein Zahlenformat und gibt dann ein formatiertes DoubleCellValue-Objekt zurück.
/**
* Take a number as the input value and return a double as the output.
* @customfunction
* @param {number} value
* @param {string} format (e.g. "0.00%")
* @returns A formatted number value.
*/
function createFormattedNumber(value, format) {
return {
type: "Double",
basicValue: value,
numberFormat: format
};
}
Eingeben eines Entitätswerts
Die folgende benutzerdefinierte Funktion akzeptiert ein EntityCellValue-Objekt und einen Attributnamen. Es gibt die -Eigenschaft der text Entität zurück, wenn attribute ist text. Andernfalls wird der basicValue der angeforderten Eigenschaft zurückgegeben.
Wichtig
Wenn Sie eine EntityCellValue in einer benutzerdefinierten Funktion erstellen oder zurückgeben und dieser Wert geschachtelte Entitäten enthält, definieren Sie nur das referencedValues Array für die Entität auf Stammebene. Die Definition referencedValues für eine geschachtelte Entität bewirkt, dass Excel einen #VALUE!-Fehler ohne JavaScript-Ausnahme oder detaillierte Diagnose zurückgibt. Verwenden Sie ReferenceCellValue-Indizes in geschachtelten Entitäten, um stattdessen auf das Array der Stammentität referencedValues zu verweisen. Weitere Informationen finden Sie unter Entitätswerte.
/**
* Accept an entity value data type as a function input.
* @customfunction
* @param {Excel.EntityCellValue} value
* @param {string} attribute
* @returns {any} The text value of the entity.
*/
function getEntityAttribute(value, attribute) {
if (value.type === "Entity") {
if (attribute === "text") {
return value.text;
} else {
return value.properties[attribute].basicValue;
}
} else {
return JSON.stringify(value);
}
}
Weitere Informationen
Office Add-ins