Aplicar función según el contenido de una celda

Entrada núm: 3 of 6 de la serie Editor de programacion

Mi amigo Drazen Hanzic, de Labo d.o.o en Zagreb, necesita que dado un conjunto de argumentos, se les aplique una u otra fórmula de Excel de acuerdo al contenido de una determinada celda, que alimentaremos mediante una lista de validación. Excel tiene capacidad de sobra para interpretar el texto que escribamos en una celda como fórmula, y nos devolverá el valor de salida, siempre que la sintaxis sea perfecta.

Pero después de hacer y subir el video en inglés, con Excel configurado en inglés, me di cuenta de que hay ciertas consideraciones a tener en cuenta respecto al idioma que estamos usando. Si tenemos Excel configurado en español e intentamos usar el nombre de las funciones en Excel en español, y el separador de argumentos por defecto en español, que es el punto y coma (;), la subrutina no funcionará. Es curioso que VBA hace de forma automática la transformación de nombre nativo de la función en inglés, al idioma de configuración de Excel, y también transforma el separador nativo en inglés, la coma (,), al separador del idioma de configuración. Pero si partimos de nuestra configuración local, VBA nos dará errores.

El error del nombre de la función no es grave, pues basta editar la celda para que todo se normalice. Pero si introducimos como separador el punto y coma, tendremos un error en tiempo de programación que nos estropeará todo el desarrollo. Por supuesto, hay toda una serie de precauciones que debemos tomar si pensamos usar esta técnica en algún desarrollo. Observemos que estamos introduciendo los argumentos de una forma muy extraña, y que debemos asegurarnos de que son los adecuados para las funciones que vamos a emplear. Deberíamos, por tanto, pensar en la forma de limitar la introducción de argumentos o controlarla para que sea la apropiada y la función no nos devuelva error.

El método evaluate, por otra parte, resulta ser algo que usamos muchas veces cuando programamos en VBA, aunque no somos conscientes de ello, ya que figura de forma implícita en todas las sentencias que implican el retorno de un valor basado en una expresión numérica, en una cadena…

Eloy, con Charles Williams y Drazan Hanzic (Gracias por la foto, Drazen)
Charles Williams, Drazan Hanzic y un servidor en la Universidad de Delft, año 2014 (Gracias por la foto, Drazen)

Exploring The Limits of Excel

Exploring The Limits of Excel

Un viaje de exploración a las fronteras de la hoja de cálculo más usada: Microsof Excel.

Un análisis de errores potenciales y límites de tipo estructural, operacional y de programación.

Redactado en inglés sencillo y accesible.

Series Navigation<< Formulario para entrada de datosEliminar filas según criterios múltiples >>

Comments

This post currently has 2 responses

  • Hola, tengo una base de 30.000 registros X 35 columnas, pero se queda calculando mas de 6 horas en cada celda formule con la función Sumarsi.conjunto pero ya llevo muchos dias con este tema y no he podido con la formula.

    Las formulas estan bien en cada celda pero me tiene loco la demora del calculo entonces pense en hacer mediante una macro, ya que la próxima vez que actualicen la base llegaran 15 mil mas y debo ponerla a calcular otra vez

    Te copio el ejemplo de lo formulado

    CRÉDITO FECHA SEGURO INTERESES CAPITAL
    6001 41457 =SUMAR.SI.CONJUNTO($C:$C;$B:$B;$K2;$A:$A;$J2) =SUMAR.SI.CONJUNTO($D:$D;$B:$B;$K2;$A:$A;$J2) =SUMAR.SI.CONJUNTO($E:$E;$B:$B;$K2;$A:$A;$J2)

    CRÉDITO FECHA SEGURO INTERESES CAPITAL etc…
    6001 2/07/2013 1 2 3 ..33

    La idea es la base de un plan de pagos de pagos de los clientes desde 2013 hasta 2016 por fecha de pago de cada cuota debo agrupar por Crédito cada concepto, me preguntaras si lo intente con una tabla dinámica, si fue lo primero que hice pero el resultado de este trabajo lo debo tomar para hacer un mach con otra base y la dinamica no me sirve para esto.

    Cordial Saludo
    Helbert

    PD: Help

    • 30.000 por 35 son más de un millón de celdas que contienen fórmulas con argumentos bastante complejos. Son muchos datos y no me extraña que a Excel le cueste actualizarlos. El tiempo que se tome dependerá mucho de la RAM de su equipo y del resto de tareas que esté ejecutando en ese momento. Si quiere ponerme el archivo en algún Dropbox en el que yo lo pueda bajar y examinarlo, con mucho gusto le daré cualquier recomendación que se me ocurra.

Deja tu comentario aquí:

Sidebar



A %d blogueros les gusta esto: