VBA循环,通过列重复公式

问题描述 投票:0回答:3

我试图在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")

有什么方法可以用循环来做到这一点吗?

excel vba loops repeat
3个回答
0
投票

如果你想使用循环,你可以使用类似下面的代码:

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"实现什么配方?


0
投票

我想提高英语水平,我发誓......

我会做这样的事情:

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

希望这可以帮助。


0
投票

您不需要循环删除公式。您只需要知道最后一行的位置!


选择一个最有可能代表你最后一行的列(我在我的例子中使用的是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
© www.soinside.com 2019 - 2024. All rights reserved.