Как я могу заставить Google Sheets обрабатывать мои отправленные строки как простой текст и сохранять лидирующие нули?

8

У меня есть Google Forms, где пользователи вводят информацию, некоторые из которых содержат начальные нули (например, почтовые индексы, идентификационные номера).

Однако, когда эти данные сохраняются в Google Sheet, они не обрабатываются как обычный текст и обнуляются. Поля формы являются текстовыми полями без проверки.

Я попытался отформатировать диапазон ячеек, содержащих эти значения, как обычный текст, но кажется, что Sheets не устанавливает форматирование как простой текст, если в ячейке уже нет текста. Поэтому я могу отформатировать столбец как обычный текст, отправить форму, и начальный ноль все равно будет удален.

Я попытался написать сценарий приложений, чтобы справиться с этим, но у меня нет хорошего способа развернуть его для пользователей, которым это понадобится.

Как я могу обойти это без необходимости инструктировать пользователей, чтобы добавить одну цитату к своей записи формы? Это такая маленькая вещь, но я не могу найти хорошее простое решение того, что, по-видимому, должно быть обычной проблемой. Если я не могу заставить это работать, мне, возможно, придется вообще отказаться от Google Forms / Sheets.

Рез
источник
1
Добро пожаловать в веб-приложения ! Хороший вопрос, я немного отредактировал его, чтобы было легче читать. Вы видели, как я могу заставить Документы Google прекратить форматировать ответ в виде даты?
Видар С. Рамдал
1
Да, и, как отмечено выше, я попробовал то, что предложил «принятый ответ», но это для более старой версии листов, и это больше не работает.
Res

Ответы:

3

Часть моего ответа будет: это известная ошибка (вновь полученные представления формы не учитывают формат столбцов, в которые они попадают, как это было в старой версии листов).

В зависимости от того, что вы делаете с данными впоследствии, другой вариант - воспроизвести отправленные формы на другом листе в правильном формате. Например, если столбец E содержит почтовые индексы, которые должны быть длиной 5 цифр и включать начальные нули (если требуется), то вы можете использовать:

=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))

на другом листе.

Вы должны были бы перенести и все остальные ваши колонки. Не становясь слишком сложным, это может быть разумно легко достигнуто в новой версии Sheets, и отформатируйте столбцы по желанию, например (например):

=QUERY('Form Responses'!A:G,"select * format E '00000'",1)

AdamL
источник
2

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

Для решения этой проблемы у меня есть:

  1. Установите тип вопроса «Текст»
  2. В разделе «Дополнительные настройки» я выбрал «Регулярное выражение»
  3. В следующем выпадающем списке я выбрал «Матчи»
  4. В текстовое поле я ввел ^\[\d+\]$

Это регулярное выражение заставляет пользователя вводить открытую квадратную скобку в начале своего ответа, за которой должна следовать хотя бы одна цифра, и она должна заканчиваться закрытой квадратной скобкой. Например, [0021314] будет допустимой записью. Обратите внимание, что это позволит только цифры, если вы просто хотите использовать квадратные скобки, вы можете использовать ^\[.+\]$вместо этого.

На листе это будет показано как [0021314], поэтому вам нужно будет убрать квадратные скобки, что можно сделать с помощью формулы, например, =mid(A1,2,len(A1)-2)где A1 - это ячейка, содержащая [0021314]. Автоматическое заполнение и форматирование ячеек в виде простого текста должны сделать все остальное, что вам нужно.

Вы также можете изменить регулярное выражение, чтобы заставить пользователей вводить одинарные кавычки в начале их ввода.

Роб С
источник
0

Долгосрочный способ сказать «я не знаю, как» в сочетании с «кажется, может быть невозможен» (но это настоящий позор):

Лучшее (но слабое), которым я могу управлять, - это ожидать ввода (и, следовательно, вывода) одной цифры за раз, используя шкалу от 0 до 9 для каждой цифры.

pnuts
источник
0

Предлагаемые здесь и другие решения решений работают только для чисел с фиксированным числом цифр. Как 5 для почтового индекса, рассмотренного выше.

Я должен держать ведущий ноль бельгийских телефонных номеров.
Бельгийские наземные линии имеют структуру 025382172 (9 цифр), в
то время как мобильные телефоны имеют структуру 0475123456 (10 цифр)

Я думал, что нашел обходной путь, дублирующий данные в новой вкладке. Для этого я использую два отдельных массива для пакетной загрузки групп столбцов.

Первый массив копирует все столбцы до столбца G телефонного номера, не включенного. =ARRAYFORMULA('Form Responses'!A2:F302)
Второй массив копирует все столбцы после столбца номера телефона G до последнего.=ARRAYFORMULA('Form Responses'!H2:P302)

В столбце номера телефона у меня есть простая формула, чтобы добавить ноль перед скопированным значением: =("0"&'Form Responses'!G2)

... к сожалению, он работает только в статическом режиме.
В динамическом режиме, когда из Google Form появляется новая строка, формула в столбце номера телефона G испорчена, даже если массивы не должны влиять на этот столбец.

Фактически формула =("0"&'Form Responses'!G2)переходит к следующей пустой строке, =("0"&'Form Responses'!G3)оставляя ячейку с разочаровывающим значением 0.

Я продолжу свои исследования, вернувшись к одному массиву для всех столбцов в одном блоке, добавив столбец с повторяющимся номером телефона справа за пределами зоны массива и просто введя следующую формулу: =("0"&G3)... интересно, будет ли это работать ... Если это так, я замаскирую столбец «родного» номера телефона и покажу только обработанный (к сожалению, не в нужном месте на странице).

Пьер Беккварт
источник
Описанное решение работает, при условии, что столбец преобразованного номера телефона НЕ зажат между двумя массивами. Это должно быть за пределами области, где данные добавляются автоматически. Либо справа, либо слева. УРА! Amicalement de Belgique. Пьер
Пьер Беккварт
0

Это старый пост, но я бы порекомендовал следующее ...

На вкладке результатов A1:

=QUERY('Form Responses'!A:F)

В G1:

=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))

В H1:

=QUERY('Form Responses'!H:P)

Аналогичный подход может быть добавлен для модификации данных столбцов, которые требуют модификации.

Эрик Тайлер
источник
0

Я решил проблему с почтовым индексом, которая начинается с «0» следующим образом ... Выделите столбец, перейдите на вкладку «Формат», нажмите «Число», «Другие форматы», а затем «Пользовательские форматы чисел», поскольку у меня только 5 почтовых индексов. цифры я набрал в "00000" и нажал применить. и это сработало!

Пэм Вьено
источник