将一个工作表中的单元格复制到另一个工作表,如果行中的其他单元格匹配某些数值

3
我想要的是将一个工作表中的单元格复制到另一个工作表,仅当同一行中的另一个单元格(不同列)具有特定值时,在Google Sheets中实现此目的。
理想情况下,我希望这是实时的;如果我在第一个工作表中添加一行并且符合条件,则第二个工作表也会更新。以下是一个示例:
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      |             |
         |             |

因此,在这个例子中,我的条件是如果该行的单元格在D列等于YesMaybe,则该行的单元格在A列被复制到第二个工作表。


1
这个问题在Excel中可能有相似的解决方案! - Jonathon Oates
2个回答

8
请尝试:
=query('Sheet one'!A:D,"Select A where D='Yes' or D='Maybe'") 

1
应该可以了。不知道为什么我想到了一个脚本。可能是因为我认为 OP 想要删除第一个工作表上的行。 :-| - JPV
2
谢谢,pnuts!我已经恢复它了。当最后一行被注释掉时,该行将不会被删除。 - JPV

1

将以下脚本粘贴到脚本编辑器中(谷歌表格的脚本编辑器),保存项目。然后尝试编辑sheet1的列D(值为“是”或“可能”),看看行是否移动... 如有需要,请随意更改工作表名称...

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接