excel - 访问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 以返回所述公式的值。任何帮助是极大的赞赏。谢谢你。
解决方案
错误可能在 F2="4610" 中。这是一个字符串,4610 是一个数字。尝试像 Value(F2)=4610 as number 或 TEXT(F2,0) = "4610"
推荐阅读
- kubernetes - Kubectl 查找 yaml 位置
- node.js - Firebase CLI 如何更改项目范围?firebase init(错误:403,调用者没有权限)使用另一个帐户的项目 url
- r - 在 R 中重新格式化 eval 的输出
- amazon-web-services - 无法通过 SSH EKS 工作节点
- c - 我可以使用函数在 C 中定义数组的长度吗?
- java - 点击时JMenuItem如何接收任务?
- android - 如何在 Android 中单击 ImageView 更改我的 Android 应用程序中的语言
- excel - 如何多次复制两个特定的行和列?
- ionic3 - 使用 Android 权限插件 Ionic 3 Angular 5 时,Object(...) 不是函数
- c# - 如何避免匹配以#开头的数字字符串?