Как заменить тире на ноль в диапазоне ячеек?

Недавно надо было воспользоваться Гугл таблицами. И выяснилось что моя проблема стара как мир — в определенном диапазоне ячеек необходимо заменить тире на ноль, иначе формулы перестают считать и выдают ошибку. Ячейки известны, весь лист обходить не надо. Нужно просто заменить тире на ноль в этих ячейках, но автоматически это не записывается. А каждый раз вручную ну такое себе удовольствие... В синтаксисе макросов в таблицах пока не силен. Может быть кто-то может поделиться кодом, как реализовать замену символов не на весь лист, а только на диапазон? Спасибо…


Ответы (1 шт):

Автор решения: Алексей Р

Заменяет - в выбранных диапазонах на 0

function hyphen2zero(){
    SpreadsheetApp.getSelection().getActiveRangeList().getRanges().forEach(range=>range.createTextFinder('-').replaceAllWith(0))
  }

Если поиск и замену производить на всем листе, а не в выбранных диапазонах, то код внутри функции можно сократить до

SpreadsheetApp.getActive().createTextFinder('-').replaceAllWith(0)

Первые 2 варианта меняют дефис на 0, даже если дефис находится внутри другого текста. Вариант ниже меняет только "одинокие" дефисы, кроме которых в ячейке другого текста нет.

function hyphen2zero(){
    SpreadsheetApp.getSelection().getActiveRangeList().getRanges().forEach(range=>
      range.setValues(range.getValues().map(row=>row.map(v=> v==='-'?0:v)))
    )
  }
→ Ссылка