Excel 公式未被接受但没有错误原因
Excel Formula not accepted but no reason for error
我有一个 if 公式,其中包含许多必须匹配的条件。
当我缩短公式后,它可以从后面开始工作 - IF(LEFT(A6,1)="2"
但此时没有理由出错?有帮助吗?
=IF(LEFT(A6,2)="10","Area 1",IF(LEFT(A6,2)="12","Area 2",IF(LEFT(A6,2)="13","Area 3",IF(LEFT(A6,2)="14","Area 4",IF(LEFT(A6,2)="15","Area 5",IF(LEFT(A6,2)="16","Area 6",IF(LEFT(A6,2)="17","Area 7",IF(LEFT(A6,1)="2","Bulk",IF(LEFT(A6,1)="4","Intl",IF(LEFT(A6,2)="7","CGCC","Ad-Hoc"))))))))))
您可以尝试组合 IF
和 VLOOKUP
。
=IF(LEFT(A6,1)="4","Intl",IF(ISNA(VLOOKUP(LEFT(A6,2),{"7","CGCC";"10","Area 1";"12","Area 2";"13","Area 3";"14","Area 4";"15","Area 5";"16","Area 6";"17","Area 7"},2,FALSE)),"Ad-Hoc",VLOOKUP(LEFT(A6,2),{"7","CGCC";"10","Area 1";"12","Area 2";"13","Area 3";"14","Area 4";"15","Area 5";"16","Area 6";"17","Area 7"},2,FALSE)))
我在公式中嵌入了数组,但您可以像这样准备一个 table(假设 G1:H7
):
然后使用VLOOKUP
参考:
=IF(LEFT(A6,1)="4","Intl",IF(ISNA(VLOOKUP(LEFT(A6,2),G1:H7,2,FALSE)),"Ad-Hoc",VLOOKUP(LEFT(A6,2),G1:H7,2,FALSE)))
IFNA
或 IFERROR
也可以使用,但它们在 Excel 2003 中不可用。
您的整个公式可以缩短为 2 个 VLOOKUP 函数,方法是将您的数据放入 table,您的 ID 列位于工作表 2 的 A 列,结果列位于工作表 2 的 B 列.这将如下所示:
=IFERROR(VLOOKUP(LEFT(A6,2),'Sheet2'!A:B,2,0),IFERROR(VLOOKUP(LEFT(A6),'Sheet2'!A:B,2,0),"Ad Hoc"))
这样做的目的是:首先尝试将 A6 中左侧的 2 个字符与工作表 2 中 A 列中的一个 ID 相匹配。如果这会产生错误,它会尝试将 A6 中左边的 1 个字符与工作表 2 的 A 列中您的 ID 之一相匹配。无论哪种方式,它 returns sheet2 的 B 列中的匹配值。如果找不到匹配项,则 returns "Ad Hoc".
我有一个 if 公式,其中包含许多必须匹配的条件。
当我缩短公式后,它可以从后面开始工作 - IF(LEFT(A6,1)="2"
但此时没有理由出错?有帮助吗?
=IF(LEFT(A6,2)="10","Area 1",IF(LEFT(A6,2)="12","Area 2",IF(LEFT(A6,2)="13","Area 3",IF(LEFT(A6,2)="14","Area 4",IF(LEFT(A6,2)="15","Area 5",IF(LEFT(A6,2)="16","Area 6",IF(LEFT(A6,2)="17","Area 7",IF(LEFT(A6,1)="2","Bulk",IF(LEFT(A6,1)="4","Intl",IF(LEFT(A6,2)="7","CGCC","Ad-Hoc"))))))))))
您可以尝试组合 IF
和 VLOOKUP
。
=IF(LEFT(A6,1)="4","Intl",IF(ISNA(VLOOKUP(LEFT(A6,2),{"7","CGCC";"10","Area 1";"12","Area 2";"13","Area 3";"14","Area 4";"15","Area 5";"16","Area 6";"17","Area 7"},2,FALSE)),"Ad-Hoc",VLOOKUP(LEFT(A6,2),{"7","CGCC";"10","Area 1";"12","Area 2";"13","Area 3";"14","Area 4";"15","Area 5";"16","Area 6";"17","Area 7"},2,FALSE)))
我在公式中嵌入了数组,但您可以像这样准备一个 table(假设 G1:H7
):
然后使用VLOOKUP
参考:
=IF(LEFT(A6,1)="4","Intl",IF(ISNA(VLOOKUP(LEFT(A6,2),G1:H7,2,FALSE)),"Ad-Hoc",VLOOKUP(LEFT(A6,2),G1:H7,2,FALSE)))
IFNA
或 IFERROR
也可以使用,但它们在 Excel 2003 中不可用。
您的整个公式可以缩短为 2 个 VLOOKUP 函数,方法是将您的数据放入 table,您的 ID 列位于工作表 2 的 A 列,结果列位于工作表 2 的 B 列.这将如下所示:
=IFERROR(VLOOKUP(LEFT(A6,2),'Sheet2'!A:B,2,0),IFERROR(VLOOKUP(LEFT(A6),'Sheet2'!A:B,2,0),"Ad Hoc"))
这样做的目的是:首先尝试将 A6 中左侧的 2 个字符与工作表 2 中 A 列中的一个 ID 相匹配。如果这会产生错误,它会尝试将 A6 中左边的 1 个字符与工作表 2 的 A 列中您的 ID 之一相匹配。无论哪种方式,它 returns sheet2 的 B 列中的匹配值。如果找不到匹配项,则 returns "Ad Hoc".