excel - sólo - Cómo sumar datos en una columna en base al mismo mes en otra columna usando macros
sumar valores repetidos en excel (4)
Estoy usando macros en excel 2007 para mi trabajo. Estoy trabajando con muchos datos y necesito sumar datos de 2 o más filas en el mismo artículo según el mismo mes. Sin embargo, la columna del mes se expresa como fecha.
por ejemplo, tengo una serie de datos
A B
2/10/2008 2
2/10/2008 3
4/10/2008 3
5/11/2008 4
5/11/2008 5
Quiero que el resultado se muestre en la columna C y D como se siguió
C D
Oct/08 8
Nov/08 9
Estoy muy agradecido si alguien puede ayudarme.
Saludos,
Tifu
Esto debería ser posible con fórmulas regulares de Excel:
- extraer el mes de la fecha (alguna función de mes)
luego haz una suma condicional (función sumwhen (?)) como esta:
= SumWhen (A: B, fecha de referencia, B: B) (con fecha de referencia = C2 C3, etc.)
(Todo lo que tengo es un alemán sobresaliente y los nombres de las funciones también se tradujeron, por lo que los nombres de mis funciones pueden estar desactivados. Tal vez alguien pueda compararlo con un inglés sobresaliente y actualizarlo si es necesario).
Si no está familiarizado con VBA, comenzaría registrando una macro mientras hace lo que desea hacer utilizando la función Subtotales en el menú Datos (es decir, a través de la interfaz de Excel).
Una vez que se graba la macro, puede mirar el código de VBA producido y modificarlo para adaptarlo a sus necesidades.
A B C D E F
1 10/ 1/2008 24106 1 Oct-08 24106 8
2 10/31/2008 24106 7 Nov-08 24107 11
3 11/ 1/2008 24107 8 Dec-08 24108 6
4 11/30/2008 24107 3
5 12/ 1/2008 24108 2
6 12/ 2/2008 24108 4
B1 =MONTH(A1)+YEAR(A1)*12
E1 =MONTH(D1)+YEAR(D1)*12
F1 =SUMIF(B$1:B$6,CONCATENATE("=",E1),C$1:C$6)
Tuve que superar dos problemas para resolver esto. Primero, SUMIF solo puede hacer una comparación directa, no puede ejecutar una función en la ubicación de origen (a excepción de las funciones de rango, que no son las funciones de fecha y hora), así que tuve que agregar la columna B. La columna E es opcional, podría implementarse como parte de la fórmula en F, pero la dejé independiente para fines ilustrativos. En segundo lugar, SUMIF toma un parámetro de cadena que describe la comparación, por lo que construí la cadena necesaria (es "= 24106" para F1) sobre la marcha.
usando funciones de matriz: C1:
=date(2008,small(month($A$1:$A$10),1),1)
C2:
=date(2008,small(month($A$1:$A$10),2),1)
Haga clic derecho en estas celdas y formatee como mmm / aa
D1:
=sum(if(month($C1)=month($A$1:$A$10),($B$1:$B$10),0))
asegúrese de presionar ctrl-shift-enter cuando termine de escribir esta fórmula. luego copie y péguela según sea necesario.