Могу ли я, чтобы onEdit работал только на одном листе? - PullRequest
0 голосов
/ 03 января 2019

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

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

Однако, когда я делаю какие-либо изменения на другом листе, он также вносит изменения в этот другой лист.Мне нужен этот скрипт для работы только на 1 листе, и я не могу понять, как.

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

Я также пытался заменить getActiveSheet на getSheetByName налист, который я хочу изменить, но он, похоже, не работает.

function onEdit() {

var activecell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sectors");


if(activecell.getColumn() == 3 && activecell.getRow() >1 ) {

activecell.offset(0, 1).clearContent().clearDataValidations(); 

    if(activecell.isBlank()){

 }
    var sector1 = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();  
    var sector1Index = sector1[0].indexOf(activecell.getValue()) +1 ;  


    var validationRange1 = datass.getRange(2, sector1Index, 25);   
    var validationRule1 =  SpreadsheetApp.newDataValidation().requireValueInRange(validationRange1); 

    activecell.offset(0, 1).setDataValidation(validationRule1)

    }    
}

, когда я делаю какие-либо изменения на другом листе, он также вносит изменения в этот другой лист.Мне нужен этот скрипт для работы только на 1 листе, и я не могу понять, как.

Спасибо

1 Ответ

0 голосов
/ 05 января 2019

Не уверен, поможет ли это в вашей ситуации, но я использовал комбинацию правил проверки данных и формул фильтров для достижения аналогичного результата в прошлом.Мое решение не использует App Script, но это может быть более простой способ решения вашей проблемы.В моем случае я использую три отдельных листа.

  • Sheet1 («ПРОСМОТР») содержит раскрывающиеся поля выбора и результаты,
  • Sheet2 («FILTER») - это данные отфильтрованного столбца, которые отвечают на записи из Sheet1, и
  • Лист3 («ДАННЫЕ») - это необработанные данные, которые вы пытаетесь отфильтровать.

По сути, вы используете входные данные из первого раскрывающегося списка на Листе1 для фильтрации данных на Листе2,и вы используете отфильтрованные данные на Sheet2, чтобы заполнить выбор для следующего выпадающего списка.

Я связал Лист, который демонстрирует эту концепцию, с образцами данных.

Обратите внимание на формулы фильтра в «FILTER»! A3 и «FILTER»! B3, они являются ключом к выполнению этой работы.Затем вы устанавливаете свои правила проверки данных в ячейках "VIEW! A2" и "VIEW! B2", чтобы выбрать из диапазонов "FILTER"! A2: A и "FILTER"! B2: B соответственно.

Я включаю статические значения с пометкой «ПОКАЗАТЬ ВСЕ» в верхней части каждого столбца фильтра, которые позволяют пользователю устанавливать этот столбец в качестве подстановочного знака.В зависимости от вашего варианта использования, это может или не может быть полезным.

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

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

https://docs.google.com/spreadsheets/d/1GpvSVRmXLkrtr2VFZmxyZXQjLWK8nrt3DvpNc6spLDg/edit?usp=sharing

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