Я веду список вещей в гугл таблице, в ней я записываю каждую позицию одежды под индивидуальным номером.
Например: Рубашка - Артикул - Цена.
Одежда записана в столбик, так и артикулы прописываются в столбик:
Рубашка - артикул: 1 - 700р
Брюки - артикул: 2 - 900р
ну и тд.
Я хочу сделать в гугл таблицах такую ячейку, в которой бы показывался номер артикула которого нет во всём столбике. Формула должна проверят весь столбик на наличие цифр по порядку возрастания. Начинает проверят цифру 1, допустим она есть, даже не важно в какой именно строчке, формула начинает проверять дальше, цифра 2, тоже есть, цифра 3 тоже, и тд. Когда формула дойдёт до цифры в порядке возрастания которой нет в столбике, в этой ячейке с формулой должна отобразится эта цифра.
Иногда будут удалятся из списка какие то позиции вещей, это значит, что номер (артикул) под которым эта вещь была, освободится, и вот тогда ячейка с формулой должна отобразить свободное число в порядке возрастания, которое ещё не занято.
Пример:
1
2
23
568
453
23
6
Если я правильно понял Ваш запрос, то можете попробовать сделать так:
Вам нужно прописать формулу в Google Apps Script примерно вот такую, которая в качестве параметра будет принимать диапазон ячеек, в котором хранятся нужные для поиска номера (артикулы). Данная функция ищет первый по возрастанию пропущенный номер в диапазоне и выводит в отдельную ячейку
/**
* Возвращает первый по возрастанию пропущенный номер
* @param {String} searchingRange
*/
function getMissingNumber(searchingRange) {
const values = searchingRange.map(item => Number(item))
for (let i = 1; i < values.length; i += 1) {
let currentNum = values[i]
let previousNum = values[i - 1]
if (currentNum - previousNum > 1 ) {
return previousNum + 1
}
}
return "Все номера на месте"
}
Огромное спасибо за отклик и помощь)
Я всё сделал, и заметил один нюанс, если цифры идут не по порядку, то ячейка работает не так как надо. Она пишет самое первое число которое не встретила в ходе проверки. В примере ячейка выдаёт цифру 3, хотя в этом столбике цифра 3 уже есть. По идее ячейка должна выдать цифру 8
Точно, почему то подумал, что у Вас все будет отсортировано
Тогда перепишите формулу вот так (тут добавилось sort((a, b) => a - b)
/**
* Возвращает первый по возрастанию пропущенный номер
* @param {String} searchingRange
*/
function getMissingNumber(searchingRange) {
const values = searchingRange.map(item => Number(item)).sort((a, b) => a - b)
for (let i = 1; i < values.length; i += 1) {
let currentNum = values[i]
let previousNum = values[i - 1]
if (currentNum - previousNum > 1 ) {
return previousNum + 1
}
}
return "Все номера на месте"
}