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.
In diesem Beispiel werden Daten aus mehreren Excel-Tabellen in einer einzelnen Tabelle kombiniert, die alle Zeilen enthält. Es wird davon ausgegangen, dass alle verwendeten Tabellen dieselbe Struktur haben.
Es gibt zwei Varianten dieses Skripts:
- Das erste Skript kombiniert alle Tabellen in der Excel-Datei.
- Das zweite Skript ruft selektiv Tabellen innerhalb einer Gruppe von Arbeitsblättern ab.
Setup: Excel-Beispieldatei
Diese Arbeitsmappe enthält die Daten, Objekte und Formatierungen, die vom Skript erwartet werden.
Beispielcode: Kombinieren von Daten aus mehreren Excel-Tabellen in einer einzelnen Tabelle
Fügen Sie der Beispielarbeitsmappe das folgende Skript hinzu, und probieren Sie das Beispiel selbst aus!
function main(workbook: ExcelScript.Workbook) {
// Delete the "Combined" worksheet, if it's present.
workbook.getWorksheet('Combined')?.delete();
// Create a new worksheet named "Combined" for the combined table.
const newSheet = workbook.addWorksheet('Combined');
// Get the header values for the first table in the workbook.
// This also saves the table list before we add the new, combined table.
const tables = workbook.getTables();
const headerValues = tables[0].getHeaderRowRange().getTexts();
console.log(headerValues);
// Copy the headers on a new worksheet to an equal-sized range.
const targetRange = newSheet.getRange('A1').getResizedRange(headerValues.length-1, headerValues[0].length-1);
targetRange.setValues(headerValues);
// Add the data from each table in the workbook to the new table.
const combinedTable = newSheet.addTable(targetRange.getAddress(), true);
for (let table of tables) {
let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts();
let rowCount = table.getRowCount();
// If the table is not empty, add its rows to the combined table.
if (rowCount > 0) {
combinedTable.addRows(-1, dataValues);
}
}
}
Beispielcode: Kombinieren von Daten aus mehreren Excel-Tabellen in ausgewählten Arbeitsblättern in einer einzelnen Tabelle
Laden Sie die Beispieldatei tables-select-copy.xlsx herunter, und verwenden Sie sie mit dem folgenden Skript, um sie selbst auszuprobieren!
function main(workbook: ExcelScript.Workbook) {
// Set the worksheet names to get tables from.
const sheetNames = ['Sheet1', 'Sheet2', 'Sheet3'];
// Delete the "Combined" worksheet, if it's present.
workbook.getWorksheet('Combined')?.delete();
// Create a new worksheet named "Combined" for the combined table.
const newSheet = workbook.addWorksheet('Combined');
// Create a new table with the same headers as the other tables.
const headerValues = workbook.getWorksheet(sheetNames[0]).getTables()[0].getHeaderRowRange().getTexts();
const targetRange = newSheet.getRange('A1').getResizedRange(headerValues.length-1, headerValues[0].length-1);
targetRange.setValues(headerValues);
const combinedTable = newSheet.addTable(targetRange.getAddress(), true);
// Go through each listed worksheet and get their tables.
sheetNames.forEach((sheet) => {
const tables = workbook.getWorksheet(sheet).getTables();
for (let table of tables) {
// Get the rows from the tables.
let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts();
let rowCount = table.getRowCount();
// If there's data in the table, add it to the combined table.
if (rowCount > 0) {
combinedTable.addRows(-1, dataValues);
}
}
});
}
Schulungsvideo: Kombinieren von Daten aus mehreren Excel-Tabellen in einer einzelnen Tabelle
Sehen Sie sich sudhi Ramamurthy an, wie Sie dieses Beispiel auf YouTube durchgehen.
Office Scripts