首页 > 解决方案 > 将范围总和粘贴到另一个单元格

问题描述

我正在尝试处理将范围地址复制到剪贴板的代码,当我粘贴它时,它会粘贴复制范围的总和。当我将我的范围复制并粘贴到同一个工作表时,下面的代码有效。当我将范围复制并粘贴到同一工作簿的不同工作表时,它也可以工作,只要我的范围是按顺序排列的。

但是,如果我的范围是例如A1,A3我想对单元格求和A1A3忽略单元格A2,那么我的代码只能在同一个工作表中工作。如果我尝试将非连续范围复制并粘贴到不同的工作表,我的结果是=+SUM(Sheet1!A1,A3)并且我希望我的结果是=+SUM(Sheet1!A1,Sheet1!A3).

这是我的部分工作代码:

Sub CopySum()
    Dim ObjData As New DataObject
    ObjData.Clear
    ObjData.SetText "+sum('" & Selection.Parent.Name & "'!" & Selection.Address(0, 0) & ")"
    ObjData.PutInClipboard
End Sub

请让我知道我应该进行哪些更改才能获得所需的结果。

标签: excelvbaexcel-formula

解决方案


如果您想更改=+SUM(Sheet1!A1,A3)=+SUM(Sheet1!A1,Sheet1!A3),只需将所有内容替换,,Sheet1!. 所以你的代码需要

ObjData.SetText "+sum('" & Selection.Parent.Name & "'!" & Replace$(Selection.Address(0, 0), ",", ",'" & Selection.Parent.Name & "'!") & ")"

其实我以为

Selection.Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True)

也应该返回Sheet1!A1,Sheet1!A3External:=True但显然存在一个错误,它返回显然不是人们所期望的(因为该方法只返回第一个作为外部的Sheet1!A1,A3没有任何意义)。address


推荐阅读