#google-sheets
#google-sheets
Вопрос:
Я новичок в использовании таблиц Google, поэтому, пожалуйста, потерпите меня.
Я составляю список ожидания для клиентов. У меня есть представление фильтра, работающее для фильтрации, даты первого контакта и доступности по дням и времени. Я пытаюсь выяснить, как сохранить столбец статическим, чтобы это был просто список чисел 1,2,3 и т. Д
У меня есть диапазон фильтра, начинающийся с c2, чтобы исключить столбцы a и b, но когда я применяю фильтр, числа перемещаются вместе с информацией о клиентах, а не остаются статичными. Я уверен, что есть лучший способ сделать это с помощью формул, но я пытаюсь создать таблицу, на которой я могу легко просматривать информацию по их доступности по расписанию. Любая помощь будет принята с благодарностью. Спасибо
https://docs.google.com/spreadsheets/d/1rAw8kYibGWX9_rSIF6ZKvWmQoNUGtT7ifRW-VXBISw4/edit?usp=sharing
Комментарии:
1. Нам понадобится немного больше информации о том, что вы пытаетесь сделать. Было бы полезно привести пример таблицы. Для чего вы пытаетесь отфильтровать? Соответствует ли график доступности доступности клиентов? И какова цель статического столбца чисел?
2. Я не уверен, как опубликовать изображение. Да, это доступность для моих клиентов. Статический номер предназначен только для того, чтобы я мог сказать им: «Для записи на прием в четверг вы «#» в очереди». Глупо, но я обычно знаю, сколько времени требуется для завершения работы каждого клиента, поэтому, зная, что они занимают 6-е место в очереди, они могут ожидать ожидания около 6 месяцев. Каждый клиент находится в строке, а каждый день — в столбце. Я использую представления фильтра с условием, есть ли текст или нет текста в строке дней. ценю любую помощь. Спасибо!
3. Вам определенно было бы легче помочь, если бы вы могли поделиться образцом листа, как описано здесь: support.google.com/docs/thread/3808684?hl=en . Даже только заголовки столбцов и несколько типичных строк данных без чувствительных значений (например, фиктивных имен) прояснили бы ситуацию. И уточните, какие столбцы вы хотите отфильтровать и как. Но, как вы говорите, представление фильтра обычно не должно сортировать исключенные вами столбцы.
4. Большое вам спасибо. Я отредактировал первое сообщение, чтобы включить ссылку.
5. Что именно вы хотите сделать? Создать другое представление фильтра для каждого дня, сохраняя столбец статическим?
Ответ №1:
Я удалил свой предыдущий ответ, который неправильно понял вашу проблему с фильтрацией. Но в качестве альтернативы ответу @ JLMosher с использованием скрипта, я считаю, что это решение на основе формулы также отвечает на ваш вопрос. Формула выглядит следующим образом:
=IF(ROW()=2,1,
IF(SUBTOTAL(109,INDIRECT("A"amp;ROW()))>0,
MAX(INDIRECT("B2:B"amp;ROW()-1)) 1,0))
В основном он просматривает любой столбец, содержащий только числовые значения. Затем он принимает промежуточное итоговое значение только для этой строки. Поскольку скрытые строки имеют промежуточный итог, равный нулю (если используется код промежуточного итога 109), любая строка, которая возвращает промежуточный итог, равный нулю, мы не увеличиваем наше количество последовательных номеров. Каждая нескрытая строка добавляет 1 к наибольшему количеству (макс.) из приведенных выше строк. (Я попытался просто добавить 1 к значению из строки выше, но если это скрытая строка, ее значение будет равно 0, так что это не сработало)
Я добавил вкладку Help-GK в ваш образец таблицы. (РЕДАКТИРОВАТЬ: поскольку примерный лист OP был удален, вот мой примерный лист.)
По сути, значения в столбце B обновляются, чтобы всегда показывать последовательный ранг чисел. Эти числа игнорируют любые скрытые строки. В моем примере я сгруппировал строки 4: 6 и строки 13: 16, а затем «скрыл» эти группы, нажав на знак [-] в самом крайнем левом углу. Чтобы снова сделать их видимыми, нажмите на [ ]. Обратите внимание, что при этом изменяется позиция в номерах очередей.
Обратите внимание, что эти значения также игнорируют любую сортировку, что может быть или не быть плохой вещью. При сортировке с помощью стрелок раскрывающегося списка фильтра данных в заголовке каждого столбца по имени (столбец C) или дате (столбец D) порядок строк изменится, но позиция в номерах очередей останется прежней. относительное положение.
Я не смог создать это как формулу массива, поэтому вам нужно скопировать формулу в B2.
Наконец, я использую ваш столбец A в качестве столбца для проверки промежуточного итога, но это может быть любой столбец со всеми числовыми значениями, включая столбец даты, я полагаю.
Дайте мне знать, если это полезно для вас, или если я снова неправильно понял.
Ответ №2:
Я не верю, что вы можете делать то, что пытаетесь сделать с фильтрами. Любой фильтр, который отфильтровывает строки, не будет игнорировать столбцы, даже если они находятся за пределами вашего диапазона фильтрации. Вы можете сортировать без проблем, но не отфильтровывать строки (например, когда вы отфильтровываете пробелы по дням недели).
Я написал скрипт, который будет делать то, что, как я полагаю, вы хотите сделать. Вот ссылка на измененный пример таблицы (вам нужно будет сделать его копию для редактирования):
https://docs.google.com/spreadsheets/d/12Ryqcdr0KGyUT1X1Ty2TD4I3q1y2XiXubZVwz2rV8Ec/edit?usp=sharing
Я добавил строку вверху для флажков. И написал следующий код:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
function onEdit(e) {
var range = e.range;
var value = e.value;
var column = range.getColumn();
var row = range.getRow();
var dataArray = sheet.getDataRange().getValues();
sheet.showRows(1,sheet.getMaxRows());
if(row == 1 amp;amp; value == 'TRUE') {
sheet.getRange('C3:J').sort(column);
var n = 1;
for(var i = 2; i < sheet.getMaxRows(); i ){
if(dataArray[i][column] == '') sheet.hideRows(i 1, 1);
else {
sheet.getRange(i 1,1).setValue(n);
n =1;
}
}
}
else if(row == 1 amp;amp; value == 'FALSE'){
var n = 1;
for(var i = 2; i < sheet.getMaxRows(); i ){
sheet.getRange(i 1,1).setValue(n);
n =1;
}
}
}
Вы можете добавить строку в начало своего листа, как в моем примере листа, добавить флажки, а затем вставить этот код в редактор сценариев (Инструменты> Редактор сценариев). Вам нужно будет назвать скрипт, а затем дать коду разрешение на запуск.
Скрипт будет просматривать ячейку, когда вы нажимаете на флажок, сортируете лист по этому столбцу, скрываете все строки с пробелами в этом столбце, перенумеровываете столбец A. Когда вы снимаете флажок, он отображает все строки и перенумеровывает столбец A.
Кроме того, вы можете просто сделать копию и использовать лист, на который дана ссылка выше, если это вам подходит.
Комментарии:
1. Я забыл часть кода, которая скрывает строки в первый раз. Я отредактировал его. Приведенный выше код также должен скрывать строки с пробелами в них.
2. Я снова отредактировал код, чтобы отобразить строки и перенумеровать столбец A, когда флажок снят.
3. Где вы научились писать подобные скрипты для таблиц?
4. Здесь вы можете многое узнать о переполнении стека. Кроме того, это JavaScript, так почему учебники по этому поводу. w3schools.com это хорошее место для начала. При поиске ответов в Google используйте ключевые слова, такие как скрипты приложений Google Sheets, JavaScript и т. Д. YouTube сделал учебные пособия.
5. Если это решение сработало для вас, пожалуйста, проголосуйте и примите это как решение, чтобы другие могли его найти. Удачи!