【问题标题】:How can I add across multiple sheets?如何跨多个工作表添加?
【发布时间】:2019-06-05 19:03:09
【问题描述】:

我正在尝试在单个工作簿的多个工作表中添加相同的单元格。几个参数:

  • 单元格将始终相同 (A4)
  • 我不确定我每个月会有多少张床单。
  • 存储为数字?

我试过用谷歌搜索,它总是有一个简单的求和公式。我正在寻找专门编写一个 VBA 函数来做到这一点。

Function AddAcrossSheets(rng As Range) As Variant

    valRow = rng.Row
    valCol = rng.Column


    For x = 1 To Sheets.Count
        AddAcrossSheets = Sheets(x).Cells(valRow, valCol).Value + AddAcrossSheets
    Next x


End Function

【问题讨论】:

  • 你为什么不创建一个结束选项卡和一个开始选项卡,然后编写一个单元格公式来总结三明治,例如'=SUM(Start:End!A4)'
  • 注意:如果Sheets 中的任何一个实际上是Chart,则此代码将出现错误438。考虑迭代 Worksheets 集合,...并使用明确的 Workbook 对象引用限定它,例如ActiveWorkbook.Worksheets

标签: excel vba


【解决方案1】:

请记住,始终在代码的最顶部添加Option Explicit。这将迫使您声明所有变量,从而使您免于各种麻烦。

我就是这样做的

Sub addAcrossSheets()
Dim sht As Worksheet
Dim totalSum As Double
totalSum = 0 'initialize the sum
For Each sht In ThisWorkbook.Worksheets 'loop through the collection of worksheets
    totalSum = totalSum + sht.Range("A4") 'update the sum
Next sht
Debug.Print totalSum 'the result is displayed in your immediate window
End Sub

现在,您可能希望从总和中排除一些工作表。你可以这样做:

For Each sht In ThisWorkbook.Worksheets 'loop through the collection of worksheets
    If sht.Name <> "Something" And sht.Name <> "Something else" Then 'exclude worksheets from the sum
        totalSum = totalSum + sht.Range("A4") 'update the sum
    End If
Next sht

【讨论】:

    【解决方案2】:

    如果它总是相同的位置 (A4),那么您可以硬编码它。

    valueFromA4 = Cells(4, 1).Value
    
    For i = 2 To Sheets.Count
        Sheets(i).Cells(4, 1).Value = valueFromA4
    Next i
    

    我建议在你的 for 循环中使用 i,这只是一个约定。大多数循环以 i = 0 开头,但 Excel 表格以 1 开头,因此您的第一张表格之后的表格将为 2。

    【讨论】:

    • 为了安全起见,我会使用 Dim valueFromA4 as String,以确保 Excel 不会将 valueFromA4 设置为 Range。 (...嗯,你使用它的方式可能并不重要,但最好是明确的)
    • 是的,这取决于您要如何使用它。如果您想要单元格中的字符串值,您可以将其调暗为字符串并使用 Cells(4, 1).value2,它将值抽象为没有格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多