2015-01-06 84 views
0

您能否幫我簡化或引導我進入正確的方向。我的功能是假設首先檢查LABEL表中是否存在一個字中的7個字符,如果不是,則先檢查6個字,然後再檢查5個字等...這是因爲該表可以包含CHARLYLCHARLY。 當我把公式放在下面時,我得到一個錯誤「太多參數」。我沒有意識到IF語句的限制......是否有一種簡化的替代方法呢?Excel,IF語句,vlookup - 太多參數

=if(isna(VLOOKUP(LEFT(A2,7),LABEL!A:B,2,0)), 
     if(isna(VLOOKUP(LEFT(A2,6),LABEL!A:B,2,0)), 
      if(isna(VLOOKUP(LEFT(A2,5),LABEL!A:B,2,0)), 
       if(isna(VLOOKUP(LEFT(A2,4),LABEL!A:B,2,0)), 
        if(isna(VLOOKUP(LEFT(A2,3),LABEL!A:B,2,0)), 
        "MISC",VLOOKUP(LEFT(A2,3),LABEL!A:B,2,0)), 
       "MISC",VLOOKUP(LEFT(A2,4),LABEL!A:B,2,0)), 
      "MISC",VLOOKUP(LEFT(A2,5),LABEL!A:B,2,0)), 
     "MISC",VLOOKUP(LEFT(A2,6),LABEL!A:B,2,0)), 
    "MISC",VLOOKUP(LEFT(A2,7),LABEL!A:B,2,0)) 
+0

您運行的是哪個版本的Excel,您是否必須向2007之前提供向後兼容性? XL2007中引入的[IFERROR函數](https://support.office.com/en-US/Article/IFERROR-function-f59bacdc-78bd-4924-91df-a869d0b08cd5)可以大大減少嵌套的IF(ISNA()) '公式。 – Jeeped

+0

查找表(包含CHA,CHAR,CHARL,CHARLY,CHARLYL)可能會縮短公式。 – pnuts

+0

@Jeeped是的,這是Excel 2007.我會研究IFERROR,謝謝 – Elen

回答

1

嵌套IFERROR功能可以相比,其IF(ISNA(...), ...)等效大大降低的公式。

=IFERROR(VLOOKUP(LEFT(A2,7),LABEL!A:B,2,0), 
    IFERROR(VLOOKUP(LEFT(A2,6),LABEL!A:B,2,0), 
    IFERROR(VLOOKUP(LEFT(A2,5),LABEL!A:B,2,0), 
    IFERROR(VLOOKUP(LEFT(A2,4),LABEL!A:B,2,0), 
    IFERROR(VLOOKUP(LEFT(A2,3),LABEL!A:B,2,0), 
     "MISC"))))) 

這裏是你的公式的修復版本。您在默認的MISC參數中添加了比所需更多的時間。

=IF(ISNA(VLOOKUP(LEFT(A2,7),LABEL!A:B,2,0)), 
     IF(ISNA(VLOOKUP(LEFT(A2,6),LABEL!A:B,2,0)), 
      IF(ISNA(VLOOKUP(LEFT(A2,5),LABEL!A:B,2,0)), 
       IF(ISNA(VLOOKUP(LEFT(A2,4),LABEL!A:B,2,0)), 
        IF(ISNA(VLOOKUP(LEFT(A2,3),LABEL!A:B,2,0)), 
        "MISC", 
        VLOOKUP(LEFT(A2,3),LABEL!A:B,2,0)), 
       VLOOKUP(LEFT(A2,4),LABEL!A:B,2,0)), 
      VLOOKUP(LEFT(A2,5),LABEL!A:B,2,0)), 
     VLOOKUP(LEFT(A2,6),LABEL!A:B,2,0)), 
    VLOOKUP(LEFT(A2,7),LABEL!A:B,2,0)) 
+0

這實際上看起來像工作! (哦,是關於如果 - 沒有注意到) – Elen