Заполнить ячейку на основе другого значения листа - PullRequest
1 голос
/ 17 октября 2019

У меня есть таблицы на листах Google с 2 листами, Sheet1 и Sheet2. На Листе 1 у меня есть 2 столбца (ID1 и Result1), в которых заполнены. На Листе 2 у меня есть 2 столбца (ID2 и Result2), в которых заполнен ID2, а Result2 заполнен словом «пусто».

Лист 1 в моей реальной электронной таблице получает данные из Google Forms,поэтому каждый раз, когда Sheet1 получает значение для ID1 и Result1, он должен искать значение ID1 в ID2 для Sheet2 и при поиске вставить значение Result1 в Result2 в строку, в которой он был найден.

Result2 будет обновляться только тогдакогда на листе 1 появляются новые данные, отправленные из формы.

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

Ответы [ 3 ]

1 голос
/ 17 октября 2019

сделать это просто так:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, Sheet1!A:B, 2, 0)))

0


0


или сбрасывается флажком:

0

1 голос
/ 17 октября 2019

После просмотра текущих ответов и комментариев, я думаю, я понимаю, что вы ищете.

Ответ:

Это можно сделать в скрипте Google Apps, создав функциюэто связано с вашей формой Google, которая собирает последний ответ и выполняет обработку данных, и заставляет ее работать при отправке формы.

Шаги, которые необходимо предпринять:

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

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

Код:

После открытия сценарияВ редакторе вы увидите готовую к редактированию функцию, которая выглядит следующим образом:

function myFunction() {

}

Замените весь скрипт следующим кодом:

function onSubmit(e) {
  var responses = FormApp.getActiveForm().getResponses();
  var response = responses[responses.length - 1].getItemResponses();
  var connectedSheet = SpreadsheetApp.openById('<your-sheet-id>').getSheets();
  var sheet2 = connectedSheet[1];  
  var result2Column = sheet2.getRange('A1:A').getValues();

  for (var i = 0; i < result2Column.length; i++) {
    if (response[1] == result2Column[0]) {
      sheet2.getRange('B' + (i +1)).setValue(response[0]);
    }
  }
}

Обязательно замените <your-sheet-id> с уникальным идентификатором вашего Google Sheeet - вы можете найти его в URL листа между d/ и /edit, например:

https://docs.google.com/spreadsheets/d/<your-sheet-id>/edit

Запустите скрипт, нажав кнопку воспроизведения (►) и авторизуйте приложение для запуска.

Затем перейдите к Edit -> Current Project's Triggers и настройте новый устанавливаемый триггер со следующими настройками:

  • Выберите, какую функцию запустить: onSubmit
  • Выберите, какое развертывание должно выполняться: Head
  • Выберите источник события: From form
  • Выберите тип события On form submit

Объяснение:

Этот сценарий будет запускаться каждый раз, когда отправляется новая форма. сделано автоматически - он возьмет идентификатор из формы ответа и найдет его в Sheet2. Если он найден, то ответ, приведенный для результата, будет также помещен в Sheet2 рядом с соответствующим идентификатором.

Надеюсь, это вам поможет!

Ссылки:

1 голос
/ 17 октября 2019

В ячейку B2 вашего второго листа я ввел следующее:

=VLOOKUP(A2,Sheet1!A:B,2,FALSE)

Results

Полагаю VLOOKUP в Google-Sheets позволяет ссылки на листы?

К вашему сведению, при вводе формулы после ввода первого аргумента, который является критерием поиска, вы можете щелкнуть свой лист1 и выделить столбцы A и B, а затем вернуться к своему листу2 (со вторымаргумент автоматически заполняется системой), чтобы завершить формулу с третьим (позиция столбца диапазона результатов в пределах диапазона поиска) и четвертым аргументом (TRUE для приблизительного совпадения и FALSE для точного совпадения) и нажмите Enter для выхода из формулы.

...