Google sheets 如何使用ARRAYFORMULA+;谷歌电子表格中的过滤器?

Google sheets 如何使用ARRAYFORMULA+;谷歌电子表格中的过滤器?,google-sheets,array-formulas,gs-vlookup,Google Sheets,Array Formulas,Gs Vlookup,我有一个谷歌电子表格,基本上是一个键/值对字典。钥匙是独一无二的。在第二个工作表中,我需要为字典中的每个键添加一行或多行数据。在这张表中,我还需要报告每个键的正确值 为此,我尝试将ARRAYFORMULA函数与第二页第一行上的许多其他函数结合起来,以避免(如果可能的话)需要在value列的所有行上复制相同的公式 到目前为止,查询和筛选都不起作用 查询要求所有数据(包括WHERE谓词的参数)驻留在单个工作表上。在我的例子中,过滤键在第二张纸上,而字典在第一张纸上。所以这根本不能用 过滤器在与ARR

我有一个谷歌电子表格,基本上是一个键/值对字典。钥匙是独一无二的。在第二个工作表中,我需要为字典中的每个键添加一行或多行数据。在这张表中,我还需要报告每个键的正确值

为此,我尝试将ARRAYFORMULA函数与第二页第一行上的许多其他函数结合起来,以避免(如果可能的话)需要在value列的所有行上复制相同的公式

到目前为止,查询和筛选都不起作用

查询要求所有数据(包括WHERE谓词的参数)驻留在单个工作表上。在我的例子中,过滤键在第二张纸上,而字典在第一张纸上。所以这根本不能用

过滤器在与ARRAYFORMULA结合使用和不与ARRAYFORMULA结合使用时(对我来说)似乎有一种奇怪的行为

你可以看看我的谷歌测试表 或者这里的快照有ARRAYFORMULA(第B列),没有ARRAYFORMULA(第C列),还有我想要的(第d列):

与pnuts的解决方案相比,再向前迈进一小步,就可以在没有“N/A”单元的情况下获得“完美”的结果:

当然,这对性能有很大的影响,因为在第二张表中,VLOOKUP每行运行一次(这也是我尝试使用过滤器的原因)。 即使使用当前链接的示例表,这些性能也非常低,因为它非常瘦。

在第3行中,请尝试:

=ArrayFormula(vlookup(A3:A;KEYS!A$1:B$5;2;0))
尝试:


只要在A列中输入了值,就应该得到键。

您可以使用电子表格中的
事件触发器调用如下代码:

function CopyPasteWastageRows() {
    var spreadsheet = SpreadsheetApp.getActive().getSheetByName("<<Sheet-Name>>");
    spreadsheet.getRange('Q2').activate();
    var currentCell = spreadsheet.getCurrentCell();
    spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
    currentCell.activateAsCurrentCell();
    spreadsheet.getRange('Q2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    spreadsheet.getRange('Q2').activate();
};
函数CopyPasteWastageRows(){
var电子表格=SpreadsheetApp.getActive().getSheetByName(“”);
电子表格.getRange('Q2').activate();
var currentCell=spreadsheet.getCurrentCell();
电子表格.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
currentCell.activateAsCurrentCell();
spreadsheet.getRange('Q2').copyTo(spreadsheet.getActiveRange(),SpreadsheetApp.copypesttype.PASTE_正常,错误);
电子表格.getRange('Q2').activate();
};

这几乎非常有效。在D8中,我发现一个“N/a”单元格,在执行VLOOKUP期间,带有备注“找不到值”。即使我在密钥表中添加了一个空密钥。这一点很好。我不清楚钥匙表的大小。我更希望从键中排除所有空白行。我从pnuts的解决方案开始这样做。谢谢。即使按键排序也会对性能产生重大影响。当然,我是在用真实数据进行测试,其中键约为20,数据约为200。无论如何,情况不会是这样的……如果能知道为什么会被否决,那就太好了。
=ARRAYFORMULA(IF(LEN(A3:A); VLOOKUP(A3:A;KEYS!A1:B;2;FALSE);))
function CopyPasteWastageRows() {
    var spreadsheet = SpreadsheetApp.getActive().getSheetByName("<<Sheet-Name>>");
    spreadsheet.getRange('Q2').activate();
    var currentCell = spreadsheet.getCurrentCell();
    spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
    currentCell.activateAsCurrentCell();
    spreadsheet.getRange('Q2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    spreadsheet.getRange('Q2').activate();
};