Concatenar en Macro de VB

Hoy Dante me ayudo con una macro que les copio. Y luego les realizo la consulta.

Sub busquedavertical2()

Dim cont As Long 'Controla cual es la ultima linea
Dim ultlinea As Long
Dim CTA As Variant 'Extrae el numero de cuenta
Dim NivelSCBS As Variant 'va a traer el numero de cuenta
Dim rango As Variant 'es el maestro de cuentas
'extrae la ultima fila que tiene datos
ultlinea = Sheets("VENTASdw").Range("C" & Rows.Count).End(xlUp).Row
'define el rango que vamos a buscar
Set rango = Sheets("MAECTA").Range("A2:R217")
col = Sheets("VENTASdw").Range("Z1")
'ciclo que me recorre las filas para buscar las cuentas
For cont = 2 To ultlinea 'empieza a contar desde la fila 2
NivelSCBS = Sheets("VENTASdw").Cells(cont, 3) 'la cuenta que busco
'buscamos la cuenta en el maestro de cuentas
CTA = Application.VLookup(NivelSCBS, rango, col, False)
'sino encuentra que me de cero
If IsError(NivelSCBS) Then
NivelSCBS = 0
End If
Sheets("VENTASdw").Cells(cont, 9) = CTA
Next cont
MsgBox "Buscarv ejecutada exitosamente", vbInformation, "Buscarv"
End Sub

Lo que quiero que realice es que cada cuenta encontrada con "CTA = Application.VLookup(NivelSCBS, rango, col, False)" me concatene una celda (ej. "G2" ) que se encuentra en su misma fila.-

1 respuesta

Respuesta
2

H o l a: Te anexo la macro actualizada.

En estos casos es mejor, utilizar el método Find( ), de esa forma podemos obtener toda la información del dato encontrado, como la fila, la columna, la dirección, el color de la celda, el contenido de la celda, el nombre de la hoja, etc.

La búsqueda la realizo con el método Find( ), si encuentra la cuenta, entonces concatena el dato de la columna (número que tienes en la celda Z1), con el dato de la columna G. Si no encuentra la cuenta, entonces te pone un cero.

Como te había comentado, no es necesario declarar las variables. De esa forma reducimos el código y lo hacemos más simple.

Sub busquedavertical()
'Por.Dante Amor
    Set h1 = Sheets("VENTASdw")
    Set h2 = Sheets("MAECTA")
    col = h1.Range("Z1")
    For i = 2 To h1.Range("C" & Rows.Count).End(xlUp).Row               'ciclo desde la fila 2 hasta la última fila
        Set b = h2.Columns("A").Find(h1.Cells(i, "C"), lookat:=xlWhole) 'buscamos la cuenta en el maestro de cuentas
        If Not b Is Nothing Then
            h1.Cells(i, 7) = h2.Cells(b.Row, col) & h2.Cells(b.Row, "G")
        Else
            h1.Cells(i, 7) = 0
        End If
    Next
    MsgBox "Búsqueda ejecutada exitosamente", vbInformation, "Buscarv"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas