Como sumar un valor y buscar sin repetir?

Espero y me puedan ayudar.

Tengo la producción por día, y en la columna de código es el producto con defecto de calidad

En "G5" si pongo el defecto, me pone la suma del defecto en toneladas dependiendo el día ( en fecha "N2")

En la columna E en condición pone 1 a la fecha en N2

Pero como puedo hacerle para que depende la fecha o la. Condición 1

Me traiga los defectos de ese día. Así en toneladas sume las toneladas.

Lo. Que no encuentro es como traer eso, los defectos y que no los repita

No se si me. Entiendan y me puedan ayudar.

Se que se puede con tabla dinámica, pero al no haber producción el filtro de condición 1 se quita y al cambiar la. Fecha no pone los datos y tengo q poner de nuevo en la tabla dinámica el filtro 1

Respuesta

¿Cómo estas?, no entiendo muy bien que quieres hacer, me podrías explicar mejor

En la celda G5 busque el código de defecto de ese día 

Pero que en G6 igual busque el defecto 

Pero si ya esta en G5 busque el siguiente y no el mismo 

¿Pero cómo haces para buscar en g5? ¿Lo digitas tu? ¿Con qué frecuencia cambian esos códigos? ¿Son estáticos? Facilitarme la fórmula que usás para hacer la búsqueda y la sumatoria

H5 tiene esa fórmula, para buscar la suma de ese código. 

En la. Columna E le pone 1 a los q complain con la. Fecha en H3

Lo que busco es eso. 

Como pones los códigos de B  en G5 con solo poner la fecha 

Eso es lo que no logro hacer. Que me busque el código con la. Fecha 

Y en la. Siguiente celda no repita el mismo 

Y si son son del mismo día 

Ponga en G6 el. Siguiente código. 

Lo único que se me ocurre es una macro que valide cada código, lo que no entiendo es para que sirve la condición

La condición se pone en 1 para el producto que salió en el día. Que están en fecha.

La. Fecha que está en H2 es =HOY() 

Así que la base de satos es más grande

Pero yo solo quiero que me de los defectos del día y la suma de esos defectos.

Con una tabla dinámica lo hago.

Pero al cuando hay algún día que no hay de defectos, el filtro del la tabla dimanica se quita, y al otro día al ver de nuevo si hay defectos la tabla no me. Muestra los defectos si no, hasta que yo le ponga el filtro de condición 1

Lo que busco es una fórmula, si es que la hay.

Que me aparezca los códigos de defectos sin repetir del de fecha puesta en H2

Osea, que la. Sintaxis sea. En G5 me. Pondrá el código de defecto que salió en la fecha de H2. Y en H5 la suma de lo que salió ese día. Con ese código

En G6 me pondrá el siguiente código, y así,

Pero que busque o ponga el mismo código.

La verdad no conozco una formula que busque en base a un criterio pero que al mismo tiempo distinga si ahí valores distintos, eso creo que se debe hacer con una macro, en un vector se podría todo los códigos que tenga B y después buscar cuantos códigos ahí para buscarlos en el archivo teniendo en cuenta la fecha que se desea buscar, ¿me queda la duda que en la columna B ahí celdas que no tienen código esos también se deberían contar o se ignoran?

La solución que encotre a tu problema fue esta:

Sub ContarX()
Dim i, x, y As Integer
Dim cod, fecha As String
Dim suma As Double
x = 4
'Se ordena el archivo por la columna de codigos
With Sheets("hoja1").Cells(2)
.Sort key1:=.Cells(2), Header:=xlYes
End With
'Se quitan los duplicados para poder buscar en el archivo los distintos codigos y sumarlos
Range("B2:B1048576").Select
Selection.Copy
Range("K2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("$K$2:$K$1048576").RemoveDuplicates Columns:=1, Header:=xlNo
cod = Range("B2").Value
fecha = Range("H3").Value
'Se recorre la columa de cdigos para conseguir los codigos a sumar en relacion con la Columna K
MsgBox ActiveSheet.Cells(Rows.Count, "K").End(xlUp).Row - 1
For y = 1 To ActiveSheet.Cells(Rows.Count, "K").End(xlUp).Row - 1
cod = Range("K" & y + 1).Value
suma = 0
For i = 2 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If cod = Range("B" & i).Value And fecha = Range("C" & i).Value Then
'Se colocan los valores que va encontrando
Sheets("hoja1").Range("G" & x).Value = Range("B" & i - 1).Value
suma = suma + CDbl(Range("D" & i).Value)
Sheets("hoja1").Range("H" & x).Value = suma
End If
Next
x = x + 1
Next
Range("K2:K1048576").Select
Selection.Delete
End Sub

Hace precisamente lo que quieres, validala y me comentas, no olvides valorar la respuesta si queda resuelto tu problema.

1 respuesta más de otro experto

Respuesta
2

No entendí muy bien si ya tendrás los defectos en col G . Sino, de modo manual podés copiar la col B y pegarla a partir de G5. Luego desde menú Datos, Quitar duplicados te dejará valores únicos.

Y en la col de Toneladas irá esta fórmula en H5 que luego arrastrarás al resto de la col:

=SUMAR.SI.CONJUNTO(D:D;B:B;G5;C:C;$H$2)

Sdos y no olvides valorar las respuestas si el tema queda resuelto (opciones: Excelente o buena)

Si, pero que me ponga el código de defecto al poner la fecha 

Y que abajo si hay otro código de defecto no ponga el. Mismo. 

La. Finalidad es que me ponga los códigos de defecto que salieron ese día. 

Me explico? 

Te paso la macro que necesitas.

- Ingresa al Editor de macros con teclas ALT y F11

- Inserta un módulo y allí copia el siguiente código:

Sub codigosUnicos()
'x Elsamatilde
'previamente se limpia el rango de tabla resultados
If [G5] <> "" Then Range("G5:H" & Range("G" & Rows.Count).End(xlUp).Row).Clear
'si no hay autofiltros aplicados se los coloca
    If ActiveSheet.AutoFilterMode = False Then
        [A1:E1].AutoFilter
    'si la hoja está filtrada se muestran todos los registros
    ElseIf ActiveSheet.FilterMode = True Then
        ActiveSheet.ShowAllData
    End If
'se filtra x fecha y código <> vacío
    X = Range("A" & Rows.Count).End(xlUp).Row
    ActiveSheet.Range("$A$1:$E$" & X).AutoFilter Field:=5, Criteria1:="1"
'si no hay registros filtrados finaliza
    If Range("A" & Rows.Count).End(xlUp).Row = 1 Then
        MsgBox "No hay datos con estos criterios"
        Exit Sub
    End If
'si hay registros encontrados se los copia en col K
    Range("B1:B" & Range("A" & Rows.Count).End(xlUp).Row).Copy Destination:=[K1]
'se quita el filtro
    ActiveSheet.ShowAllData
'se quitan duplicados
    ActiveSheet.Range("K:K").RemoveDuplicates Columns:=1, Header:=xlYes
'se pega en rango G
    Range("K2:K" & Range("K" & Rows.Count).End(xlUp).Row).Copy Destination:=[G5]
'se coloca la fórmula
    [H5].FormulaR1C1 = "=SUMIFS(C[-4],C[-6],RC[-1],C[-5],R2C8)"
'si hay más de 1 registro se arrastra al resto de la col
    y = Range("G" & Rows.Count).End(xlUp).Row
    If y > 5 Then [H5].AutoFill Destination:=Range("H5:H" & y), Type:=xlFillDefault
'se limpia rgo auxiliar
    [K:K].Clear
Range("G5").Select
MsgBox "Fin del proceso"
End Sub

Utiliza una col auxiliar que en mi ejemplo es K.

El código va explicado paso a paso por lo que podrás ajustarlo ante cualquier cambio de ubicación de datos.

Para ejecutar lo macro podrás asignarle un atajo de teclado o llamarla desde el menú Programador o Desarrollador. Estos temas los tengo más explicados en la sección Macros de mi sitio.

El resultado quedaría así:

Te recuerdo que esta consulta ya lleva un mes abierta. Debes valorarla (opciones: Excelente o buena) para darla por cerrada,

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas