0

背景:我有一个函数,它需要几个范围作为输入并进行一些计算。它被广泛使用,所以我很想尽可能避免改变它。

但是,我现在需要使用相同的函数,但是对于其中一个范围,我需要让它在该范围的负等效项上运行。

我的问题是:有没有一种简单的方法来操作一个范围的副本?(在不更改电子表格中的基础源数据的情况下 - 我不能在那里将所有值变为负值,它只是计算中需要的)。

我尝试编写一个简单的函数(如下)。我不知道我是否以错误的方式考虑 VBA 范围,但是每当我分配它时,影响都会反映在源上(即,它是以按引用方式而不是按值方式执行的,如果这在这个上下文)

Function NegateRangeContents(rRange As Range) As Range
  Dim r As Range
  Dim rOutput As Range

  Set rOutput = rRange

  For Each r In rOutput
    r.Value = -r.Value
  Next r

  Set NegateRangeContents = rOutput
  Set r = Nothing
  Set rOutput = Nothing

End Function

我确实尝试用谷歌搜索来寻找答案,并在这里寻找类似的问题。

也许我错过了一些明显的东西,只是需要更多的咖啡?!任何建议都欣然接受!

4

1 回答 1

0

如果您当前的范围在Sheet 1,

  • 首先将其复制到Sheet2(或任何新的空工作表以具有该范围数据的副本)。
  • 将新的工作表范围输入到函数中
  • 接下来做你需要的计算。相应地输出。

至于获取单元格值的负值,请尝试以下操作:

For Each r In rOutput
    r.Value = r.Value - (r.Value * 2)
Next r

'-- eg. cell value = 2, the new value would be 2 - (2*2) = - 2

PS:真的不知道你的意思是我需要让它在范围的负等效值上运行。如果你能澄清它,我们也许能够提供一个具体的解决方案......

于 2013-02-01T15:03:33.970 回答