VBA – 如果列A中的单元格不是空白,则列B等于

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

因此,如果单元格A1 <>“”,则单元格B1.Value =“MyText”并重复,直到列A中的单元格为空或空。

为了增加一点澄清,我浏览了在这里提出并回答的各种循环问题。 他们有些帮助。 但是,我不清楚如何让循环通过列A来validation列A中的每个单元格不是空白,并在列B中的相应单元格中添加一些我指定的文本。

而且,这将需要成为VBAmacros的一部分,而不是像= IF这样的单元格公式的一部分

如果你真的想要一个vba解决scheme,你可以像这样循环遍历一个范围:

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 

* 编辑 *

而不是使用variables,你可以像这样循环遍历范围:

 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 

另一种方法(在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 

更简单的方法是:

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

使用函数IF:

=IF ( logical_test, value_if_true, value_if_false )