¿Cómo listar una programación? ¿Cómo devolver las coordenadas de una matriz?

Tengo un Excel con dos hojas. La primera hoja “Programación” es una programación de inspecciones a empresas donde la primera columna indica la fecha y la primera fila los inspectores. Ej:

Alberto laura lucia juan josé

01-ene FRUITAR SAT

02-ene FRESBALIN                                                        PETETS FRU                                     FRUITARO

03-ene BAS FRUITS

04-ene AUROFRU FRUPES

05-ene                                                                                                            EXPOCARNE     

06-ene                                              FRUTITO                                                                         FRUITAS

La segunda hoja “Resumen” es un resumen de las inspecciones realizadas por los distintos inspectores y en qué fechas las han realizado. La primera columna indica la empresa, la segunda la fecha de inspección y la tercera el inspector.

Empresa fecha inspector

FRUITAR SAT 1-ene ALBERTO

FRESBALIN 2-ene ALBERTO

PETETS FRU 2-ene LUCIA

FRUITARO 2-ene JOSÉ

BAS FRUITS 3-ene ALBERTO

AUROFRU 4-ene ALBERTO

FRUPES                              4-ene                   LAURA

EXPOCARNE                      5-ene                   JUAN

FRUTITO                            6-ene                   LAURA

FRUITAS                             6-ene                   JOSÉ

Lo que se pretende hacer es encontrar una fórmula para la hoja “Resumen” que encuentre las empresas incluidas en la programación y las liste con el nombre, fecha e inspector, y de esta manera se complete el resumen automáticamente.

Para la columna EMPRESA de la hoja “Resumen”, lo he intentado con:

=BUSCAR(1;1/(Programación!B2:F2<>"");Programación!B2:F2)

Pero cuando hay más de una empresa por día sólo sale la de más a la derecha y las demás las omite, aparte de que cuando hay un día sin actividad da error.

Para las columnas FECHA e INSPECTOR, lo he intentado con las fórmulas BUSCARV, BUSCARH, DIRECCION, COINCIDIR, INDICE, etc. Para dar con las coordenadas de la empresa en la matriz PROGRAMACIÓN pero no me sale.

A ver si alguien tiene alguna idea.

1 Respuesta

Respuesta
2

Si tuvieras datos en tu resumen, por ejemplo la empresa y la fecha, podrías ir a tu primera matriz y obtener al inspector, pero si en tu hoja resumen no tienes datos y pretendes armar todo con fórmulas, lo veo muy complicado.

Lo más viable sería hacer una macro para obtener todas las empresas, las fechas y los inspectores.

Si quieres que te ayude con la macro, envíame tu archivo con ejemplos de las 2 hojas.

Buenos días Dante Amor,

Te he enviado un correo con el archivo con ejemplos en las 2 hojas. Gracias por la ayuda ofrecida.

Saludos. Trebla Dos

Te anexo la macro para la facturación

Sub Resumen()
'Por.Dante Amor
    Set h1 = Sheets("PROGRAMACIÓN")
    Set h2 = Sheets("FACTURACIÓN")
    uf = h1.Range("A" & Rows.Count).End(xlUp).Row
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u2 = 1 Then u2 = 2
    h2.Range("A2:E" & u2).ClearContents
    '
    For Each c In h1.Range(h1.Cells(2, "D"), h1.Cells(uf, uc)).SpecialCells(xlCellTypeConstants, 23)
        Select Case Left(c.Value, 5)
            Case "FESTI", "VACAC", "CURSO", "REUNI", "DIAS P"
            Case Else
                If c.MergeCells Then
                    valor = c.Value
                    If c.Value <> "" Then
                        i = c.MergeArea.Cells(1, 1).Row
                        f = c.MergeArea.Rows.Count + i - 1
                        n = c.MergeArea.Rows.Count
                        llenar h1, h2, c.Value, i, f, n, c.Column
                    End If
                Else
                    llenar h1, h2, c.Value, c.Row, c.Row, 1, c.Column
                End If
        End Select
    Next
    h2.Select
    MsgBox "Facturación terminada", vbInformation
End Sub
Sub llenar(h1, h2, c, i, f, n, col)
'Por.Dante Amor
    u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Cells(u, "A") = c
    h2.Cells(u, "B") = h1.Cells(i, "A")
    h2.Cells(u, "C") = h1.Cells(f, "A")
    h2.Cells(u, "D") = n
    h2.Cells(u, "E") = h1.Cells(1, col)
End Sub

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Saludos. Dante Amor

No olvides valorar la respuesta.

¡Muchísimas gracias!

Buenos días Dante Amor,

Ante todo, decirte que la macro que me pasaste me ha ayudado mucho para ahorrarme tiempo en la gestión. Muchas gracias.

Hay un detalle que no te comenté cuando te pedí ayuda, y es que, me gustaría que cuando en la hoja PROGRAMACIÓN una empresa está marcada en rojo (la letra, no el fondo), cuando ejecutase la macro, en la hoja FACTURACIÓN también saliera en rojo. Lo he intentado con un par de ejemplos que he encontrado en foros, pero creo que no lo estoy poniendo en el sitio correcto.

Podrías crear una nueva pregunta con lo que necesitas. Si lo deseas, al final del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas