Excel VBA:只要在另一列中有一个值,就运行一个公式

我在A列有数据。我在B列有一个公式。

=CONCAT("Test",":",LEFT(A2,FIND("-",A2)-1)) 

只要列A中有数据,我就希望公式运行

 Column A Column B 3032-215 Test:3032 3031-158 Test:3031 4005-169 Test:4005 

我正在尝试写这个,所以只要列A中有数据,它就自动填充列B.

如果你想要一个VBA解决scheme,那么一个私人小组就可以做到这一点。 就像是:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A:A"), Target) Is Nothing Then Dim MyRange As Range, c As Range, LastRow As Integer LastRow = Cells(Rows.Count, 1).End(xlUp).Row Set MyRange = ActiveSheet.Range("A2:A" & LastRow) For Each c In MyRange If c.Value <> "" Then c.Offset(0, 1).FormulaR1C1 = "=concat(""Test"","":"",LEFT(RC1,4))" End If Next c End If End Sub 

根据需要将CONCATENATE改回CONCAT。

它现在只嵌套在IF函数中,首先检查单元是否为空。 如果没有,它做你想要的。 如果单元格空,则填充空白string。

 =IF(A2<>0, CONCATENATE("Test",":",LEFT(A2,FIND("-",A2)-1)), "") 

编辑:如果你担心空白string影响Excel是否看到“数据”的存在或不存在(这将是一个问题,如果你使用COUNTtypes的函数作为时间),那么没有办法解决这个问题,而不使用VBA不幸。