excel - 表中如何直接用VBA计算
问题描述
我正在尝试直接在 Excel 中计算。
步骤: - 从 Table1(日期)中创建没有重复的新表 - 从完成中的值中获取标题 - 如果日期和名称相等,则求和
这是一个带有公式的解决方案示例。
我知道解决这个问题很热,cFormula
但我无法直接使用 vba 找到快速且“易于编码”的解决方案。
Dim sbl As ListObject: Set sbl = ActiveWorkbook.Sheets(4).ListObjects("Tab_1") 'source table
Dim tbl As ListObject: Set tbl = ActiveWorkbook.Sheets(4).ListObjects("Tab_2") 'target table
MsgBox Application.WorksheetFunction.SumIfs(sbl.ListColumns(2).DataBodyRange, sbl.ListColumns(2).DataBodyRange)
End Sub
我得到了他的。但我找不到 otu 如何在“彼得”专栏中写作
有人可以帮助我或给我一个信息。
解决方案
我找到了解决方案,希望它适合您的需求!
Sub AddFormulaAndCopyToValues2()
Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets(1)
Dim sbl As ListObject: Set sbl = ws.ListObjects("Tab_1") 'source table
Dim tbl As ListObject: Set tbl = ws.ListObjects("Tab_2") 'target table
Dim tblRow As Integer: tblRow = tbl.Range.Row ' first row
Dim tblCol As Integer: tblCol = tbl.Range.Column ' first Column
Dim dateRng As Range: Set dateRng = sbl.ListColumns("Date").DataBodyRange
Dim doneRng As Range: Set doneRng = sbl.ListColumns("Done").DataBodyRange
' set rng to insert formula
Dim frmRng As Range: Set frmRng = tbl.ListColumns(2).DataBodyRange.Resize(tbl.ListRows.Count, 3)
' set rng to insert formula
Dim rCell As Range: Set rCell = tbl.HeaderRowRange(2, 2)
' Do calculations
Dim dateVal As Variant
Dim nameVal As String
For Each rCell In frmRng
dateVal = Cells(rCell.Row, tblCol).Value
nameVal = Cells(tblRow, rCell.Column).Value
rCell.Formula2R1C1 = Application.WorksheetFunction.CountIfs(dateRng, dateVal, doneRng, nameVal)
Next rCell
End Sub
推荐阅读
- sql - 一次插入某些记录
- typescript - 如何有条件地检测 TypeScript 中的“any”类型?
- vue.js - vue 项目中出现意外的关键字“导入”
- python - 几个小时前我才开始使用 Python 3,由于某种原因,在 time.sleep 之后我无法让 while True 循环工作
- button - JavaFX - 将图片插入按钮后,GridPane 行的高度增加
- python - Django 模板中的多个 for 循环(未嵌套),第二个不工作
- angular - Angular Universal SSR + Serverless Framework ReferenceError:触发 URL 时未定义事件
- c++ - 获取向量的最后一个元素并将其移动到另一个向量
- c++ - 学习互斥锁和线程 - 关于竞争条件的问题
- jupyter-notebook - 加载 rpy2 时出现 Jupyter OSError 0x7e