【问题标题】:VBA: How to populate one column with IF conditionVBA:如何用 IF 条件填充一列
【发布时间】:2017-10-18 17:31:14
【问题描述】:
所以这是我的问题。我有 3 列带有标题。对于这个例子,假设第一列是一个普通的文本字符串。第二个是可选字段,可以是空的,也可以是填充的。第三列是用以下规则填充的:如果第二列不为空,则第一列的前 2 个字母应自动填充到第三列。见下图。
Example table
对于函数,我所要做的就是将 =IF(B2 ""; LEFT(A2;2); "") -公式放入第 3 列中的所有单元格。但是有人可以告诉我如何在 VBA 中做同样的事情吗? (在这种情况下我别无选择使用该功能)。
编辑:感谢您的所有回答:)
【问题讨论】:
标签:
vba
excel
if-statement
populate
【解决方案1】:
Sub Macro1()
ActiveCell.FormulaR1C1 = "=IF(R[5]C[11]<>"""",LEFT(R[5]C,2),"""")"
'CHANGE C1:C38 TO THE RANGE OF YOUR THIRD COLUMN
Selection.AutoFill Destination:=Range("C1:C38"), Type:=xlFillDefault
End Sub
只需调整 C1:C38 以适合您的第三列范围
【解决方案2】:
应该这样做,
Sub test()
Sheets("Sheet1").Range("C1:C10").Formula = "=IF(C1 <> """", LEFT(C1,2), """")"
End Sub
【解决方案3】:
考虑到您显示的数据,试试这个...
Sub InsertFormula()
Dim lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
Range("C2:C" & lr).Formula = "=IF(N2 <> """", LEFT(A2,2), """")"
End Sub
上面的代码假设数据在A列和B列,你需要根据N列将公式从Row2开始放在C列中。
【解决方案4】:
Public Function myThirdColumn(myFirstColumn, mySecondColumn)
If mySecondColumn <> "" Then
myThirdColumn = Left(myFirstColumn, 2)
Else
myThirdColumn = ""
End If
End Function