Crear lista en Excel con función Si

Les paso a explicar:

Tengo una hoja en excel con una lista de productos, a medida que voy vendiendo los voy cargado ahí para que se sumen, lo que quiero hacer es que una ves sumados me valla generando una lista en otra parte de la hoja omitiendo los que están con valor 0.

Ej:

ColumnaA         ColomnaB      ColumnaC     ColumnaD    ColumnaE    ColF(suma)

Cremoso                      1                       2                                                                   3

Pategras                       2                                                                                            2

Barra                                                                                                                          0

Holanda                         1                     1                    1                      1                    4

Sardo                             5                      2                                                                  7

Brie                                                                                                                            0

Fontina                         1                                                                                           1

Quiero que se valla generando automáticamente una lista a medida que la columna F tiene valores mayores a 0.

Cremoso      3

Barra            2

Holanda       4

Sardo            7

Fontina        1

Así tendría que quedar.

1 Respuesta

Respuesta
3

H o l a:

Agrega la siguiente macro a los eventos de tu hoja

Private Sub Worksheet_Calculate()
'Por.Dante Amor
    Columns("M").ClearContents
    j = 2
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "F") > 0 Then
            Cells(j, "M") = Cells(i, "A")
            Cells(j, "N") = Cells(i, "F")
            j = j + 1
        End If
    Next
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Si o si es con macro? con la función si no se puede hacer?

Se puede hacer con la función SI, pero tienes que poner la fórmula en cada fila y en cada columna, por ejemplo, en la celda M2 pon la siguiente fórmula:

=SI(F2>0;A2;"")

Ahora pon la siguiente fórmula en la celda N2

=SI(F2>0;F2;"")

Copia las 2 fórmulas hacia abajo hasta el final de tus datos.


Gracias dante probé con la función si y funciona pero no me sirve porque en las filas de productos que no vendí me queda el renglón en 0 y necesito que estén todos los valores seguidos.

Y con la macro no me parece nada. Te paso bien los datos por las dudas.

La columna del total es la U, la de código del producto es la X y la lista se tendría que crear en la columna AF para el código y columna AG para el total.

Precisamente para eso es la macro, para quitar renglones vacíos.

Pero tus instrucciones de la pregunta es que en la columna F tenías la suma y en la A tenías el producto, y ahora pones otras columnas, es por eso que la macro no te pone nada.


Si no quieres la macro, entonces lo hacemos con fórmulas matriciales.

Sigue las instrucciones:

1. Pon la siguiente fórmula en la celda AF2

=SI.ERROR(INDICE($X$1:$X$5; K.ESIMO.MENOR(SI($U$2:$U$5>0; FILA()); FILA()-1));"")

2. Cambia en la fórmula el número 5 por la última fila que tengas con datos.

3. Copia la fórmula hacia abajo hasta la última fila con datos.

4. Selecciona todas las fórmulas desde la celda AF2 hasta la última fórmula que hayas puesto.

5. Presiona F2 y después presiona las 3 teclas al mismo tiempo:

Shift + Control + Enter

Notarás que las fórmulas quedaron entre llaves { }

6. Ahora pon la siguiente fórmula en la celda AG2

=SI.ERROR(INDICE($U$1:$U$5; K.ESIMO.MENOR(SI($U$2:$U$5>0; FILA()); FILA()-1));"")

7. Repite los mismos pasos del 2 al 5 pero con las fórmulas de la columna AG


No dante con la macro esta bien, yo puse otras columnas en el ejemplo, en mi archivos son las columnas que te pase después, de todas formas yo modifique las columnas en la macro pero no me aparece nada, seguramente le este errando en algo.

Pero fórmulas matriciales realizan lo que necesitas.

Si quieres que revise la macro y la actualice, crea una nueva pregunta y entonces me explicas con detalle cómo tienes los datos realmente.

Recuerda valorar esta respuesta.

Casi me funciona el único problema es que me pone en la lista el valor de 4 filas más abajo.

Por ejemplo:

En la fila 3 tengo vendido Código 9, 1 unidad

Y en la fila 7 tengo Código 11, 0 unidades vendidas

En la lista me parece 11 0

Las fórmulas están diseñadas para leer los datos empezando en la fila 2, suponiendo que en la fila 1 tienes un encabezado, pero como no sé realmente cómo tienes los datos no puedo establecer las fórmulas.

Ayudaría mucho si pones cómo tienes los datos, ya que de tu primer ejemplo al segundo, las columnas cambiaron.

Si puedes poner una imagen de tus datos en donde se vean las filas y las columnas de excel, con eso podría ayudarte con las fórmulas.

A disculpa, claro eso no lo aclare, los datos arrancan en la fila 3 las dos primeras son encabezado

Empieza de nuevo.

Te anexo las 2 fórmulas para AF3 y AG3

=SI.ERROR(INDICE($X$1:$X$6; K.ESIMO.MENOR(SI($U$3:$U$6>0; FILA()); FILA()-2));"")
=SI.ERROR(INDICE($U$1:$U$6; K.ESIMO.MENOR(SI($U$3:$U$6>0; FILA()); FILA()-2));"")

Cambia el 6 por la última fila con datos.

Repite los pasos que te envié.


¡Gracias! Ahora quedo de 10 Dante!!!

Hola dante, vos sabes que agregue artículos a la lista y las ultimas dos filas no la toma la macro y se borra toda.
Ahora tengo datos hasta la fila 145.
Yo lo puse asi:
=SI.ERROR(INDICE($U$1:$U$145; K.ESIMO.MENOR(SI($U$3:$U$145>0; FILA()); FILA()-2));"")
=SI.ERROR(INDICE($X$1:$X$145; K.ESIMO.MENOR(SI($U$3:$U$145>0; FILA()); FILA()-2));"")

H o l a:

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en todoexpertos, en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor", ahí me describes con detalle lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas