PDA

Ver la Versión Completa : Formulas de matrices en Excel


mzoquete
31-01-2012, 14:35:19
Hola, sucede que estoy usando un archivo de excel desde delphi para aprovechar las formulas matematicas que este provee, pero tengo una dificultad, no he podido encontrar como ejecutar una formula cuyo resultado corresponde a una matriz (que ocupa varias celdas), es decir que se deben seleccionar varias celdas y ejecutar la formula con la combinacion de teclas CTRL+MAYUS+ENTER (en Excel). :confused:
Para ser un poco mas claro, pongo el siguiente ejemplo:
Hoja.range['A1'] := '1';
Hoja.range['A2'] := '5';
Hoja.range['A3'] := '4';
Hoja.range['B1'] := '2';
Hoja.range['B2'] := '4';
Hoja.range['B3'] := '5';
Hoja.range['C1'] := '3';
Hoja.range['C2'] := '5';
Hoja.range['C3'] := '8';
Hoja.range['A5:C7'] := '=TRANSPONER(A1:C3)';

Pero en el rango A5:C7 sale en todas las celdas #¿NOMBRE?

No frecuento mucho este foro, pero me ha sido bastante util en ocasiones anteriores, y agradezco de antemano la atencion y colaboracion a este post

mzoquete
31-01-2012, 16:23:50
Probando probando, he encontrado como hacerlo. Se debe definir de la siguiente manera:

Excel.range['A5:C7'].FormulaArray := '=TRANSPONER(A1:C3)';

Dejo la solucion a quien le pueda interesar

:D :D :D

kapcomx
31-01-2012, 20:42:10
ke bien que compartes tu solucion de hecho me va a servir para unos reportes que estoy mandando a excel, Saludos...:cool:

mzoquete
09-02-2012, 00:26:48
Inicialmente me funciono, pero luego de utilizarla varias veces me genera este error:

"No se puede asignar la propiedad FormulaArray de la clase Range"

Que podra ser? de pronto alguien utilizo esto y le paso? :( :confused:

juanlaplata
29-02-2012, 15:12:40
Hola q tal. comento sobre este error que da el excel. Buscando, di con la solucion, en mi caso, solo queria hacer una suma.
Tal como mzoquete, lo escribia asi de simple como se ve.
Libro.Cells[fila,columna].Formula := '=SUMA(B'+intToStr(inicio_suma)+':B'+intToStr(fin_suma)+')';

y me daba el mismo error. #¿NOMBRE?
Probe con la solucion "parcial" q el encontro
Libro.Cells[fila,columna].FormulaArray := '=SUMA(B'+intToStr(inicio_suma)+':B'+intToStr(fin_suma)+')';

y si bien me devolvia la suma, no con el formato de las celdas q sumaba ($ 0.00).
y segun Microsoft:

#¿NOMBRE?
Microsoft Excel no reconoce el texto utilizado en la fórmula.
Error ortográfico al escribir el nombre. Uso de un rótulo en una fórmula. Se ha cometido un error al escribir el nombre de una función. Se ha introducido texto en una fórmula sin poner el texto entre comillas o Se han omitido los dos puntos ( : ) en una referencia de rango.Entonces se debe a una de estas posibilidades, la cual opte por el nombre de la funcion, la cual modifique...
Libro.Cells[fila,columna].Formula := '=SUM(B'+intToStr(inicio_suma)+':B'+intToStr(fin_suma)+')';


PD: mzoquete busca el nombre de tu funcion en "ingles" o lenguaje nativo por el cual fue programada, creo que seria TRANSPOSE(A1:C3)