excel vbaB列输入公式=J2*10+K2,公式行数变化
时间: 2024-09-30 15:10:35 浏览: 33
在Excel VBA中,如果你想要将公式`=J2*10+K2`应用到B列的每一个单元格,并且这个公式行数会随着J和K列数据的变化而动态更新,你需要编写一个循环来遍历每一行。例如,你可以使用For Each循环来完成这项任务,假设你想从第二行开始复制这样的公式,因为J2和K2是从第二行开始存在的。
```vba
Sub CopyFormulaToBColumn()
Dim ws As Worksheet ' 假设你在一个工作表上操作
Set ws = ThisWorkbook.Sheets("Sheet1") ' 替换为实际的工作表名
Dim lastRow As Long ' 获取最后一行的实际行号
lastRow = ws.Cells(ws.Rows.Count, "J").End(xlUp).Row
For i = 2 To lastRow ' 开始于第二行(因为J2和K2通常在第二行)
ws.Range("B" & i).Formula = "=J" & i & "*10+K" & i ' 设置B列对应的单元格公式
Next i
End Sub
```
这段代码会在J列的最后一个非空单元格所在的行数范围内,逐行复制并设置B列的公式。如果J和K列的行数有所增加,只要运行该宏,公式就会相应地更新。
相关问题
excel vba根据A列数据,在相应的B列输入公式=J2*10+K2,公式行数变化
在Excel VBA中,如果你想根据A列的数据动态生成B列的公式,你可以使用For Each循环来遍历每一行。假设A列为第一列,B列为第二列,并且你的数据从J2和K2开始计算。以下是VBA代码的一个示例:
```vba
Sub GenerateFormulas()
Dim ws As Worksheet ' 设置工作表变量
Set ws = ThisWorkbook.Worksheets("Sheet1") ' 将"Sheet1"替换为你实际的工作表名
Dim rngA As Range ' A列范围
Dim rngB As Range ' B列范围
Dim i As Long ' 行号计数器
' 定义A列和B列范围
Set rngA = ws.Range("A1").CurrentRegion.Columns(1)
Set rngB = ws.Range("B1").Resize(rngA.Rows.Count) ' 动态生成B列的范围
' 遍历A列,生成并输入公式
For Each cell In rngA
If Not IsEmpty(cell.Value) Then ' 检查单元格是否为空
rngB.Cells(i, 1).FormulaR1C1 = "=RC[-1]*10+RC[-2]" ' 输入公式
i = i + 1 ' 行号递增
End If
Next cell
End Sub
```
在这个例子中,你需要将`Sheet1`替换为你实际的工作表名称,并且确保运行该宏之前A列和B列都已经存在于你的工作表上。
阅读全文