Перечисление строк в таблице Google

#google-sheets #spreadsheet #uniqueidentifier #enumerate

Вопрос:

Мне нужно перечислить строки в таблице Google, чтобы использовать их в качестве простых уникальных идентификаторов. Когда я добавляю новую строку, я хочу, чтобы ей был присвоен следующий номер, который еще не использовался. Проблема в том, что мне нужно иметь возможность удалить строку и не изменять идентификаторы. Поэтому, если бы у меня были перечислены строки с 1 по 5, и я удалил строку 3, я бы ожидал, что это:

 DATA   ID
A      1
B      2
D      4
E      5
 

Я могу легко создать функцию, которая перечисляет числа для каждой строки, но я не знаю, как сделать это число неизменяемым после создания в первый раз. Кроме того, если бы я удалил последнюю строку (идентификатор 5 выше), а затем добавил другую строку, я не знаю, как гарантировать, что идентификатор новой строки будет 6 вместо новых 5. Спасибо.

Комментарии:

1. возможно, это потребуется сделать с помощью сценариев

2. определенно нужен сценарий. когда вы говорите «добавить еще одну строку», что это значит? Вставить строку? нажмите маленькую кнопку «добавить строки» внизу? Просто поместите некоторые данные в определенный столбец? Это может означать многое.

3. @mattking, под «добавить еще одну строку» я подразумевал добавление данных в следующую пустую строку внизу.

Ответ №1:

В моем случае все, что я хочу, — это убедиться, что у меня есть уникальные числа, которые не будут повторяться, даже если строки или данные будут добавлены или вычтены. Поэтому я просто использовал эту формулу. В моем случае у меня было всего несколько сотен строк, но вы могли бы увеличить «1000» до любой степени десяти, которая будет больше вашего общего количества строк:

 =int((now() - DATE(2021, 7, 19)) * 86400) * 1000   row()
 

Как отметил @MattKing, это приведет к пересчету, если вы сделаете что-то вроде вставки столбца перед этой функцией или даже просто снова откроете электронную таблицу. Таким образом, вы можете настроить ячейку так, чтобы она была самореферентной. На самом деле это не рекурсивно, но вам нужно включить «Итеративный расчет», чтобы это сработало. Идти к:

Файл -> Настройки таблицы ->> Расчет ->>> установите для параметра «Итеративный расчет» значение «Включено». Затем, чтобы быть в безопасности, вы можете установить «Максимальное количество итераций» равным 1, так как на самом деле это не рекурсивно. Затем используйте эту формулу ячейки, но измените оба вхождения ячейки, на которую ссылается функция VALUE () (AL11 в примере ниже), на любую ячейку, в которой она находится:

 =IF(VALUE(AL11) > 0, AL11, INT((NOW() - DATE(2021, 7, 19)) * 86400) * 1000   ROW())
 

Комментарии:

1. Это скоро изменится. Сейчас () — это «живая» метка времени