Macro sumar capturas en diferentes celdas y/o hojas
Serian tan amables de ayudarme con una macro que al momento de capturar cantidades en diferentes celdas y/o hojas me vaya sumando, en una celda determinada, solo esas cantidades y no las que ya existían en dichas celdas.
1 Respuesta
Necesitas controlar el cambio en las distintas hojas, con el evento Change:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
Allí tendrás que indicar en qué rango se introducirán valores que deben ser acumulados. Por ej:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A2:K10"), Target) Is Nothing Then Hoja4.[A1] = Hoja4.[A1] + Target End If End Sub
Es decir, que en todas las hojas donde programes este evento se acumulará el contenido de la celda (por ejemplo en A1 de Hoja4) con el nuevo valor que introduzcas en la hoja. La celda A1 de hoja4 no debe estar incluída en el Change.
Por supuesto que habrá otros detalles que tendrás que evaluar. Si la hoja ya tiene otros eventos Change o que pasa si llegas a borrar un ingreso y lo volves a ingresar... Pero lo comentado hasta aquí responde a tu consulta.
Elsa, muchas gracias por tu pronta respuesta.
En general es lo que necesito solo que no se si es posible que solo sume los datos que capture en un determinado momento y no los que ya estaban con anterioridad. Por ejemplo, supongamos que inicio capturando,en diferentes celdas, los valores que tengo en una hoja de papel y que suman 100. Despues en otro momento y desde otra hoja capturo valores,en las mismas celdas anteriores, que suman 200. Lo que necesito es que solo me sume los de la segunda hoja y no me acumule los 100 de la primera. Esto es con el objeto de verificar que lo que capture corresponde al total de cada hoja.
Gracias y saludos.
¿Cómo sabrá Excel que ahora vas a iniciar una nueva numeración? ... Tendrás que limpiar la celda manualmente antes de iniciar una nueva carga. No justifica hacer una macro para eso... solo borrala.
Sdos y no olvides valorar la respuesta.
Elsa
Hola Elsa,
Me imagino que los signos que me enviaste son por el voto que te otorgue.
Después lo reconsidere y pensé que tal vez no me haya explicado adecuadamente, va de nuevo.
Lo de sumar las cantidades en una celda es correcto pero adicionalmente lo que necesito es que solo sume lo que capturo en un momento determinado y no acumule lo que ya estaba con anterioridad. Tratare de explicarlo con una sola celda,supongamos que el dia de ayer capture en la celda "A2" un valor igual a 100 y así finalize un evento, ahora el dia de hoy,antes de iniciar una nueva captura,borro los 100 que aparecen en la celda Hoja4.A1 y posteriormente capturo, en la misma celda "A2" lo correspondiente al dia de hoy y que es equivalente a 300, lo que necesito es que solo me aparezca en la celda "Hoja4.A1" esos 300 y no lo sume a los 100 que había capturado el día de ayer
Gracias y espero haberme explicado correctamente.
El evento Change guarda lo que 'cambias' en las celdas de ingreso.
Es decir que si ayer tenías 100 en A1-----------------100 se guardaron en Hoja4
Si hoy ingresas 300 en la celda --------------------- 300 se guardará en Hoja4.
¿Quizás lo que no queda claro es cómo capturas? O a qué llamas "... al momento de capturar...." o ''... posteriormente capturo, en la misma celda "A2" lo correspondiente al dia de hoy y que es equivalente a 300.
Si no lo haces manualmente el evento Change no es lo que necesitas. Y en ese caso debes iniciar una nueva consulta con todo bien aclarado y explicado.
Sdos!
Cuando hablo de "capturar" me refiero a ingresar manualmente los valores en las celdas comentadas. Lo que requiero es, como lo explique en mi primer consulta, es que, por ejemplo, el día de hoy tengo una serie de facturas de las cuales ingreso, manualmente, el importe de cada una de ellas en la celda "A2" y dichas facturas sumadas manualmente(en calculadora) suman 100 que es la cantidad que debiera de aparecer en la celda "Hoja4.A1". El objeto es checar que los ingresos manuales que realice son correctos. El día de mañana tengo otra serie de facturas diferentes que por por razones (mismo proveedor, mismo producto, etc) tengo que ingresar en la misma celda "A2" y que esta vez la suma manual es por 300 y es esta cantidad la que necesito que aparezca en la celda "Hoja4.A1" para volver a verificar que los valores ingresados manualmente corresponden al valor total de las facturas que es de 300.
Lo que la macro me arroja ahorita es que cuando, después de borrar manualmente, en celda "Hoja4.A1, los 100 correspondientes al primer ingreso, hago el segundo ingreso (300) en la celda "A2" el valor que me da la celda "Hoja4.A1" es 400 que es la suma de los primeros 100 más 300.
Gracias
Explicas nuevamente como si no te entendiera en tu consulta... que la tengo clara desde el inicio (un típico ejemplo de calculadora).
Pero no muestras dónde y cómo colocaste o ajustaste la macro que te envié.
Según tus palabras iniciales: '... capturar cantidades en diferentes celdas y/o hojas me vaya sumando, en una celda determinada...'
Para que sea en diferentes hojas la macro debe ir colocada en cada objeto HOJA donde vayas a ingresar datos que deben acumularse.
Para que sea en diferentes celdas de una misma HOJA se coloca en la hoja digamos HOJA1 y debes ajustar el rango de mi ejemplo, que quedó como A2:K10.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A2:K10"), Target) Is Nothing Then Hoja4.[A1] = Hoja4.[A1] + Target End If End Sub
Ahora, si como comentas en última entrada, solo vas a ingresar valores en una sola celda la macro quedaría así permitiendo que se vuelva a la celda A2:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then Hoja4.[A1] = Hoja4.[A1] + Target 'para que vuelva a posicionarse en la celda [A2].Select End If End Sub
Y en HOJA4 podrías colocarla también siempre y cuando el rango no ocupe la celda A1 que es donde se está acumulando.
Podés solicitarme el ejemplo (dejo imagen de mis correos) o dejarme un correo tuyo para enviártelo.
NOTA: o me podrías enviar tu libro y de paso reviso si no tenés otros eventos que estén afectando tus resultados.
Sdos.
Elsa
Te dejo mi correo: [email protected]
Gracias y saludos.
Ejemplo enviado. No dejes de comentar ... y si esto resolvió tu consulta no olvides mejorar tu valoración.
Sdos!
En el ejemplo que me hiciste favor de enviar en la hoja1.A2 ingresaste un valor de 10. Vamos a suponer que esa fue la carga del día de ayer y que ese valor aparece en la celda Hoja4.A1. El dia de hoy, primeramente borro los 10 que estaban en la celda Hoja4.A1 y después inicio una nueva carga en la celda hoja1.A2 con valor de 50(no borro los 10 que cargaste ayer porque necesito guardar el historial). El resultado que arroja la macro es 60 en celda hoja1.A2 y 60 en celda Hoja4.A1 cuando yo solo necesito que en Hoja4.A1 solo aparezca 50 que corresponde a la carga de hoy.
Saludos.
Ah... claro... Contame, y de paso así nos enteramos todos aquí, cómo lograste ingresar manualmente (así lo comentaste) una nueva cifra en Hoja1 A2 sin borrar la anterior... porque de ser así descubriste una nueva propiedad de las celdas Excel ! ! !
Entre tantas palabras reiteradas ahora agregaste un nuevo comentario: (no borro los 10 que cargaste ayer porque necesito guardar el historial) y aquí es EVIDENTE entonces de que no estás contando todo.
¿Por qué no muestras todas tus macros? ¿O me envias tu libro al correo? ¿O lo dejás en algún sitio pasándonos el link para que podamos descargarlo y descubrir lo que no comentas?
Sdos!
- Compartir respuesta