В D2:D7 получите то, что скрипт запишет в row[3]: цена × количество, а при количестве от 10 — со скидкой 10%.
Теория урока
В Office Scripts всё начинается с объекта книги workbook, который передаётся в main. Цепочка вызовов «книга → лист → диапазон»:
workbook.getWorksheet("Лист1")— лист по имени,workbook.getActiveWorksheet()— активный лист;sheet.getRange("A2:D7")— диапазон,sheet.getUsedRange()— вся заполненная область;getValue()/setValue(x)— одна ячейка;getValues()/setValues(массив)— двумерный массив строк;setFormula("=SUM(D2:D7)")— формула (по-английски, с запятыми);getFormat().getFont().setBold(true),getFormat().getFill().setColor("yellow")— оформление;range.getCell(0, 0)— ячейка внутри диапазона, отсчёт с нуля.
Главное отличие от VBA: индексы массивов в TypeScript начинаются с 0. В строке row из A2:D7
row[0] — это A, row[3] — D. И ещё: setValues требует массив ровно того же размера, что диапазон.
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getWorksheet("Лист1");
const range = sheet.getRange("A2:D7");
const values = range.getValues(); // 6 строк × 4 столбца
for (const row of values) {
const price = row[1] as number;
const qty = row[2] as number;
row[3] = qty >= 10 ? price * qty * 0.9 : price * qty; // скидка 10% от 10 штук
}
range.setValues(values); // одна запись на лист вместо шести
sheet.getRange("D8").setFormula("=SUM(D2:D7)");
sheet.getRange("A8:D8").getFormat().getFont().setBold(true);
}Запись условие ? да : нет — короткий «если» в TypeScript. as number сообщает языку, что в ячейке число.
Получите формулами то, что запишет скрипт.
Тренажёр не выполняет макросы и скрипты. Код из урока запускайте в настольном Excel (VBA) или в Excel для Интернета (Office Scripts). Здесь вы учитесь читать код и проверяете себя формулами и тестом.
Проверьте себя
Enter — ввести · F2 — изменить · F4 — $ в ссылке · Ctrl+C/Ctrl+V — копировать · Ctrl+Z — отменить
Esc или F6 — выйти из таблицы к кнопке «Проверить» · Shift+Tab в первой ячейке — к началу страницы