【问题标题】:Summing up a dynamic range of multiple columns and rows总结多列和多行的动态范围
【发布时间】:2017-06-27 14:17:46
【问题描述】:

我有一个特殊的问题,即不仅行和列中的值不断变化,有时行数也会变化;说30到70行之间的任何地方。我尝试了如下代码(我是 excel vba 的新手...),其中我能够将选定的代码复制到另一张纸上。这是因为,随着行的变化,每列的总和不正确,为了解决这个问题,我试图将数据从源工作表复制到另一个工作表。修复代码的任何帮助都很棒!..谢谢!

数据结构如下:

A   B   C
229 498 134
119 111 314
298 265 698
298 264 124
427 373 174
102 532 245

Excel VBA 代码

Sub dynamicRange()

Dim startCell As Range, lastRow As Long, lastCol As Long, Ws As Worksheet

Set Ws = Sheets("N_TS")
Set startCell = Range("A3")

lastRow = Ws.cells(Ws.Rows.Count, startCell.Column).End(xlUp).Row
lastCol = Ws.cells(startCell.Row, Ws.Columns.Count).End(xlToLeft).Column

Ws.Range(startCell, Ws.cells(lastRow, lastCol)).Select
Selection.Select
Selection.Copy Sheets("Sheet3").Range("A1")

End Sub

注意 - 它在 End Sub 上面,我不知道如何编写代码将所有列同时汇总为 Range...

【问题讨论】:

  • 那么,你想计算范围内所有条目的sum
  • 为了更清楚,我希望在同一列中看到每列的 SUM。正如我已经解释的那样,行更改(有时会减少 4 甚至 10 次,然后在一分钟左右的时间内添加。它基于用户的日志输入。希望我已经生动地解释了......谢谢你..

标签: excel excel-2007 vba


【解决方案1】:

不知道如何编写代码将所有列同时汇总为一个范围

删除最后三行并改为:

With Sheets("Sheet3").Range("A1").Resize(lastCol)
  .Formula = "=SUM('N_TS'!A3:A" & lastRow & ")"
  .Value = .Value
End With

【讨论】:

  • 您好,代码只计算了(?的SUM,无法理解下面是怎么来的......A1-1244, A2-1125, A3-827 为单列。其实,由于 N_TS 工作表的行随着数据流过而动态变化,我想将数据复制到最后一行到新工作表“3”,然后将工作表 3 中的所有列相加。这个公式不符合我的目的......
猜你喜欢
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多