PDA

Ver la Versión Completa : Subtotales en Excel


tutuk
02-06-2005, 05:37:04
hola utilizo lo siguiente para crear un archivo excel

//Crea la instancia (Abre Excel)
Excel := CreateOleObject('Excel.Application');

//Añade un Libro
Excel.WorkBooks.add;

//Pone Visible La Ventana
Excel.visible:=True;

grabe una macro de excel para ver que codigo usa para poner subtotales
es esta
Sub Macro1()


'
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5, 6, 7, 8, _
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23), Replace:=True, PageBreaks:=True, _
SummaryBelowData:=True
End Sub
Sub Macro2()

y buscando en internet encontre esto :

Здрасте уважаемые!
Есть тема.
Выбираю данные из *.dbf и передаю их в Excel,
уже в доке необходимо после передачи сформировать ИТОГИ по нужным столбцам, для этого есть средство
SUBTOTAL,нап-р:
DataModule.Excel.Range[DataModule.Excel.Cells.Item[XXX,XXX],DataModule.Excel.Cells.Item[XXX,XXX]].Subtotal(2,1,7,0,0,1);
где 2-GroupBy;
1-Function;
7-TotalList(т.е. столбец по которму групп.)
0-Replace(0-false,1-True)
0-PageBreaks(0-false,1-True)
1-SummaryBelowData(0-false,1-True)
Так вот, как можно сгруппир-ть не по одному столбцу, а по нескольким.

que parece estar en ruso o algo asi
alguien me ayuda a tratar de decifrar o esto o sabe como poner los subtotales de excel

marcoszorrilla
02-06-2005, 07:11:55
La fórmula de Subtotales en Excel para la suma, teniendo en cuenta que hay subtotales para otras funciones, promedio...:

Subtotales(9;A1:A20)

Esto nos dará la suma de A1 hasta A20, ambos inclusive con la función subtotales, lo que luego nos permitirá sumar una area en el que se hallen varios subtotales sin duplicar las cantidades.

No tienes más que mirar la ayuda de Excel para ver que pasa cuando en vez de 9 que es el indicativo para la suma pones otro número.

Un Saludo.

tutuk
03-06-2005, 00:24:42
gracias marcos por tu atención.

probando probando llegue a esto

excel.range['a2:s22'].Subtotal(1,1,6,0,0,1);


donde el primer dato es el campo por el cual quiero agrupar, el 2º es la Operaciòn a realizar , el 3º la columna en la cual quiero el subtotal, el 4º si se desea reemplazar los subtotales existentes, el 5º si agregamos un saldo de pagina y el 6º si ponemos el resultado al final

hasta ahi todo bien pero yo necesito subtotales en más de una columna

de acuerdo a mi primer post (el de la macro guardada) para subtotalizar mas de una columna el 3º dato seria un array.

Probe creando un array de integer y pasarlo como el 3º dato y me da error

alguna idea de como puedo hacerlo

tutuk
03-06-2005, 23:31:45
bueno por si alguien tiene la misma necesidad lo resolvi de la siguiente manera


como me ponia nada mas que el subtotal en una sola columna

al final recorro la hoja de calculo y donde esta cada subtotal

hago copiar y pegar a la celda de al lado


excel.range['f'+inttostr(recorrer)].copy;
excel.range['g'+inttostr(recorrer)].select;
Excel.ActiveSheet.Paste;



no es la solucion ideal pero resulta


gracias por su atencion

jachguate
04-06-2005, 00:56:58
Creo que la función podria aceptar un OleVariant que contenga un array... es cosa de probar.

Hasta luego.

;)