1

我正在寻找一些将查看 A 列的代码,只要 A 列中的单元格不为空,则 B 列中的相应单元格将等于特定值。

因此,如果 Cell A1 <> "" 那么 Cell B1.Value = "MyText" 并重复,直到 A 列中的单元格为空白或空。

为了更清楚地说明,我查看了这里提出和回答的各种循环问题。他们有点帮助。但是,我不清楚如何让循环通过 A 列以验证 A 列中的每个单元格不是空白并且在 B 列中的相应单元格中添加一些我指定的文本。

此外,这将需要是 VBA 宏的一部分,而不是单元格公式的一部分,例如 =IF

4

4 回答 4

6

如果你真的想要一个 vba 解决方案,你可以遍历这样的范围:

Sub Check()
    Dim dat As Variant
    Dim rng As Range
    Dim i As Long

    Set rng = Range("A1:A100")
    dat = rng
    For i = LBound(dat, 1) To UBound(dat, 1)
        If dat(i, 1) <> "" Then
            rng(i, 2).Value = "My Text"
        End If
    Next
End Sub

*编辑*

您可以像这样循环遍历范围,而不是使用变体:

Sub Check()
    Dim rng As Range
    Dim i As Long

    'Set the range in column A you want to loop through
    Set rng = Range("A1:A100")
    For Each cell In rng
        'test if cell is empty
        If cell.Value <> "" Then
            'write to adjacent cell
            cell.Offset(0, 1).Value = "My Text"
        End If
    Next
End Sub
于 2013-10-14T20:08:14.213 回答
4

另一种方式(在 VBA 中使用公式)。我想这也是最短的 VBA 代码?

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        .Range("B1:B" & lRow).Formula = "=If(A1<>"""",""My Text"","""")"
        .Range("B1:B" & lRow).Value = .Range("B1:B" & lRow).Value
    End With
End Sub
于 2013-10-15T05:42:44.460 回答
2

一个更简单的方法是:

Sub populateB()

For Each Cel in Range("A1:A100")
    If Cel.value <> "" Then Cel.Offset(0, 1).value = "Your Text"
Next

End Sub
于 2013-10-14T20:18:59.553 回答
1

使用函数 IF :

=IF ( logical_test, value_if_true, value_if_false )

于 2013-10-14T20:03:25.850 回答