Excel匹配,偏移,多列索引

问题描述 投票:-1回答:2

我想找到相应客户的价值PO#Invoice#Quote#etc ..&客户列表在不同的多列中提到。

使用的公式:= INDEX(D16,D17,2,MATCH('客户PO和发票详情'!A1:ACZ25,'客户PO和发票详情'!A1:ACZ1,0))

寻找与匹配的偏移索引Pic所需的查看功能

excel indexing match lookup offset
2个回答
1
投票

您的数据暂存效率非常低。如果您创建了一个客户端编号列并垂直扩展数据而不是水平扩展,那么您可以真正省去很多麻烦。例如,如果您的数据以这种方式组织,则可以使用数据透视表来大规模简化此问题。

除非对数据结构进行更改,否则可以针对偏移范围对日期执行vlookup:

=VLOOKUP($D$17,OFFSET('Client PO & Invoice Details'!$A$1,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)-1,1048575,6),2,FALSE)

此公式应放在ID和日期过滤器下方的D18:D22中。你需要将vlookup索引递增到公式的末尾(...,2,FALSE)以获取你正在寻找的特定列.2将需要更新为3,4,5,并且在后续公式中为6以获得每个价值。

首先公式在第1行找到您的客户编号,然后偏移定义从找到客户端编号的列开始的6列宽范围,最后通过在偏移范围的第一列中查找日期,vlookup正常工作并返回索引列的值。


0
投票
INDEX(range you want to look in,  how many rows down from the top of your range, how many columns to the right)

这是索引的基本用法。如果范围是单行或单列,则只需要第二个条目,并且您希望在该范围内向下移动多远。另一个小警告是,如果0为行数或列数。 0将使索引返回整个相应的行或列。

让我们从查看您要查看的列集开始。您需要将D16(客户端#)与标题行中的相应条目相匹配。要做到这一点,MATCH是一个很好的选择。

=MATCH(value you are looking for,  range you want to look in, and what type of match)

在你的情况下

=MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)

1美元:1美元是电子表格的第1行。如果将公式向上/向下复制到另一个单元格,$将保持行号不变。最后的0表示您想要完全匹配的函数,而不是近似类型匹配。执行此功能后,您将知道要开始查找的列。

所以现在你需要找出你想要使用的行,然后开始提取数据。这可能是VLOOKUP。您可以使用OFFSET函数定义范围。然而,我将采取不同的路线。我将再次使用MATCH来确定我们想要根据我们确定的列查看的行

=INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0))

此索引将转到匹配时找到的列中的所有行。所以现在我们需要在这些结果中进行匹配,以确定您正在使用哪一行。这样做我们得到一个看起来像这样的公式:

=MATCH($D$17,INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)),0)

既然您知道正在使用的行以及您正在使用的列(S),现在可以使用INDEX提取所需的数据。

在D18中放置以下公式

=INDEX('Client PO & Invoice Details'$A:$ACZ,MATCH($D$17,INDEX('Client PO & Invoice Details'$A:$ACZ,0,MATCH($D$16,'Clent PO & Invoice Details'!$1:$1,0)),0),MATCH($D$16,'Client PO & Invoice Details'!$1:$1,0)+1)

在D19中使用相同的公式,但将+1更改为+2。当你每次向下增加+#时,继续这样做。

根据评论,您将在添加客户端时添加列,每次添加客户端时都需要调整公式。有一些方法可以自动执行此操作,但在这种情况下,您可能最好选择偏移路线。

请注意,您的列到客户群的数量有限。

© www.soinside.com 2019 - 2024. All rights reserved.