Excel 2010:如何使用定义的列名和行号引用特定字段?

Excel 2010:如何使用定义的列名和行号引用特定字段?

我正在使用 Excel 2010,正在创建一个工作簿来定义商店中产品的详细信息(包括类别、价格、配件)。我还想定义默认类别详细信息,以便在产品的具体详细信息留空时使用。

我设置了三张表:产品、类别默认和计算。列是产品/类别详细信息,每个项目/类别都有自己的行。我还想尽可能使用命名列以提高可读性。以 P 开头的列名是产品详细信息,以 D 开头的列名来自 CategoryDe​​fault 表。

计算中的字段与此类似:

=IF(Products!G2="",
INDEX(DPRICE, MATCH(Products!A2, DCAT, 0)),
Products!G2)

其中 DPRICE 是默认定价的命名列,DCAT 是 CategoryDe​​faults 表的类别名称。

公式含义如下:如果产品编号 2 的 G 列为空,则在 CategoryDe​​fault 表中查找 A 列产品 2 的值并返回 DefaultPrice。否则返回定义的价格。

到目前为止,一切都运行良好。我想再进一步:在前面的例子中,Products!G2 指的是第 2 行产品的价格列。我想通过将列字母引用“G”替换为命名列引用(即“PPRICE”)来使公式更具可读性。我将对 Products!A2 的引用执行相同操作,将列命名为“PCAT”(产品所属的类别)

最终公式如下:

=IF(Products!PPRICE:2="",
INDEX(DPRICE, MATCH(Products!PCAT:2, DCAT, 0)),
Products!PPRICE:2)

我就是无法让它工作。我试过“应用名称...”,但没有结果,冒号和 $ 的任何变体也无济于事。有人以前这样做过吗?

答案1

我发现这INDEX(PPRICE, 2)将返回 PPRICE 列中第二行的值。整个代码片段将如下所示:

=IF(INDEX(PPRICE, 2)="",
INDEX(DPRICE, MATCH(Products!A2, DCAT, 0)),
INDEX(PPRICE, 2))

但是,它是一个绝对值,而不是相对值,如果您将此公式复制粘贴到其他行,它仍将指向第 2 行。因此,对于大型数据集来说,这不是一个好主意。

相关内容