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 (client#) 与标题行中的相应条目相匹配。为此,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 是电子表格的整个第一行。如果公式向上/向下复制到另一个单元格,$ 将保持行号不变。最后的 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)
现在您知道正在处理的行和正在处理的列,现在可以使用 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。继续这样做,然后每次将 +# 加一。
根据您将在添加客户时添加列的注释,您需要在每次添加客户时调整公式。有一些方法可以自动执行此操作,但在这种情况下,您最好选择偏移路线。
请注意,用于对客户进行分组的列数量有限。