簡體   English   中英

如何在VBA中為SUMIF()公式提供文件路徑

[英]How to give filepath to SUMIF() formula in VBA

=SUMIF('[filename1.xlsx]Sheet1'!$A:$A,C12,'[filename1.xlsx]Sheet1'!$Y:$Y)+SUMIF('[filename2.xlsm]Data from ABC'!$A:$A,C12,'[filename2.xlsm]Data from ABC'!$Y:$Y)

上面的公式在filename3中使用,但是,如果filename1filename2關閉,則會出現錯誤,並且我必須再次設置整個公式。 為避免這種情況,如何將文件名作為sumif公式的單元格引用

我正在使用以下公式,其中在單元格A10,A11,B10,B11中給出了完整的文件名,但是它不起作用。

=SUMIF(A10,C12,A11+SUMIF(B10,C12,B11)

您能對此提出建議嗎?

函數SUMPRODUCT可以處理封閉的工作簿。 但是此函數中的參數位於矩陣(數組)上下文中,這對於整個列而言都是非常不好的。 因此,僅當您可以將范圍從整個列縮小到部分列時,以下內容才有效。

打開三個文件。 在filename3中創建公式:

=SUMPRODUCT(('[filename1.xlsx]Sheet1'!$A$1:$A$1000=C12)*'[filename1.xlsx]Sheet1'!$Y$1:$Y$1000)
+SUMPRODUCT(('[filename2.xlsm]Data from ABC'!$A$1:$A$1000=C12)*'[filename2.xlsm]Data from ABC'!$Y$1:$Y$1000)

現在關閉filename1和filename2。 現在,公式中應該是filename1和filename2的完整路徑,並且值可以自動更新。

問候

阿克塞爾

首先,聲明一些變量來表示您的文件:

Dim f1 as Workbook, f2 as Workbook
Set f1 = Workbooks("filename1.xlsx")
Set f2 = Workbooks("filename2.xlsx")

現在,您可以在代碼中訪問這些對象,並使用它們的PathName屬性,這將有助於構建在工作簿關閉后依賴於這些對象的公式字符串:

當引用這樣的公式時,我認為語法是:

'_workbook_path[_workbook_name_]_sheet_name'!_cell_address

因此,類似這樣(未經測試,如果文件名/工作表名稱包含空格/等,可能需要進行一些調整)。

ActiveCell.Formula = "=SumIf('" & f1.Path & "[" & f1.Name & "]Sheet1'!$Y:Y)+" & _
                     "SumIf('" & f2.Path & "[" & f2.Name & "]Data from ABC'!$Y:Y)"

等等。

然而

目前尚不清楚何時/如何實現此功能,可能還有更好的方法可以從尚未打開的筆記本中獲取數據,包括ADODB和ExecuteExcel4Macro方法。

暫無
暫無

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

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