2017-05-21 39 views
-1

下面的代碼是if語句,但搜索組合在一起。例如,如果在D列中找到單元格$ BA $ 1的值(部分或全部,因此'搜索'而不是相等),則輸入列J中單元格$ AZ $ 1的內容。否則,輸入單元格$ AY $ 1如果滿足第一個條件(例如$ AZ $ 1),我的VBA會正確返回,但是,它返回#Value!而不是$ AY $ 1中的值。 似乎沒有語法錯誤,我嘗試過編寫這行代碼的各種方法。你能看出問題在哪裏嗎?讓我知道如果這不夠清楚。感謝搜索功能用戶表格

With Sheets("XXXX") 
    With .Range("D2", .Cells(.Rows.Count, "D").End(xlUp)).Offset(0, 6) 
    .Formula = "=IF(SEARCH($BA$1, D2, 1),$AZ$1,$AY$1)" 
    End With 
    End With 

回答

0

Search在沒有比賽的情況下,不返回zerofalse,它返回一個錯誤。所以對於一個匹配合適的測試應該是

  • 檢查使用IF(ISERROR(...),value-if-error,value-if-ok)錯誤,但隨後你需要扭轉你的結果的順序:

    .Formula = "=IF(ISERROR(SEARCH($BA$1, D2)),$AY$1,$AZ$1)" 
    '    ^^^^^^^^     ^^^^^^^^^^^^ 
    
  • 或檢查搜索的結果是一個數字,使用ISNUMBER。這不會改變您的結果的順序。我通常喜歡此選項:

    .Formula = "=IF(ISNUMBER(SEARCH($BA$1, D2)),$AZ$1,$AY$1)" 
    '    ^^^^^^^^ 
    

附:默認情況下,SEARCH的第三個參數(起始位置)是1,所以我省略了它。

+1

它的工作原理,感謝數百萬! – thankseveryone

+0

@thankseveryone很高興幫助:) –