簡體   English   中英

使用數組公式將具有多個條件的索引匹配轉換為VBA

[英]Index Match with multiple criteria conversion to VBA using an array formula

我有一張要嘗試根據多個條件檢索數據的表。 我為此使用索引匹配。 如果我在excel中手動粘貼公式,則在以下兩種情況下都可以使用。

首先,我使用Index Match公式中原始表中的完整列范圍輸入Array公式

    Selection.FormulaArray = _
    "=IF(ISNA((INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4))),""F"",(INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4)=R4C))"

這可以工作,但是對於大數據來說運行非常慢。 因此,我修改了表中特定范圍(例如30000行)的公式。 當我在Excel中使用行和列引用手動輸入它時,此方法有效,這也大大減少了處理時間。 但是,當我嘗試通過R1C1樣式在VBA中的代碼中使用它時,會引發錯誤。 下面是范圍為40000行的代碼示例

    Selection.FormulaArray = _
    "=IF(ISNA((INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4))),""F"",(INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4)=R4C))"

顯示的錯誤是

“運行時錯誤1004。無法設置范圍類別的公式數組屬性。”

我感覺到錯誤是由於應如何輸入語法的風格所致。 預先感謝您的支持

最簡單的方法如下:

  1. 在Excel中編寫公式;
  2. 轉到“開發人員”標簽,然后點擊“記錄宏”;
  3. 在執行第2點之前,請點擊以下小方塊:

在此處輸入圖片說明

  1. 然后按幾次帶有公式的單元格,它將被“翻譯”;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM