我有一个Google电子表格,基本上是一个键/值对字典。钥匙是独一无二的在第二张表中,我需要为字典中的每个键添加一行或多行以及一些数据。在这篇文章中,我还需要报告每个密钥的正确值。
为此,我尝试将ARRAYFORMULA函数与第二张表的第一行上的许多其他函数组合,以避免(如果可能)需要在值列的所有行上复制相同的公式。
到目前为止,QUERY和FILTER都没有工作。
QUERY要求所有数据(包括WHERE谓词的参数)驻留在单个工作表上。在我的情况下,过滤键将在第二张纸上,而词典在第一张纸上。所以这根本不能用。
FILRE似乎有一种奇怪的(对我来说)行为,当它们与ARRAYFORMULA一起使用时,没有它。
您可以查看我的测试Google表格 here或带ARRAYFORMULA的快照(B栏),没有它(C栏)和我想要的(D栏):
距离pnuts还有一步之遥。解决方案提供了完美的"结果没有" N / A"细胞:
=ARRAYFORMULA(IF(A3:A="";"";VLOOKUP(A3:A;KEYS!A1:B;2;FALSE)))
当然,对于性能有重大影响,因为VLOOKUP在第二张表中为每一行运行一次(这也是我尝试使用FILTER的原因)。 即使使用当前链接的示例表,这些表现也非常低,这真的很瘦。
答案 0 :(得分:1)
在第3行中,请尝试:
=ArrayFormula(vlookup(A3:A;KEYS!A$1:B$5;2;0))
答案 1 :(得分:0)
尝试:
using Microsoft.SharePoint.Client;
namespace Helpers
{
public static class SharePoint
{
public static List<ListItem> GetItems(List list, CamlQuery query = null)
{...}
}
}
只要在col A中输入值,就应该获得密钥。
答案 2 :(得分:0)
您可以使用From spreadsheet - On change
事件触发器来调用如下代码:
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();
};