Fórmula excel

Fórmula de excel para sacar de una matriz un listado por columnas, es decir en la columna A tenemos nombres de pieza y en la fila 1 conjuntos, y la matriz dice el numero de esas piezas que lleva cada conjunto. La fórmula debe sacar un listado en otra oja de cada conjunto diciendo que piezas y cantidad tiene.
Así tenemos en Columna A pieza 001, 002, 003 ... 00n
y en la fila 1 conjuntos D1, D2, D3 ... Dn
debo sacar un listado de D1 que me diga el nombre de la pieza de la Columna A i cantidad de piezas que lleva, otro listado D2 que me diga lo mismo, y aquellos valores que sean igual a 0 no deben salir
Yo he conseguido mediante la condición "Si" me saque un listado pero aquellos valores =0 me da un error porque la condición de la fórmula cuando es 0 no se como decirle que me la salte.
Gracias por vuestras soluciones

1 Respuesta

Respuesta
1
Prueba a utilizar la instrucción 'Contar' y 'Contar. SI'.
En principio, con la unión de ambas funciones y, como mucho, la función "SI()" podrías hacer lo que creo que quieres.
Si no te sale cuéntame más en detalle los listados que quieres sacar o sino miramos la forma para que me envíes un fichero de prueba y te lo prepare yo.
Esta serial la matriz que disponemos
                                    dk21          dk23           dk25            dk27
dk1810-17                       1                2               1                  2
dk1810-1a                       0                0               0                 1
dk1810-1b                       0                1               0                 1
dk1810-1c                      1                 0               0                  0
dk1810-1d                       2                1              2                   0
y estos los listados que nos tendrian que salir para poder realizar los despieces de los conjuntos con piezas compartidas.
dk21
1 dk1810-17
1 dk1810-1C
2 dk1810-1D
dk23
2 dk1810-17
1 dk1810-1b
1 dk1810-1d
dk25
1 dk1810-17
2 dk1810-1d
dk27
2 dk10-17
1 dk10-1a
1 dk10-1b
Gracias por tu tiempo
La forma más sencilla que se me ocurre es a través de una macro.
Suponiendo que los datos los tienes en una página que se llame 'datos' y queremos dejar el resultado en la página 'listados', el código sería el siguiente:
Option Explicit
Sub construirListados()
    Dim nLinDat As Integer
    Dim nColDat As Integer
    Dim nLinLis As Integer ' Número de línea escrita en listados
    Dim nomDk As String ' Nombre del DK
    Dim aux As Variant
    ' Borramos el contenido de la página de listados
    Sheets("listados").Cells.Delete
    nLinLis = 0 ' No hay nada escrito en la página de resultados
    ' Repetimos para cada columna
    For nColDat = 2 To Cells.SpecialCells(xlCellTypeLastCell).Column
        nomDk = Sheets("datos").Cells(1, nColDat)
        If nomDk <> "" Then
            If nLinLis > 0 Then nLinLis = nLinLis + 3 Else nLinLis = 1
            Sheets("listados").Cells(nLinLis, 1) = nomDk
            For nLinDat = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row
                aux = Sheets("datos").Cells(nLinDat, nColDat)
                If aux = "" Then aux = 0
                If aux <> 0 Then ' Ponemos el valor de la columna A
                    nLinLis = nLinLis + 1
                    Sheets("listados").Cells(nLinLis, 1) = aux
                    Sheets("listados").Cells(nLinLis, 2) = Sheets("datos").Cells(nLinDat, 1)
                End If
            Next nLinDat
        End If
    Next nColDat
    MsgBox "Proceso terminado"
End Sub
Primero que todo decirte muchas gracias por tu tiempo imagino que para ti debe de ser fácil el tema puesto que debes controlar el tema y mi problema debe ser sencillo (espero).
Por otro lado decirte que definitivamente soy tonto, no me funciona y estoy más que seguro que es culpa mía, porque me pierdo con la programación, supongo que debería especificar alguna linea pero no se cual.
Si te parece te mando el archivo y me dices donde tengo el error.
Finalmente otra vez muchas gracias
El código que te he mandado tienes que grabarlo en un módulo.
Entra en el editor de Visual Basic <Alt><F11> y crea un módulo con 'insertar - modulo'.
Después copia desde la línea 'Option Explicit' hasta 'End Sub'.
Con eso tendrás el código en tu hoja de cálculo.
Para ejecutarlo tienes que ejecutar la macro 'construirListado'. Para ello puedes entrar por 'Herramientas - Macro - Macros' o bien pulsando <Alt><F8>. Luego eliges la macro indicada y pinchas en <Ajecutar>
Es posible que tengas definido un nivel de seguridad muy alto y no te permita ejecutar las macros. Esto lo sabrás si al abrir el fichero excel, con el código ya grabado, si te pregunta o no si quieres habilitar las macros.
Si no te lo pregunta será porque el nivel es muy alto y debes bajarlo. Para ello entra en Herramientas - Opciones - Seguridad - Seguridad de Macros y ponlo en nivel medio.
En ese nivel, cuando vayas a abrir un libro de Excel que tenga macros te permitirá elegir si quieres habilitarlas o no (si quieres que se puedan ejecutar o no).
Si no habilitas las macros no te permitirá su ejecución.
Mira a ver si consigues que te funcione. Sino enviame la hoja de cálculo comprimida en "zip" y con una clave (ya me dirás cual) a [email protected] y me mandas un aviso por aquí para que consulte el correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas