我正在尝试使用以下编码根据条件连接单元格。它会引发语法错误。你能帮我纠正一下这个代码,还是我需要使用不同的方法。
请求:
代码:
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
答案 0 :(得分:1)
首先,您需要在公式字符串中加倍"
。
其次,您需要完全限定嵌套在Cells
声明中的所有Rows.Count
,Range
和With 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