我正在使用 Excel 2010,正在创建一个工作簿来定义商店中产品的详细信息(包括类别、价格、配件)。我还想定义默认类别详细信息,以便在产品的具体详细信息留空时使用。
我设置了三张表:产品、类别默认和计算。列是产品/类别详细信息,每个项目/类别都有自己的行。我还想尽可能使用命名列以提高可读性。以 P 开头的列名是产品详细信息,以 D 开头的列名来自 CategoryDefault 表。
计算中的字段与此类似:
=IF(Products!G2="",
INDEX(DPRICE, MATCH(Products!A2, DCAT, 0)),
Products!G2)
其中 DPRICE 是默认定价的命名列,DCAT 是 CategoryDefaults 表的类别名称。
公式含义如下:如果产品编号 2 的 G 列为空,则在 CategoryDefault 表中查找 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 行。因此,对于大型数据集来说,这不是一个好主意。