首页 > 解决方案 > 对传递给VBA中的函数的两个范围的差进行平方

问题描述

我对输出以及如何从 for 循环中的范围访问每个单元格感到困惑。例如,如果我的范围来自 A1:J1,那么我的第二个范围来自 A2:J2,在我的函数中,如何减去然后平方,然后将该答案放在 Excel 上突出显示的单元格中。我对 VBA 很陌生,我想帮助一个朋友。 这就是我的 excel 文档的样子 这是我被问到的问题

标签: excelvba

解决方案


在两行范围内平方差

  • 这是一种处理方式。
  • 它不会作为家庭作业,因为它只使用一个数组作为范围并且它被错误处理“污染”,但它可能会为你必须做的事情提供一些启示。
  • 测试它,看看它是否满足您的需求。
Option Explicit

Function getDiffsSquared( _
    ByVal rg As Range) _
As Variant
    Const ProcName As String = getDiffsSquared
    On Error GoTo clearError
    
    If Not rg Is Nothing Then
        Dim Data As Variant: Data = rg.Resize(2).Value
        Dim Result As Variant: ReDim Result(1 To 1, 1 To UBound(Data, 2))
        On Error Resume Next
        Dim c As Long
        For c = 1 To UBound(Data, 2)
            Result(1, c) = (Data(2, c) - Data(1, c)) ^ 2
        Next c
        On Error GoTo clearError
        getDiffsSquared = Result
    End If

ProcExit:
    Exit Sub
clearError:
    Debug.Print "'" & ProcName & "': Unexpected Error!" & vbLf _
              & "    " & "Run-time error '" & Err.Number & "':" & vbLf _
              & "        " & Err.Description
    Resume ProcExit
End Function

Sub getSquareDiffsTEST()
    Const rgAddr As String = "A1:J2"
    Dim rg As Range: Set rg = Range(rgAddr)
    rg.Resize(1).Offset(2).Value = getDiffsSquared(rg)
End Sub

推荐阅读