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.
Dieser Artikel enthält Tipps, bewährte Methoden und Informationen zum Ökosystem von Office-Add-Ins für neue Entwickler von Add-Ins für benutzerdefinierte Funktionen.
Das folgende Diagramm veranschaulicht die Interaktion zwischen einer benutzerdefinierten Funktion und den beiden Standard Komponenten, die an benutzerdefinierten Funktions-Add-Ins beteiligt sind: Excel und externe Dienste.
Mit Excel können Sie Ihre eigenen benutzerdefinierten Funktionen in die Anwendung integrieren und wie integrierte Funktionen ausführen.
Das Add-In für benutzerdefinierte Funktionen definiert die Logik für Ihre Funktionen und deren Interaktion mit Excel- und Office-JavaScript-APIs. Informationen zum Erstellen eines Add-Ins für benutzerdefinierte Funktionen finden Sie im Tutorial zu benutzerdefinierten Funktionen.
Ein externer Dienst ist optional. Es kann Ihrem Add-In Funktionen wie das Importieren von Daten von außerhalb der Arbeitsmappe bieten. Das Add-In für benutzerdefinierte Funktionen gibt an, wie externe Daten in die Arbeitsmappe integriert werden. Weitere Informationen finden Sie unter Empfangen und Verarbeiten von Daten mit benutzerdefinierten Funktionen.
Optimieren der Neuberechnungseffizienz benutzerdefinierter Funktionen
Im Allgemeinen folgt die Neuberechnung benutzerdefinierter Funktionen dem etablierten Muster der Neuberechnung in Excel. Wenn die Neuberechnung ausgelöst wird, wechselt Excel in einen dreistufigen Prozess: Erstellen einer Abhängigkeitsstruktur, Erstellen einer Berechnungskette und anschließendes Neuberechnung der Zellen. Um die Effizienz der Neuberechnung in Ihrem Add-In zu optimieren, sollten Sie die Ebene der Schachtelung in Ihren benutzerdefinierten Funktionen, den Excel-Berechnungsmodus und die Einschränkungen flüchtiger Funktionen berücksichtigen.
Schachteln in benutzerdefinierten Funktionen
Eine benutzerdefinierte Funktion kann eine andere benutzerdefinierte Funktion als Argument akzeptieren, sodass das Argument eine geschachtelte benutzerdefinierte Funktion ist. Die Neuberechnung der äußeren benutzerdefinierten Funktion hängt vom Ergebnis der geschachtelten Funktion ab, was zu einem höheren Zeitverbrauch mit jeder zusätzlichen geschachtelten Funktion führt. Minimieren Sie die Anzahl der geschachtelten Ebenen in Ihren benutzerdefinierten Funktionen, um die Effizienz der Neuberechnung zu verbessern. Die folgenden Codeausschnitte veranschaulichen zwei Ansätze zum Hinzufügen von Werten in der Arbeitsmappe, die ähnliche Ausgaben erzeugen. Option 1 verwendet ein Array, um Werte als einzelnen Parameter aufzurufen, während Option 2 jeden Wert als separaten Parameter aufruft, sodass Option 1 effizienter ist.
Option 1: Steigern der Effizienz mit eingeschränkter Schachtelung
Hinweis
Dies ist der empfohlene Ansatz. Es verwendet ein Array, um Werte als einzelnen Parameter aufzurufen und unnötige Schachtelungen zu vermeiden, sodass es effizienter ist als Option 2.
/**
* Returns the sum of input numbers.
* @customfunction
*/
function Add(args: number[]): number {
let total = 0;
args.forEach(value => {
total += value;
});
return total;
}
Option 2: Mehr Schachtelung ist ineffizient
Hinweis
Dieser Ansatz wird nicht empfohlen. Option 1 und Option 2 erzeugen ähnliche Ausgaben, option 2 verwendet jedoch mehr Parameter und ist weniger effizient.
/**
* Returns the sum of two numbers.
* @customfunction
*/
function Add(arg1: number, arg2: number): number {
return arg1 + arg2;
}
Excel-Berechnungsmodi
Excel verfügt über drei Berechnungsmodi: Automatisch, Automatisch außer Tabellen und Manuell. Um zu ermitteln, welcher Berechnungsmodus am besten zu Ihrem benutzerdefinierten Funktionsentwurf passt, lesen Sie den Abschnitt Berechnungsmodi, Befehle, selektive Neuberechnung und Datentabelle im Artikel Standard Excel-Neuberechnung.
Legen Sie den Berechnungsmodus für Ihr Add-In mit der Excel.CalculationMode-Enumeration basierend auf Ihrem Szenario fest. Beachten Sie, dass der automatic
Berechnungsmodus häufig eine Neuberechnung auslösen und die Effizienz Ihres Add-Ins verringern kann.
Einschränkungen für flüchtige Funktionen
Mit benutzerdefinierten Funktionen können Sie eigene veränderliche Funktionen erstellen, ähnlich wie die NOW
Funktionen und TODAY
in Excel. Während der Neuberechnung wertet Excel Zellen aus, die flüchtige Funktionen und alle ihre abhängigen Zellen enthalten. Daher kann die Verwendung vieler flüchtiger Funktionen die Neuberechnungszeit verlangsamen. Begrenzen Sie daher die Anzahl der flüchtigen Funktionen in Ihrem Add-In, um die Effizienz zu optimieren. Weitere Informationen finden Sie unter Flüchtige und nicht flüchtige Funktionen.
Entwerfen von Ansätzen zur Verbesserung der Effizienz
Add-Ins für benutzerdefinierte Funktionen ermöglichen flexible Designs, was bedeutet, dass verschiedene Add-In-Designs die gleiche Ausgabe für Ihre Endbenutzer erzeugen können.
Mehrere Ergebnisse
Sie können mehrere Ergebnisse aus Ihrer benutzerdefinierten Funktion mit mehreren Funktionen oder mit einer Funktion zurückgeben.
Verwenden Sie ein dynamisches Array, um mehrere Ergebnisse mit einer Funktion zurückzugeben. Dies ist in der Regel der empfohlene Ansatz, da dynamische Arrays nur eine einzelne Zelle aktualisieren müssen, um eine Neuberechnung für alle Ergebnisse auszulösen.
Beachten Sie, dass die Verwendung dynamischer Arrays weniger effizient wird, je größer Ihr Dataset ist, da jede Neuberechnung mehr Daten verarbeitet. Weitere Informationen zu dynamischen Arrays in benutzerdefinierten Funktionen finden Sie unter Zurückgeben mehrerer Ergebnisse aus Ihrer benutzerdefinierten Funktion.
Eine weitere Möglichkeit, mehrere Ergebnisse zurückzugeben, besteht darin, mehrere Funktionen zu verwenden und für jede Funktion ein einzelnes Ergebnis zurückzugeben. Ein Vorteil der Verwendung mehrerer Funktionen besteht darin, dass der Endbenutzer genau entscheiden kann, welche Formel er aktualisieren möchte, und dann nur eine Neuberechnung für diese Formel auslösen kann. Dies ist besonders hilfreich, wenn externe Dienste verwendet werden, die möglicherweise langsam reagieren.
Komplexe Datenstrukturen
Datentypen sind die beste Möglichkeit, komplexe Datenstrukturen in Add-Ins für benutzerdefinierte Funktionen zu verarbeiten. Datentypen unterstützen Excel-Fehler und formatierte Zahlen als Doubles. Datentypen ermöglichen auch das Entwerfen von Entitätswertkarten, wodurch Excel-Daten über das zweidimensionale Raster hinaus erweitert werden.
Verbessern der Benutzerfreundlichkeit von Aufrufen externer Dienste
Benutzerdefinierte Funktionen können Daten von Remotespeicherorten außerhalb der Arbeitsmappe abrufen, z. B. aus dem Web oder einem Server. Weitere Informationen zum Abrufen von Daten aus einem externen Dienst finden Sie unter Empfangen und Behandeln von Daten mit benutzerdefinierten Funktionen. Um die Effizienz beim Aufrufen externer Dienste zu erhalten, sollten Sie die Batchverarbeitung externer Anrufe in Betracht ziehen, die Roundtripdauer für jeden Anruf minimieren und Nachrichten in Ihr Add-In einschließen, um Verzögerungen an Den Endbenutzer zu kommunizieren.
Remoteaufrufe für benutzerdefinierte Batchfunktionen
Wenn Ihre benutzerdefinierten Funktionen einen Remotedienst aufrufen, verwenden Sie ein Batchverarbeitungsmuster, um die Anzahl der Netzwerkaufrufe an den Remotedienst zu reduzieren. Weitere Informationen finden Sie unter Batchverarbeitung benutzerdefinierter Funktionsaufrufe für einen Remotedienst.
Minimieren der Roundtripdauer
Remotedienstverbindungen können große Auswirkungen auf die Leistung benutzerdefinierter Funktionen haben. Verwenden Sie die folgenden Strategien, um diese Auswirkungen zu verringern:
- Serverintensive Verarbeitung sollte auf dem Remoteserver effizient verarbeitet werden, um die End-to-End-Latenz für eine benutzerdefinierte Funktion zu verkürzen. Lassen Sie z. B. paralleles Computing auf dem Server entwerfen. Wenn Ihr Dienst in Azure bereitgestellt wird, sollten Sie eine Optimierung mithilfe von Hochleistungscomputing in Azure in Betracht ziehen.
- Reduzieren Sie die Anzahl der Dienstaufrufe, indem Sie den Add-In-Flow optimieren. Senden Sie beispielsweise nur erforderliche Aufrufe an einen Remotedienst.
Verbessern der vom Benutzer wahrgenommenen Leistung durch Add-In-Benutzererfahrung (UX)
Während eine benutzerdefinierte Funktion einen externen Dienst aufruft, zeigt die Zelle mit der benutzerdefinierten Funktion den fehler #BUSY! an. Wenn eine Verzögerung beim Aufrufen eines externen Diensts unvermeidlich ist, sollten Sie nachrichten über den Add-In-Aufgabenbereich bereitstellen, um die Verzögerung für Ihre Endbenutzer zu erläutern. Diese Informationen helfen dabei, ihre Erwartungen zu verwalten. Die folgende Abbildung zeigt ein Beispiel.
Weitere Informationen zum Freigeben von Daten zwischen einer benutzerdefinierten Funktion und einem Aufgabenbereich finden Sie unter Freigeben von Daten und Ereignissen zwischen benutzerdefinierten Excel-Funktionen und dem Aufgabenbereich.
Um eine Meldung im Add-In-Aufgabenbereich anzuzeigen, die Benutzer über eine Verzögerung benachrichtigt, nehmen Sie die folgenden Änderungen vor, nachdem Sie sichergestellt haben, dass Ihr Add-In eine freigegebene Runtime verwendet.
Fügen Sietaskpane.js eine Funktion hinzu, die die Benachrichtigung aufruft.
export function showNotification(message){ const label = document.getElementById("item-subject"); label.innerHTML = message; }
Importieren Sie infunction.jsdie
showNotification
Funktion.export function showNotification(message){ const label = document.getElementById("item-subject"); label.innerHTML = message; }
Rufen Sie infunction.jsauf,
showNotification
wenn die Berechnung ausgeführt wird, die eine Verzögerung beinhalten kann.export async function longCalculation(param) { await Office.addin.showAsTaskpane(); showNotification("It may take some time as we prepare the data."); // Perform long operation // ... // ... return answer; }
Siehe auch
Office Add-ins