簡體   English   中英

如何通過VBA將數組公式插入Excel?

[英]How to insert array formula into Excel via VBA?

以前,我有一個 Excel VBA 代碼,可以為表中的整個列執行從一張工作表到另一張工作表的索引和匹配公式。 代碼示例如下:

With Me.Range("table1[Description]")
    .Formula = "=IFerror(INDEX(table2,MATCH(B4,table2[Asset No],0),2),"""")"
    .Value = .Value
 End With

現在我想在工作表中添加一個數組函數,所以我復制了公式並將舊公式替換為數組以及其他修改。

Sub refresh()

With Me.Range("table1[Last Service Date]")
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)"
    .Value = .Value
End With

End Sub

但是當我嘗試測試代碼時,我不斷收到錯誤消息 400。我需要在數組公式的代碼中更改什么?

在代碼中使用 Me 有什么意義? 您是否已將該代碼放在工作表模塊中? 我建議您將此代碼移到像 Module1 這樣的標准模塊中,並用正確的工作表引用替換 Me 關鍵字。 否則,我希望您有充分的理由將該代碼放入工作表模塊中。

此外,您應該將數組公式放在所需列中表格的第一個單元格中,由於數據格式為 Excel 表格,因此整列將自動填充公式。 如果沒有,您可以使用 AutoFill 屬性將公式向下填充到行中。

嘗試一下,看看是否可以解決您的問題。 答案假定您嘗試通過 VBA 放置的公式在您手動將其放在工作表上時效果很好。

With Me.Range("table1[Last Service Date]").Cells(1)
    .FormulaArray = "=LARGE(IF(table2[[#All],[Asset No]]=[@[Asset No]],table2[[#All],[Entry Date]]),2)"
    .Value = .Value
End With

暫無
暫無

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

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