Encontrar la ultima columna con datos en una fila especifica

Necesito encontrar la ultima celda con datos de la fila 6 en una columna variable, luego tengo que retroceder una columna y copiar el dato que esta en dicha celda que vendría a ser "6, columna -1".

Favor si podrían ayudarme.

2 Respuestas

Respuesta
1

Te anexo el código

    ult_col = Cells(6, Columns.Count).End(xlToLeft).Column
    If ult_col > 1 Then
        ult_col = ult_col - 1
        dato = Cells(6, ult_col)
    Else
        cato = Cells(6, ult_col)
    End If

Si la última columna es la 1, no se le puede restar 1 porque enviaría error. Por eso puse el If


.

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

.

Avísame cualquier duda

.

Toma los datos de cualquier fila, creo que el problema puede estar en como lo pongo dentro de la macro final

Private Sub commandbutton1_click()
    '
    Application.ScreenUpdating = False
    '
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(Hoja1.Name)
    Set h4 = l1.Sheets(Hoja4.Name)
    '
    h1.Range("A2:H300").ClearContents
    h4.Range("A2:D300").ClearContents
    '
    ruta1 = "c:\datos\control de obra\"
    arch1 = Dir(ruta1 & "*.xlsx")
    '
    fil = 2
    Do While arch1 <> ""
        Set l2 = Workbooks.Open(ruta1 & arch1)
        Set h2 = l2.Sheets(1)
        h2.Columns("O:BF").Hidden = False
        fila = h2.Range("BG" & Rows.Count).End(xlUp).Row
        columna = h2.Cells(6, Columns.Count).End(xlToLeft).Column - 1
        h1.Cells(fil, "A") = h2.Cells(3, 4)         'copiar e insertar OT
        h1.Cells(fil, "B") = h2.Cells(2, 4)         'copiar e insertar datos Nombre
        h1.Cells(fil, "C") = h2.Cells(5, 2)         'Insertar codigo para fase
        h1.Cells(fil, "E") = h2.Cells(fila, 59)     'copiar e insertar datos ingenieria
        h1.Cells(fil, "F") = h2.Cells(fila, 141)    'copiar e insertar datos cortes
        h1.Cells(fil, "G") = h2.Cells(fila, 223)    'copiar e insertar datos armado
        h1.Cells(fil, "H") = h2.Cells(fila, 427)    'copiar e insertar datos pintura
        h1.Cells(fil, "I") = h2.Cells(6, columna)   ''copiar e insertar ultima fecha de ingenieria
        h2.Columns("O:BF").Hidden = True
        h1.Cells(fil, "d") = h1.Cells(fil, "a") & " - " & h1.Cells(fil, "b") & "  " & h1.Cells(fil, "C") 'concatenar ot-nombre-fase
        l2.Close False  'cierra el libro
        fil = fil + 1
        arch1 = Dir()
    Loop
    '
    'Copia porcentaje de envios
    ruta2 = "c:\rebajas_envios\"
    arch2 = Dir(ruta2 & "*.xls")
    fil = 2
    Do While arch2 <> ""
        Set l2 = Workbooks.Open(ruta2 & arch2)
        Set h2 = l2.Sheets(3)
        fila = h2.Range("DS" & Rows.Count).End(xlUp).Row
        h4.Cells(fil, "A") = h2.Cells(3, 3)         'copiar e insertar OT
        h4.Cells(fil, "B") = h2.Cells(2, 3)         'copiar e insertar datos Nombre
        h4.Cells(fil, "C") = h2.Cells(6, 1)         'copiar e insertar datos Fase
        h4.Cells(fil, "E") = h2.Cells(fila, 123)    'copiar e insertar datos Envios
        h4.Cells(fil, "d") = h4.Cells(fil, "a") & " - " & h4.Cells(fil, "b") & "  " & h4.Cells(fil, "C") 'concatenar ot-nombre-fase
        l2.Close False      'cierra el libro
        fil = fil + 1
        arch2 = Dir()
    Loop
    l1.Save
    MsgBox "Proceso terminado"
End Sub

Saludos

Esto que pusiste, lo veo bien, toma la columna de la última columna con datos de la fila 6.

Pero debes revisar si no hay espacios en blanco en esa fila 6 después de la última celda con datos

columna = h2. Cells(6, Columns. Count).End(xlToLeft). Column - 1

¡Gracias!

Revisando más a fondo pude encontrar el problema.

Pido disculpas por haber formulado la pregunta sin dar datos más concretos.

Respuesta
1

.03.05.17

Buenas, Lutz

Creo que faltó decir donde dejarías el dato copiado luego de identificar la última columna.

De todos modos esta rutina te indicará primero cual es esa última columna y, la instrucción siguiente pega lo copiado en la dirección que le indiques:

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub copUltCol()
LaFila = 6
Destino = "A10" 'celda donde pegar el contenido de la columna encontrada
'  
'Identifica última columna con dato:
'  
UltCol = ActiveSheet.Cells(LaFila, Columns.Count).End(xlToLeft).Column
'Copia celda anterior a la última columna y pega el contenido en destino
'  
ActiveSheet.Cells(LaFila, UltCol - IIf(UltCol = 1, 0, 1)).Copy ActiveSheet.Range(Destino)
End Sub

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas