Excel VBA:如果条件连接公式

我正在尝试使用下面的代码来连接基于标准的单元格。它引发了一个语法错误。 你能帮我纠正这个代码,或者我需要使用不同的方法。

请求:

在这里输入图像说明

码:

Sub Conc() Dim lastrow As Range Dim str As String With Worksheets("sheet1") lastrow = .Cells(Rows.Count, "A").End(xlUp).Row Range("F2").Select Range("F2:F" & LastRow).Formula = "=IF(B2="aaa@to.com",CONCATENATE(E2," -",MID(A2,FIND("SECN",A2),14)),IF(B2<>"aaa@to.com",CONCATENATE(MID(A2,FIND("SECN",A2),14)," - ",C2)))" End With 

结束小组

首先,你需要加倍你的"公式string内”。

其次,您需要完全限定嵌套在With Worksheets("sheet1")语句中的所有CellsRows.CountRange对象。

第三,在设置Formula之前,不需要Select Range

 With Worksheets("sheet1") LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row .Range("F2:F" & LastRow).Formula = "=IF(B2=""aaa@to.com"",CONCATENATE(E2,"" - "",MID(A2,FIND("" SECN"",A2),14)),IF(B2<>""aaa@to.com"",CONCATENATE(MID(A2,FIND(""SECN"",A2),14),"" - "",C2)))" End With 

这里是更新后的代码..问题是与拉斯特罗定义和感谢@加里的学生和@Shai雷达对你的公式的宝贵意见..

 Sub Conc() Dim lastRow As Long With Worksheets("sheet1") lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row .Range("F2:F" & lastRow).Formula = "=IF(B2=""aaa@to.com"",CONCATENATE(E2,"" - "",MID(A2,FIND(""SECN"",A2),14)),IF(B2<>""aaa@to.com"",CONCATENATE(MID(A2,FIND(""SECN"",A2),14),"" - "",C2)))" End With End Sub