Использование содержимого ячейки для изменения выпадающего списка меню - PullRequest
0 голосов
/ 13 апреля 2019

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

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

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

Если кто-нибудь знает, как я могу это сделать либо с помощью редактора сценариев, либо непосредственно при проверке данных, это было бы здорово!

1 Ответ

1 голос
/ 14 апреля 2019

Континент и Страна выпадающих списков

Я прошу прощения, но это немного запутано.Давайте начнем с того, где я получил данные.Это веб-сайт: https://datahub.io/JohnSnowLabs/country-and-continent-codes-list

Я просто скопировал и вставил его в лист с именем «C & C».Я отсортировал его по континентам, а затем по странам, и я зависел от того, чтобы он оставался таким, поскольку он уменьшает количество усилий, чтобы получить страны.

А вот код сценария Google:

function onEdit(e) {
  var dlm=" - ";
  var msg="Start" + dlm;
  var sh=e.range.getSheet();
  if(sh.getName()!='DropDown')return;
  if(e.range.getA1Notation()=='A2' && e.value) {
    var dsh=e.source.getSheetByName('C&C');
    var drg=dsh.getRange(1,1,dsh.getLastRow(),1);
    var dvA=drg.getValues();
    var cA=[];
    var cStart=0;
    var cEnd=0;
    for(var i=0;i<dvA.length;i++) {
      if(!cEnd && !cStart && dvA[i][0]==e.value) {
        cStart=i+1;
        msg+="cStart: " + cStart + dlm;
        //e.source.toast(msg);
      }
      if(!cEnd && cStart && dvA[i][0]!=e.value || i==dvA.length-1) {
        cEnd=i+1;
        msg+="cEnd: " + cEnd + dlm;
        //e.source.toast(msg);
        break;
      }
    }
    var crg=dsh.getRange(cStart,3,cEnd-cStart+1,1);
    var cvA=crg.getValues();
    e.source.getRangeByName('Countries').clearContent();
    sh.getRange('B2').clearContent();
    e.source.getSheetByName('NamedRanges').getRange(2,2,cvA.length,1).setValues(cvA);
  }
  msg+="Exit" + dlm;
  e.source.toast(msg);
}

Я оставил там тосты отладки на случай, если вы захотите их.

Вот как выглядит страница C & C:

enter image description here

И вот страница, где я разместил NamedRanges.Я назвал эту страницу NamedRanges:

enter image description here

И вот страница с двумя выпадающими списками:

enter image description here

Отображается выбор континента в Южной Америке.

Вот настройки NamedRanges:

enter image description here

И вотНастройки проверки данных:

enter image description here

enter image description here

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