Google sheets 在ARRAYFORMULA中,索引的等价物是什么?

Google sheets 在ARRAYFORMULA中,索引的等价物是什么?,google-sheets,google-sheets-formula,array-formulas,gs-vlookup,Google Sheets,Google Sheets Formula,Array Formulas,Gs Vlookup,我有(我认为是)一个简单的查找表,其中包含一些汇率。在那里,我根据行和列索引查找值 我怎么能在这样的排列公式中做到这一点 =ARRAYFORMULA(INDEX(x!C2:C, F1:F)) x是保存值的表,我对C列感兴趣,行索引保存在F列中。像索引(x!C2:C,F7)这样的单值查找按预期工作 但遗憾的是,ARRAYFORMULA不起作用,因为我想ARRAYFORMULA中不支持索引。可以通过使查找表的第一列成为行号(具有适当的偏移量)来模拟索引功能。例如: =arrayformula(vl

我有(我认为是)一个简单的查找表,其中包含一些汇率。在那里,我根据行和列索引查找值

我怎么能在这样的排列公式中做到这一点

=ARRAYFORMULA(INDEX(x!C2:C, F1:F))
x
是保存值的表,我对C列感兴趣,行索引保存在F列中。像索引(x!C2:C,F7)这样的单值查找按预期工作

但遗憾的是,ARRAYFORMULA不起作用,因为我想ARRAYFORMULA中不支持索引。

可以通过使查找表的第一列成为行号(具有适当的偏移量)来模拟
索引功能。例如:

=arrayformula(vlookup(F1:F, {row(x!C2:C) - row(x!C2) + 1, x!C2:C}, 2))
执行您尝试使用“=ARRAYFORMULA(索引(x!C2:C,F1:F))”执行的操作


查找表
{row(x!C2:C)-row(x!C2)+1,x!C2:C}
有第一列1,2,3,。。。第二列是要索引的范围。因此,对于F1:F中的每个值,vlookup访问x的条目!C2:C这将是
index

您可以编写一个自定义脚本来执行此操作,然后可以用它代替常规的index()函数。只需对工具-->脚本编辑器执行操作,然后粘贴到代码中,保存,然后您就可以像在Google工作表中使用普通函数一样使用该函数

代码:

函数INDEXMULTI(数组、行、列){
var-ret=新数组;
var i;
if(行[0].length!=列[0].length)
返回“错误:行和列计数必须相同”;

对于(i=0;i,您可以通过在x!C1中写入“Anything”来用Vlookup替换索引,并使用:
=数组形式(Vlookup(“任意”,转置(x!C2:C),F1:F))

是的,我认为在这种情况下建议使用vlookup,但据我所知,您需要知道要查找的值,不是吗?我不知道要查找的值是什么,这就是我查找它的原因!!!这很有效,谢谢!这是一个很好的窍门。但是,在使用简单索引时,每次查找都要搜索整个第一列,感觉有点浪费-基于地址的寻址会立即检索到答案。我应该担心吗?还有其他更快的方法吗?我不会担心。默认情况下(第四个参数不为False),
vlookup
假设密钥集已排序并执行二进制搜索,log(n)。可能重复
function INDEXMULTI(array, rows, columns) {
  var ret = new Array;
  var i;
  if (rows[0].length != columns[0].length)
    return "Error: Row and column count must be the same";
  for (i=0; i<rows[0].length; i++)
    ret.push(array[(rows[0][i]-1)][(columns[0][i]-1)]);
  return ret;
}