答案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 列将是输出列。因此,请根据您的要求修改代码。