我试图在VBA中复制excel中的简单函数,它允许您通过整个列重复一个函数,并在侧面的列为空时停止。具体来说,我想为列的整个相关部分重复if - else if函数
这是一个不起作用的尝试
Sub RepeatIfElseif
Range("A1").Select
If selection > 0 Then
Range("B1").Select
ActiveCell.FormulaR1C1 = "X"
Range("A1").Select
ElseIf selection <= 0 Then
Range("B1").Select
ActiveCell.FormulaR1C1 = "Y"
End If
Range("B1").Select
selection.AutoFill Destination:=Range("B1:B134")
有什么方法可以用循环来做到这一点吗?
如果你想使用循环,你可以使用类似下面的代码:
For i = 1 To 134
If Range("A" & i).Value > 0 Then
Range("B" & i).FormulaR1C1 = "X"
Else
Range("B" & i").FormulaR1C1 = "Y"
End If
Next I
它可以在没有循环的情况下完成,例如:
Range("B1:B134").Formula = "=IF(A1>0," & Chr(34) & "X" & Chr(34) & "," & Chr(34) & "Y" & Chr(34) & ")"
不确定你想用.FormulaR1C1 = "Y"
实现什么配方?
我想提高英语水平,我发誓......
我会做这样的事情:
dim row as long
dim last_row as Long
last_row = ActiveSheet.Range("A1048576").End(xlUp).Row
For row = 1 to last_row
If Range("A" & row).Value > 0 Then
ActiveSheet.Range("B" & row).Value = "X"
Else
ActiveSheet.Range("B" & row).Value = "Y"
End If
Next row
希望这可以帮助。
选择一个最有可能代表你最后一行的列(我在我的例子中使用的是Column A
),然后你可以在没有循环的情况下在一行中动态下拉你的等式。
下面将填写A2 + 1
中的等式Column B
从第2行开始(假设你有一个标题行)到Column A
中最后一个使用的行
Option Explicit
Sub Formula_Spill()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update sheet!
Dim LR As Long
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row '<-- Update column!
ws.Range("B2:B" & LR).Formula = "=A2+1" '<-- Update formula!
End Sub