Excel 中数字求和的函数

Excel 中数字求和的函数

我想按照以下规则将 A 列中的每个数字与列中的每个数字相加,以得到 C 列中的数字。

规则:

  • A 列中的第一个数字加上 B 列中的最后一个数字,得到 C 列中的第一个数字

  • A 中的第二个数字加上 B 中的倒数第二个数字,得到 C 中的第二个数字

  • 等等

有人能帮我编写这个函数来执行这个操作吗?

我能做的是手动为每个总和编写一个函数,例如 A1 + B5、A2 + B4......

但这不是我想要的。我想要的是可以适用于所有人的东西。

谢谢。

在此处输入图片描述

答案1

让我们将其分为两个问题。一个是进行您描述的数学运算。另一个是自动化参数。如果您指定了行数和位置,则进行数学运算很容易。如果您想要一个包括确定这些参数的通用公式,则会变得复杂。

因此,我们假设您的数组从 A1 开始。我们将行数(本例中为 5)保留在 D1 中。为了简单起见,我们忽略处理空白和其他复杂情况。假设您有一个正确准备的数据块,并且您手动将 C 列中的公式复制到您需要的位置。

您可以在 C1 中使用此公式,然后将其复制到其他单元格:

=A1+INDIRECT("B"&$D$1+1-ROW())

INDIRECT 函数从文本和数学创建单元格引用。

另一种方法是使用 INDEX 函数:

=A1+INDEX(B$1:B$5,$D$1+1-ROW(),1)

这会将数据范围硬编码到公式中,这可能不是我们所希望的。INDEX 根据相对于范围的行和列返回指定范围的值。

答案2

我不知道您是否也想使用宏来执行此操作,但这里有一个使用宏的示例。

Sub Macro1()

    Range("B1").Select
    Selection.End(xlDown).Select

    Dim num1 As Integer, num2 As Integer, counter As Integer, amountOfRows As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    amountOfRows = ws.Range("B1", ws.Range("B1").End(xlDown)).Rows.Count

    num1 = Range("A1").Value
    num2 = ActiveCell.Value

       For counter = 1 To amountOfRows

          Cells(counter, 3) = num1 + num2

            If counter = 5 Then
            Exit Sub
            End If

          num1 = Range("A1").Offset(0 + counter, 0).Value
          num2 = ActiveCell.Offset(-counter, 0).Value


        Next

End Sub

答案3

进入 VBA 编辑器编写宏

根据使用的 VBA 版本,您可以使用它关联了解如何在 Excel 中添加 VBA 宏。

或者,您可以使用快捷键ALT+F11打开 VBA 编辑器 - 右键单击​​ Sheet 1(Sheet1),然后选择Insert Module


满足您要求的宏 - 交叉加法

您可以使用以下宏来执行 cross_addtion,如图片所示。

Sub cross_addition()
' find out the last cell in a series
a = Range("A" & Cells(Rows.Count, "A").End(xlUp).Row)
For i = 1 To a
    For j = a To 1 Step -1
        k = Cells(i, 1).Value + Cells(j, 2).Value
        Cells(i, 3) = k
        i = i + 1
    Next j
Next i
End Sub  

该宏假定您要添加的数据位于 A 列和 B 列中,而 C 列将是输出列。因此,请根据您的要求修改代码。

相关内容