Zurückgeben mehrerer Ergebnisse aus Ihrer benutzerdefinierten Funktion
Sie können mehrere Ergebnisse von Ihrer benutzerdefinierten Funktion zurückgeben, die an benachbarte Zellen zurückgegeben werden. Dieses Verhalten wird als Überlauf bezeichnet. Wenn Ihre benutzerdefinierte Funktion ein Array von Ergebnissen zurückgibt, wird sie als dynamische Arrayformel bezeichnet. Weitere Informationen zu formeln dynamischen Arrays in Excel finden Sie unter Dynamische Arrays und Verhalten von übergelaufenen Arrays.
Die folgende Abbildung zeigt, wie die SORT
Funktion in benachbarte Zellen überläuft. Ihre benutzerdefinierte Funktion kann auch mehrere Ergebnisse wie dieses zurückgeben.
Um eine benutzerdefinierte Funktion zu erstellen, die eine dynamische Arrayformel ist, muss sie ein zweidimensionales Array von Werten zurückgeben. Wenn die Ergebnisse in benachbarte Zellen überlaufen, die bereits Werte aufweisen, zeigt die Formel einen #SPILL!
Fehler an.
Codebeispiele
Das erste Beispiel zeigt, wie ein dynamisches Array zurückgegeben wird, das überläuft.
/**
* Get text values that spill down.
* @customfunction
* @returns {string[][]} A dynamic array with multiple results.
*/
function spillDown() {
return [['first'], ['second'], ['third']];
}
Das zweite Beispiel zeigt, wie ein dynamisches Array zurückgegeben wird, das nach rechts überläuft.
/**
* Get text values that spill to the right.
* @customfunction
* @returns {string[][]} A dynamic array with multiple results.
*/
function spillRight() {
return [['first', 'second', 'third']];
}
Das dritte Beispiel zeigt, wie ein dynamisches Array zurückgegeben wird, das sowohl nach unten als auch nach rechts überläuft.
/**
* Get text values that spill both right and down.
* @customfunction
* @returns {string[][]} A dynamic array with multiple results.
*/
function spillRectangle() {
return [
['apples', 1, 'pounds'],
['oranges', 3, 'pounds'],
['pears', 5, 'crates']
];
}
Das vierte Beispiel zeigt, wie ein dynamisches Überlaufarray aus einer Streamingfunktion zurückgegeben wird. Die Ergebnisse gehen wie im ersten Beispiel nach unten und werden basierend auf dem amount
Parameter einmal pro Sekunde inkrementiert. Weitere Informationen zu Streamingfunktionen finden Sie unter Erstellen einer Streamingfunktion.
/**
* Increment the cells with a given amount every second. Creates a dynamic spilled array with multiple results
* @customfunction
* @param {number} amount The amount to add to the cell value on each increment.
* @param {CustomFunctions.StreamingInvocation<number[][]>} invocation Parameter to send results to Excel or respond to the user canceling the function. A dynamic array.
*/
function increment(amount: number, invocation: CustomFunctions.StreamingInvocation<number[][]>): void {
let firstResult = 0;
let secondResult = 1;
let thirdResult = 2;
const timer = setInterval(() => {
firstResult += amount;
secondResult += amount;
thirdResult += amount;
invocation.setResult([[firstResult], [secondResult], [thirdResult]]);
}, 1000);
invocation.onCanceled = () => {
clearInterval(timer);
};
}
Siehe auch
Office Add-ins