首页 > 解决方案 > 访问vba以将excel中的公式复制到最后一行

问题描述

如果公式被复制下来,我遇到了一个问题。但是,即使公式为 True,它也会返回 0。通过 Access vba 使用它时。如果我打开 excel 宏工作簿并运行相同的公式,它将单元格中的真实值返回到最后一行。有人可以看看我的代码并告诉我我做错了什么。我正在使用 MS Access 2016,并且我选择了所有必要的参考工具。这是我的 Access vba 代码。

Dim xlApp3 As Object
Dim xlWBk3 Excel.Workbook
Dim xlSh3, xlSh4, xlSh5, xlSh6 As Excel.Worksheet
Dim strPath3 As String
Dim xlCopy1 As Variant
    strPath3 = "X:\Access_DataBases\Linked_Files\Funding_Integration_Workbook.xlsx"
    Set xlApp3 = CreateObject("Excel.Application") 
    Set xlWB3 = xlApp3.Workbooks.Open(strPath3)
    Set xlSh3 = xlWB3.Sheets("Copied-FMEDDW-Data")
    Set xlSh4 = xlWB3.Sheets("Data Link to FMEDDW")
    Set xlSh5 = xlWB3.Sheets("Balance Pivot (Fund Level)")
    Set xlSh6 = xlWB3.Sheets("Funding Int Review Pivot")
    xlApp3.Visible = False
    xlApp3.ScreenUpdating = False
    xlApp3.DisplayAlerts = False
xlSh4.Activate
LastrowF = xlSh3.Range("A" & xlSh3.Rows.Count).End(xlUp).Row
xlSh4.Range("AG2").Select
xlCopy1 = xlSh4.Range("AG2").Formula
xlSh4.Range("AG2").Formula = xlCopy1: xlSh4.Range("AG2:AG" & LastrowF).FillDown

运行时,它将公式复制到最后一行,但它返回全 0(零)。

这个公式已经是excel单元格AG2了。正在复制的公式:

=IF(J2="0100QP1D20",0,IF(F2="","",IF(AND(F2<>"",F2="4610",D2<>"GASD"),N2,0)))

现在,如果我使用 excel 宏工作簿,这是我正在使用的 vba 行:

Sheets("Data Link to FMEDDW").Select
Range("AG2").Select
    Lastrow = Worksheets("Copied-FMEDDW-Data").Range("A" & Rows.Count).End(xlUp).Row
    Selection.Copy
Range("AG2:AG" & Lastrow).PasteSpecial xlPasteFormulas

从 excel 宏工作簿运行时,这非常有效。它返回值(美元金额)。

一个小小的背景故事。excel 正在从大约 5k 条或更多记录的报告中更新,并且每天都在增长。我已添加列 AG 以返回所述公式的值。任何帮助是极大的赞赏。谢谢你。

标签: excelvbams-access

解决方案


错误可能在 F2="4610" 中。这是一个字符串,4610 是一个数字。尝试像 Value(F2)=4610 as number 或 TEXT(F2,0) = "4610"


推荐阅读