Saltar al contenido
publicado

Tengo una hoja en un excel que se llama Base de datos, la cual tiene una tabla que posee Equipo, Pozo, Día, Jornada, Actividad GBB y Cantidad de Horas realizadas, en ese mismo orden y otra hoja llamada Pozo 3 en donde la celda K2 tengo escrito el Pozo, y desde la celda E10 hacia la derecha tengo escrito distintas fechas, y abajo de estas fechas distintas jornadas (Esto está hecho en macro), necesito otro macro en esta hoja que busque la coincidencia del pozo, fecha, jornada y Actividad GBB tanto en la hoja Base de datos y la hoja de Pozo 3 y me coloque las Horas realizadas correspondiente a cada actividad GBB

Actividades para que busque las coincidencia son estas que:

  • MOV. HTA. (PRUEBAS)
  • MOV. HTA.(MEDICION POZO)
  • MOV. HTA. POR TRONADURA
  • MEDICION TELEVIWER

 

  • MEDICION DE POZO CLIENTE
  • ESPERA POR TRONADURA
  • MOV. SONDA POR TRONADURA
  • ESPERA DE ACCESO
  • ESPERA DE PLATAFORMA CLIENTE
  • ESPERA DE MEDICION CLIENTE
  • ESPERA DE INSTRUCCIONES CLIENTE
  • VIDEO POZO

tener en cuenta que las fechas y la jornada de la Hoja Pozo 3 se encuentran hacia al lado y no hacia abajo,.

Nose si quedo clara mi explicación. 

Ayuda plz :(

EXCEL EDP_1.xlsm

Featured Replies

publicado

Hola,

Estaba viendo los temas de la sección sin respuestas y llama la atención el suyo porque a pesar de tener tantas descargas al momento no ha tenido más participación. Una causa podría ser lo extenso.

Solo por darle una idea general a sabiendas que debe personalizar una opción de código podría ser así:

Sub BuscarCoincidencias()
    Dim wsBase As Worksheet
    Dim wsPozo As Worksheet
    Dim pozo As String
    Dim fecha As Range
    Dim jornada As Range
    Dim actividad As String
    Dim filaBase As Long
    Dim filaPozo As Long
    Dim columnaFecha As Long
    Dim columnaJornada As Long
    Dim actividades As Variant
    Dim i As Long
    
    ' Definir las hojas de trabajo
    Set wsBase = ThisWorkbook.Sheets("Base de datos")
    Set wsPozo = ThisWorkbook.Sheets("Pozo 3")
    
    ' Obtener el pozo de la celda K2
    pozo = wsPozo.Range("K2").Value
    
    ' Definir las actividades a buscar
    actividades = Array("MOV. HTA. (PRUEBAS)", "MOV. HTA.(MEDICION POZO)", "MOV. HTA. POR TRONADURA", _
                        "MEDICION TELEVIWER", "MEDICION DE POZO CLIENTE", "ESPERA POR TRONADURA", _
                        "MOV. SONDA POR TRONADURA", "ESPERA DE ACCESO", "ESPERA DE PLATAFORMA CLIENTE", _
                        "ESPERA DE MEDICION CLIENTE", "ESPERA DE INSTRUCCIONES CLIENTE", "VIDEO POZO")
    
    ' Recorrer las fechas en la hoja "Pozo 3"
    For Each fecha In wsPozo.Range("E10:BP10")
        columnaFecha = fecha.Column
        
        ' Recorrer las jornadas en la hoja "Pozo 3"
        For Each jornada In wsPozo.Range(wsPozo.Cells(11, columnaFecha), wsPozo.Cells(11, columnaFecha + 1))
            columnaJornada = jornada.Column
            
            ' Recorrer las actividades
            For i = LBound(actividades) To UBound(actividades)
                actividad = actividades(i)
                
                ' Buscar coincidencias en la hoja "Base de datos"
                filaBase = 2 ' Asumiendo que los datos empiezan en la fila 2
                Do While wsBase.Cells(filaBase, 1).Value <> ""
                    If wsBase.Cells(filaBase, 2).Value = pozo And _
                       wsBase.Cells(filaBase, 3).Value = fecha.Value And _
                       wsBase.Cells(filaBase, 4).Value = jornada.Value And _
                       wsBase.Cells(filaBase, 5).Value = actividad Then
                       
                        ' Colocar las horas realizadas en la hoja "Pozo 3"
                        wsPozo.Cells(15, columnaJornada).Value = wsBase.Cells(filaBase, 6).Value
                        Exit Do
                    End If
                    filaBase = filaBase + 1
                Loop
            Next i
        Next jornada
    Next fecha
End Sub

Le recomiendo ir por partes y seccionar su consulta en resultado por resultado.

Crear una cuenta o conéctate para comentar