Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Formulas de matrices en Excel (https://www.clubdelphi.com/foros/showthread.php?t=77485)

mzoquete 31-01-2012 14:35:19

Formulas de matrices en Excel
 
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:
Código Delphi [-]
  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:

Código Delphi [-]
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

formula array
 
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.
Código Delphi [-]
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
Código Delphi [-]
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:

Cita:

#¿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...
Código Delphi [-]
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)


La franja horaria es GMT +2. Ahora son las 15:56:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi