Sumar dato repetido en celda..

Hola expertos tengo el sig problema:
Tengo una tabla así:
codigo cant descrip valor
123 jugo 1000
345 pan 200
... Etc
El campo código y cant se digitan manualmente y con la función búsqueda traigo los demás datos DESCRIP y VALOR de una hoja que tengo en el mismo libro de excel...
Mi pregunta es... Si después de POR registros vuelvo a digitar por ej 123... Como puedo hacer para que me diga que el código ya lo digite... ¿y me lo sume a la cant.?
EJ:
123 1 jugo 1000
345 2 pan 200
... Y al digitar de nuevo
123
Quede así:
123 2 jugo 1000
345 2 pan 200
Gracias a todos por su respuesta..!

1 Respuesta

Respuesta
1
Abre el editor de visual basic (ALT + F11)
Desde el editor selecciona la hoja en que editaras los códigos. Dale doble click
Se te abrirá una ventana en blanco, en ella pega este script:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
On Error Resume Next
Target.Offset(0, 1).Value = Application.WorksheetFunction.CountIf(Range("A2", Target.Offset(0, 0)), Target.Value)
If Target = "" Then Target.Offset(0, 1).Value = ""
End Sub
en este ejemplo, debes considerar lo siguiente:
Para efectos de prueba he tomado la columna A como la columna en donde pones códigos "123"... etc. y he considerado la fila 1 como rótulos, por sonsiguiente si la columna en donde tu editas el código es diferente a la A debes modificar las siguiente lineas:
If Target.Column <> 1 Then Exit Sub en donde 1 es la columna A si tu editas en columna C pues el 1 lo reemplazas por el valor 3
ademas cambias esto:
Target.Offset(0, 1).Value = Application.WorksheetFunction.CountIf(Range("A2", Target.Offset(0, 0)), Target.Value)
En ves de "A2" pones "C2"
Lo que hace el script es lo siguiente:
Toma el rango inmediatamente superior a la celda que editas es decir si estas en A10 entonces selecciona desde A10 hasta A2 y "cuenta" las coincidencias del valor que editaste ("Target") y el valor lo devuelve el la columna de la derecha en este caso del ejemplo en B.
Bueno.
Gracias por tu respuesta... pero no quedo bien en el sentido que
Si dígito de nuevo 123 queda así:
456 1 pan 200
123 1 jugo 1000
123 2 jugo 1000
Y debería quedar es así:
456 1 pan 200
123 2 jugo 1000
El campo cantidad debería sumarse al primer registro encontrado.
Ok.
¿Pues entonces donde digitas el código?, ¿Si lo haces progresivamente linea a linea ( eso entendí) si te suma al código ya encontrado que haces con el nuevo código que ingresas?
Hola si dígito uno a uno los códigos...
Si lo encuentra Solo debería sumarlo al ya encontrado... y no duplicar la celda... solo dejar la que ya existe y si no existe dejarlo crear y ponerle en ese caso 1...
Y si más adelante vuelvo a digitar un código ya ingresado anteriormente que lo sume a la cant... en el ya encontrado...
No queda muy elegante, pero no se me ocurre de otra forma:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim v As Integer
Dim valor As Variant
valor = Target
If Target.Column <> 1 Then Exit Sub
On Error Resume Next
v = Application.WorksheetFunction.CountIf(Range("A1", Target.Offset(0, 0)), Target.Value)
If v > 1 Then
1:
Cells.Find(What:=valor, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
If Selection.Column <> 1 Then GoTo 1
Target = ""
Selection.Offset(0, 1).Value = Selection.Offset(0, 1).Value + 1
Else
If Target = "" Then Exit Sub
Target.Offset(0, 1).Value = Application.WorksheetFunction.CountIf(Range("A2", Target.Offset(0, 0)), Target.Value): End
End If
If Target = "" Then Target.Offset(0, 1).Value = ""
Target.Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas