答案1
当然。我想到了一些方法,但旧方法有点复杂。现在你只需使用该FILTER()
函数即可。
与其他查找相比,您更愿意使用它,因为它会为您提供查找值的多个结果。它们都允许您获取与查找值相关的多个列,但只能获取查找值的一个实例。如果您有多个查找值,那么您就没那么幸运了。
因此,进行过滤。这将为您提供查找值的所有出现位置。
但是,您只需要一列,而不是中间的所有列。同样,也有很多方法可以做到这一点。我将特别提到其中一个失败者,因为它可以在许多情况下使用,包括VLOOKUP()
“向左看”,而每个人都告诉你你做不到。
即在公式内部创建一个表,用于INDEX()
提取感兴趣的两列,即查找值和结果值。这样,中间就没有列了,所以您只能返回单个列。使用VLOOKUP()
,您可以将其用作第二个参数,即查找表,并反转列,这样“实际表”中查找值左侧的列就是公式内部表中的第二列,这样VLOOKUP()
就可以得到所需的结果。您可以通过{2,1}
在 中使用列参数INDEX()
来反转它们的顺序。
不过,在这里,获取所需单个列的最简单方法是使用第二个FILTER()
函数包裹上述第一个函数,或“内部函数”。因此,内部函数仅获取与查找值匹配的行,而外部函数仅获取所需的列。人们有时将此称为FILTER/FILTER
(仿照INDEX/MATCH
)。
但是你该怎么做呢?好吧,在里面你必须做一个相当传统的第二个参数来指定要返回哪些行。看看你是如何告诉它匹配查找列中的查找值的?Blah-blah 等于某某?全部独特而复杂?这将产生一个 TRUE/FALSE 值数组以FILTER()
提取所需的行。你可以传递一些类似{1;0;0;1;1;0;0;0}
获取第 1、4 和 5 行的内容,但这样你就自己做了工作,对吗?(顺便说一句,请注意;
该数组常量中每个元素之间的:向下,而不是像使用逗号那样横向)所以你给它更复杂的版本,A1:A9="a"
让它找到它们全部。
但是对于第二个,不需要查看 100,000 行来查找匹配项,只需问“您想要该列吗?”,并且您可以通过键入 TRUE 和 FALSE 值的数组或仅键入 1 和 0(因为它们更容易)来轻松键入(或通过其他方式为其生成一个数组常量)。所以你这样做:
=FILTER(FILTER(B10:N24,B10:B24="kora trošenja"),{0,0,0,0,0,0,0,0,0,0,0,0,1})
和
=FILTER(FILTER(B10:N24,B10:B24="osnovna stijena"),{0,0,0,0,0,0,0,0,0,0,0,0,1})
当然,您可以使用所有常用的方法来输入参数,而不是例如键入(“硬编码”)查找值。您可以使用公式生成数组常量,我想到几种方法。或者使用 newARRAYTOTEXT()
并将数组类型指定为“strict”,在一行中输入 1 和 0,或者在行中使用更有趣的值,也许还可以进行复杂的查找以查看要包含哪些列(例如,有人从三个(因此没有拼写validated
错误)下拉列表启用的单元格中选择它们(因此对他们来说并不难,而且不会出现拼写错误破坏事物)并且您的公式查找他们的列,将 1 发送到ARRAYTOTEXT()
该列在序列中的位置……世界成为您的囊中之物。但上述简单方法适用于少量列。(虽然使用INDEX()
使它变得更小……只是更复杂,但并不多。)
因此INDEX()
可以在这里使用,使内部查找表FILTER()
只考虑查找值列和结果列,然后也可以将其应用于外部FILTER()
。混合搭配或仅使用纯FILTER/FILTER
技术。
最后,还记得如何VLOOUP()
只向左看,但INDEX()
可以反转公式中的列顺序,这样它就可以工作而不是拒绝你吗?好吧,FILTER()
也只有“向右看”。除了……您可以使用INDEX()
查找列,将其放在第一位,然后将输出中需要的列放在它后面,按照您希望返回数据的顺序排列,并将其呈现到内部,这样FILTER()
在公式中,它就向右看,而不是向左看,并且可以工作。在这种情况下,额外的好处是,如果您不介意在结果中包含查找值列,则不需要外部,FILTER()
因为您只包含了您需要的列。
再次,世界在这里尽在您的掌控之中,并且主题还存在更多变化。
但是,上述公式绝对简单明了,一年后当老板希望别人更新它时,很容易理解。但你不会,因为你已经升职了,不会为这些事情烦恼!