Ejecutar función con macro

Respuesta de
a
Usuario
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
Avatar
Experto
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"))
 
 
Saludos.
Usuario
Muchas gracias, funciona perfecto. Lo de hacer la macro, es porque esto va a ser para llevar un seguimiento de órdenes de trabajo, y con dos o tres cosas que de momento son las que quiero tener en cuenta (las del ejemplo) pues me vale perfecto, pero una vez que pase el tiempo, esas órdenes serán más y más y también tendré que tener más datos en cuenta, a parte de que tendré que hacer gráficas y demás, y creo que lo mejor al final será que haga un InputBox, con las consultas que necesite para organizar los datos según necesite, pero como ya te dije, esto de momento me sirve perfecto. Ahora seguiré trabajando en la mejora del archivo, y seguro que esta no sea mi última consulta, je je.
De nuevo muchas gracias.
Saludos y hasta la próxima consulta.