Я попытался создать сценарий Office, который перебирает каждую строку и находит строку с текстом «Всего» в столбце A, а затем удаляет эту строку. Мне не удалось заставить его работать, кто-нибудь знает, как это изменить?
function main(workbook: ExcelScript.Workbook) {
//getting the used range in the worksheet
let usedRange = workbook.getActiveWorksheet().getUsedRange();
//getting the row count of the used range
let lastRow = usedRange.getRowCount();
usedRange = workbook.getActiveWorksheet().getRangeByIndexes(0, 0, (usedRange.getRowIndex() + lastRow), 19)
//getting the values of the range
let values = usedRange.getValues();
//getting the row count of the range
let rowCount = usedRange.getRowCount();
//for every row starting at the last row, checking if the cell in column 'A' contains text "Total". If it is, then delete the entire row.
for (let i = rowCount - 1; i >= 0; i--) {
if (values[i][18] == "Total") {
usedRange.getCell(i, 1).getEntireRow().delete(ExcelScript.DeleteShiftDirection.up)
}
}
}
Пожалуйста, покажите свой сценарий и весь соответствующий код (минимальный воспроизводимый пример — stackoverflow.com/help/минимально-воспроизводимый-пример) здесь, чтобы мы лучше знали, с чем имеем дело.
`@user1599011 Я загрузил свой код, но он не включает удаление строки, содержащей «Всего» в столбце A.
Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Как сейчас написано, трудно точно сказать, о чем вы спрашиваете.
Должно быть понятно, о чем я спрашиваю. Я хочу удалить строку первой ячейки с текстом «Всего» в столбце А.
В вашем коде нет ссылки на «Всего»; пожалуйста, включите вашу попытку достичь этой цели.
Я не могу включить его, так как я не знаю, как его написать, я надеялся, что кто-то еще знает, как решить эту проблему.
@Rosenz5 - I was hoping someone else would know how to tackle the problem
мы здесь не для этого, мы поможем вам решить проблемы в существующем коде, для которых вы не можете найти решение, мы не будем использовать наше свободное время для написания кода для кого-то еще, это работа, и люди заслуживают того, чтобы им платили за это
@user1599011 user1599011, теперь я отредактировал исходный вопрос с правильным кодом, который я пытался создать. Что я делаю не так в коде? Заранее спасибо.
@CanO'Spam Я отредактировал исходный вопрос с правильным кодом, который я пытался создать. Что я делаю не так в коде? Заранее спасибо.
Каков результат, когда вы запускаете свой код как есть? Чем это отличается от ожидаемого вами результата?
Я думаю, вы хотите опубликовать свой вопрос на доске Office-Scripts. Я бы разместил ваш ответ там или добавил его в теги. stackoverflow.com/questions/tagged/office-скрипты
Я думаю, что ваша проблема в этой строке:
if (values[i][18] == "Total") {
Первый массив [i]
принимает аргумент, соответствующий строке на листе Excel. Второй массив [18]
принимает аргумент, соответствующий столбцу на листе Excel. Поскольку массивы основаны на нуле, первый столбец, столбец A, будет соответствовать нулевому индексу. Так что вам просто нужно обновить значение с 18 до 0. И он должен выполнить эту проверку в столбце A. Таким образом, обновленный код будет выглядеть так:
if (values[i][0] == "Total") {