1

我正在尝试设置值列表的映射。一行中的一个单元格包含 ID 或行号列表,同一行中的另一个单元格包含映射值列表。

如果您正在做一些基本的数学运算,这对于 JOIN、ARRAYFORMULA 和 SPLIT 来说非常简单,例如:

A1: =1,2,3
A2: =JOIN(",",ArrayFormula(SPLIT(A1,",")+1)) 
A2: displays "2,3,4" (correct)

这似乎不适用于 LOOKUP 和 SPLIT(也尝试过 LOOKUP 和 REGEXEXTRACT)。具体来说,即使使用可变参数,我也可以让它工作,但是一旦我更改行,值就会中断。例子:

A column: ids (e.g. 1,2,3,4)
C column: names (e.g. "Apple", "Banana", "Custard")
E7: =1,2,3
F7: =JOIN(",",ArrayFormula(LOOKUP(SPLIT($E7, ","), $A:$A, $C:$C)))
F7 displays "Apple,Banana,Custard" (correct)

以上是正确的行为。但是,如果我将第 1 行(id 1)拖到不同的地方,公式就会中断。

F7 displays "#N/A Did not find value `1` in LOOKUP evaluation"

该行为并非特定于 LOOKUP 或 SPLIT,因为我也使用 VLOOKUP 和 REGEXEXTRACT 进行了尝试(实际上,使用 REGEXEXTRACT 更难支持可变列表大小)。

样品表

解决方案

它在使用“=ROW()”时有效。正如 AdamL 所指出的,实际问题是 is_sorted 标志需要为 false(如果您想支持拖放)

E7: =ROW(A2)&","&ROW(A3)&","&ROW(A4)
F7: =JOIN(",",ArrayFormula(VLOOKUP(SPLIT($E7, ","), $A:$C, 3, 0)))
F7 displays correct value even after dragging row 1
4

1 回答 1

5

我认为问题是:当您拖放时,查找列表不再排序,并且 LOOKUP 以及没有为(可选)第四个参数指定 FALSE(或 0)的 VLOOKUP 需要一个排序列表。所以我认为解决方案是使用 VLOOKUP,但指定了第四个参数:

=ArrayFormula(JOIN(",",VLOOKUP(SPLIT($E5,","),$A:$D,3,0)))

于 2014-10-24T06:20:16.323 回答