Exemples de table
Ces exemples présentent des interactions courantes avec les tableaux Excel.
Créer une table triée
Cet exemple crée une table à partir de la plage utilisée de la feuille de calcul actuelle, puis la trie en fonction de la première colonne.
function main(workbook: ExcelScript.Workbook) {
// Get the current worksheet.
const selectedSheet = workbook.getActiveWorksheet();
// Create a table with the used cells.
const usedRange = selectedSheet.getUsedRange();
const newTable = selectedSheet.addTable(usedRange, true);
// Sort the table using the first column.
newTable.getSort().apply([{ key: 0, ascending: true }]);
}
Filtrer une table
Cet exemple filtre une table existante à l’aide des valeurs de l’une des colonnes.
function main(workbook: ExcelScript.Workbook) {
// Get the table in the workbook named "StationTable".
const table = workbook.getTable("StationTable");
// Get the "Station" table column for the filter.
const stationColumn = table.getColumnByName("Station");
// Apply a filter to the table that will only show rows
// with a value of "Station-1" in the "Station" column.
stationColumn.getFilter().applyValuesFilter(["Station-1"]);
}
Filtrer une valeur
L’exemple précédent filtre une table en fonction d’une liste de valeurs incluses. Pour exclure une valeur particulière de la table, vous devez fournir la liste de toutes les autres valeurs de la colonne. Cet exemple utilise une fonction columnToSet
pour convertir une colonne en un ensemble de valeurs uniques. La valeur exclue (« Station-1 ») est alors supprimée pour ce jeu.
function main(workbook: ExcelScript.Workbook) {
// Get the table in the workbook named "StationTable".
const table = workbook.getTable("StationTable");
// Get the "Station" table column for the filter.
const stationColumn = table.getColumnByName("Station");
// Get a list of unique values in the station column.
const stationSet = columnToSet(stationColumn);
// Apply a filter to the table that will only show rows
// that don't have a value of "Station-1" in the "Station" column.
stationColumn.getFilter().applyValuesFilter(stationSet.filter((value) => {
return value !== "Station-1";
}));
}
/**
* Convert a column into a set so it only contains unique values.
*/
function columnToSet(column: ExcelScript.TableColumn): string[] {
const range = column.getRangeBetweenHeaderAndTotal().getValues() as string[][];
const columnSet: string[] = [];
range.forEach((value) => {
if (!columnSet.includes(value[0])) {
columnSet.push(value[0]);
}
});
return columnSet;
}
Supprimer les filtres de la colonne du tableau
Cet exemple supprime les filtres d’une colonne de table, en fonction de l’emplacement de la cellule active. Le script détecte si la cellule fait partie d’un tableau, détermine la colonne de table et efface les filtres qui y sont appliqués.
Téléchargez table-with-filter.xlsx pour un classeur prêt à l’emploi. Ajoutez le script suivant pour essayer l’exemple vous-même !
function main(workbook: ExcelScript.Workbook) {
// Get the active cell.
const cell = workbook.getActiveCell();
// Get the tables associated with that cell.
// Since tables can't overlap, this will be one table at most.
const currentTable = cell.getTables()[0];
// If there's no table on the selection, end the script.
if (!currentTable) {
console.log("The selection is not in a table.");
return;
}
// Get the table header above the current cell by referencing its column.
const entireColumn = cell.getEntireColumn();
const intersect = entireColumn.getIntersection(currentTable.getRange());
const headerCellValue = intersect.getCell(0, 0).getValue() as string;
// Get the TableColumn object matching that header.
const tableColumn = currentTable.getColumnByName(headerCellValue);
// Clear the filters on that table column.
tableColumn.getFilter().clear();
}
Avant d’effacer le filtre de colonne (notez la cellule active)
Après l’effacement du filtre de colonne
Conseil
Si vous souhaitez en savoir plus sur la façon d’enregistrer le filtre avant de l’effacer (et de le réappliquer ultérieurement), consultez Déplacer des lignes entre des tables en enregistrant des filtres, un exemple plus avancé.
Référencer dynamiquement des valeurs de table
Ce script utilise la syntaxe « @COLUMN_NAME » pour définir des formules dans une colonne de table. Les noms de colonnes de la table peuvent être modifiés sans modifier ce script.
function main(workbook: ExcelScript.Workbook) {
// Get the current worksheet.
const table = workbook.getTable("Profits");
// Get the column names for columns 2 and 3.
// Note that these are 1-based indices.
const nameOfColumn2 = table.getColumn(2).getName();
const nameOfColumn3 = table.getColumn(3).getName();
// Set the formula of the fourth column to be the product of the values found
// in that row's second and third columns.
const combinedColumn = table.getColumn(4).getRangeBetweenHeaderAndTotal();
combinedColumn.setFormula(`=[@[${nameOfColumn2}]]*[@[${nameOfColumn3}]]`);
}
Avant le script
Month | Price | Unités vendues | Total |
---|---|---|---|
Jan | 45 | 5 | |
Fév | 45 | 3 | |
Mars | 45 | 6 |
Après le script
Month | Price | Unités vendues | Total |
---|---|---|---|
Jan | 45 | 5 | 225 |
Fév | 45 | 3 | 135 |
Mars | 45 | 6 | 270 |