Ejecutar función con macro

Buenas a todos;
Veréis, tengo una lista de datos en muchas columnas y tengo la siguiente fórmula para hacer un recuento de valores:
=SUMAPRODUCTO(ESNUMERO(ENCONTRAR("LIB";H:H))*ESNUMERO(ENCONTRAR("ARG";I:I))
Lo que me hace es contar las veces que se repiten LIB y ARG en las columnas H e I respectivamente para rellenar una tabla con estas cuentas.
El problema que tengo es que las columnas donde tengo que buscar esos datos LIB y ARG no siempre van a ser la H y la I, pueden variar; y lo que estoy intentando es hacer una macro que busque las columnas donde están estos valores por su encabezado, ya que eso siempre va a ser el mismo texto. Básicamente sería, de la base de datos que tengo, busque en las columnas que los encabezado sean "Orden" y "Tipo" y se ejecute la fórmula (Aquí el LIB y ARG, pero estos dos valores también irán cambiando, por eso el hacer macro, sino con un filtro sería coser y cantar).
Agradezco cualquier ayuda que me puedan dar.
Saludos

1 respuesta

Respuesta
1
En principio no veo la necesidad de usar VBA, debería bastar con modificar la fórmula. Algo parecido a:
=SUMAPRODUCTO(ESNUMERO(ENCONTRAR("LIB";DESREF(A:A;;COINCIDIR("Orden";1:1;0)-1)))*ESNUMERO(ENCONTRAR("ARG";DESREF(A:A;;COINCIDIR("Tipo";1:1;0)-1))))
De todas formas, yo cambiaría las referencias a las columnas completas por algo más cercano a las filas que tengan datos, porque tal como tienes la fórmula esta ha de crear dos matrices con tantos elementos como filas tenga la versión de Excel (más de 65.000 hasta Excel 2003, más de un millón a partir de 2007). Por ejemplo, si las filas con datos fuesen unas 1000:
=SUMAPRODUCTO(ESNUMERO(ENCONTRAR("LIB";DESREF($A1:$A1000;;COINCIDIR("Orden";1:1;0)-1)))*ESNUMERO(ENCONTRAR("ARG";DESREF($A$1:$A$1000;;COINCIDIR("Tipo";1:1;0)-1))))
Otra posibilidad, bastante más corta:
=SUMAPRODUCTO(--(DESREF(A1:A1000;;COINCIDIR("Orden";1:1;0)-1)&DESREF(A1:A1000;;COINCIDIR("Tipo";1:1;0)-1)="LIBARG"))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas