Estoy tratando de usar la siguiente codificación para concatenar las celdas en función de criterios. Me arroja un error de sintaxis. ¿Pueden ayudarme a corregir este código o necesito usar un método diferente?

Solicitud:

enter image description here

Código:

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
Kelvin 20 mar. 2017 a las 15:53

2 respuestas

La mejor respuesta

Primero, debe duplicar su " dentro de la cadena de fórmula.

En segundo lugar, debe calificar completamente todos sus objetos Cells, Rows.Count y Range anidados dentro de su declaración With Worksheets("sheet1").

En tercer lugar, no es necesario Select el Range antes de configurar el 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
Shai Rado 20 mar. 2017 a las 13:10

Aquí está el código actualizado para ... el problema fue con la definición de lastrow y gracias @Gary Student y @Shai Rado por su valiosa sugerencia sobre la fórmula ...

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
1
0m3r 8 abr. 2017 a las 06:57