Excel VBA:使用if条件连接公式

时间:2017-03-20 12:53:01

标签: excel vba concatenation formula

我正在尝试使用以下编码根据条件连接单元格。它会引发语法错误。你能帮我纠正一下这个代码,还是我需要使用不同的方法。

请求:

enter image description here

代码:

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

End Sub

2 个答案:

答案 0 :(得分:1)

首先,您需要在公式字符串中加倍"

其次,您需要完全限定嵌套在Cells声明中的所有Rows.CountRangeWith Worksheets("sheet1")个对象。

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

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

答案 1 :(得分:1)

这是更新的代码..问题是关于lastrow的定义,并感谢@ Gary的学生和@Shai Rado对您的公式提出了宝贵的建议..

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