Копировать ячейку с листа на другой, если другая ячейка в строке соответствует значениям

Я хочу скопировать ячейку (я) с одного листа на другой, только если другая ячейка в той же строке (другой столбец) имеет / имеет определенное значение (я) в Google Таблицах.

В идеале я бы хотел, чтобы это было вживую; если я добавлю строку в первый лист и критерий совпадет, второй лист тоже обновится. Вот пример:

Sheet one

Column A | Column(s)…  | Column D
=================================
Hello    |             | Yes
World!   |             | Yes
Foo      |             | Maybe
Bar      |             |

Sheet two

Column A | Column(s)…  | Column D
=================================
Hello    |             |
World!   |             |
Foo      |             |
         |             |

Итак, в этом примере мои критерии заключаются в том, что если ячейка строки в Column D равна либо Yes, либо Maybe, ячейка этой строки в Column A копируется на второй лист.


person Jonathon Oates    schedule 18.02.2015    source источник
comment
Возможно аналогичное решение проблемы есть в Excel!   -  person Jonathon Oates    schedule 18.02.2015


Ответы (2)


Пожалуйста, попробуй:

=query('Sheet one'!A:D,"Select A where D='Yes' or D='Maybe'") 
person pnuts    schedule 18.02.2015
comment
Это должно сработать. Не знаю, почему я подумал о сценарии. Наверное, подумал, что OP хочет удалить строку на первом листе. : - | - person JPV; 18.02.2015
comment
Спасибо, орехи! Я восстановил его. Когда последняя строка закомментирована, она не будет удалена. - person JPV; 18.02.2015

Вставьте ниже скрипт в редактор скриптов (то есть в лист Google) и сохраните проект. Затем попробуйте отредактировать столбец D листа 1 (значения: «Да» или «Может быть») и посмотрите, перемещается ли строка ... Не стесняйтесь изменять имена листов, если необходимо ...

function onEdit(e) {
var ss = e.source,
    sheet = ss.getActiveSheet();
if (sheet.getName() !== 'Sheet1' || e.range.columnStart !== 4 || e.value !== 'Yes' && e.value !== 'Maybe') return;
e.source.getSheetByName('Sheet2')
    .appendRow(e.range.offset(0, -3, 1, 4)
        .getValues()[0]);
sheet.deleteRow(e.range.rowStart);
}
person JPV    schedule 18.02.2015