Función para insertar gráfico

18/08/2004 - 08:44 por MarianoH | Informe spam
Saludos a todos:
Tengo un libro donde varios usuarios hacen uso intensivo de gráficos de
torta en distintos rangos de distintas hojas. Se me ocurrió crear una
función "Torta" donde el usuario pondría por ejemplo en la celda D38
"=Torta(B35:C38)", y sobre esa celda aparecería un grafico simple de torta
con origen de datos en B35:C38.
(esto con el fin de utilizar como argumento rangos generados con la función
indirecto y otras cositas por el estilo)

Ahora, tengo principalmente dos problemas:

A: No se como determinar la ubicación del gráfico para que aparezca sobre
una celda en particular.

B: Se crear una función, pero no que esta no devuelva un valor sino que cree
un gráfico.

Muchas gracias.

Mariano A. Hernández

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
18/08/2004 - 09:18 | Informe spam
hola, Mariano !

... varios usuarios hacen uso intensivo de graficos de torta en distintos rangos de distintas hojas.
Se me ocurrio crear una funcion ... donde el usuario pondria por ejemplo
... en la celda D38 "=Torta(B35:C38)", y sobre esa celda apareceria un grafico simple de torta [...]
... principalmente dos problemas:
A: ... determinar la ubicacion del grafico para que aparezca sobre una celda en particular.
B: Se crear una funcion, pero no que esta no devuelva un valor sino que cree un grafico [...]



-> 'empezando por el final'... [el 'problema' B]...
las funciones NO 'pueden' afectar a 'otras' celdas NI modificar el entorno de excel... ->solo<- devolver valores
['tendras que'... usar procedimientos 'Sub'... NO procedimientos 'Function'] :(

-> 'comentando' sobre el 'problema' A...
al insertar un grafico en una hoja de calculo, de manera 'predeterminada' se inserta 'ocupando'...
- la mitad del ancho y alto de la ventana activa [o el 'panel' activo, si la ventana esta 'dividida']
[tendrias que 'modificar' a un tamaño/posicion 'predeterminado/personalizado' por medio de macros]

¿comentas datos adicionales?
saludos,
hector.
Respuesta Responder a este mensaje
#2 David Canales
18/08/2004 - 18:04 | Informe spam
Hola Hector. Me entro la curiosidad sobre este tema y me encontre con esta
pagina de Chip Pearson:
http://www.cpearson.com/excel/differen.htm
Dice que podes simular llamar una macro desde una funcion usando el evento
Change de la hoja.

Partiendo de eso probe poner una macro con el evento Change en la hoja donde
quiero poner el grafico de pastel ademas de una funcion y otra macro en un
modulo normal. Usas la funcion Pastel(Rango de Datos) en A1 para poner en dicha
celda la direccion del rango de datos que va a usar la macro HacerPastel. Esta
ultima macro te crea el grafico de pastel en la hoja. Todavia hay que atender
los detalles como el hecho que cada vez que modificas la funcion o la introduces
de nuevo te crea un nuevo grafico, viene entonces la decision de si los aspectos
especificos del grafico los defines en la macro o directamente en el grafico.
Talvez es mejor dejar la macro de manera generica y hacer los detalles
directamente en el grafico.

Este codigo va en el modulo de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Dim Rng As String
Rng = Target
HacerPastel Rng
End If
End Sub

y estos en un modulo normal:

Function Pastel(Rango As Range) As String
Pastel = Rango.Address
End Function

Sub HacerPastel(Rango As String)
If Rango = "" Then Exit Sub
Dim NombreHoja As String, Rango1 As Range
NombreHoja = ActiveSheet.Name
Set Rango1 = Range(Rango)
Charts.Add
ActiveChart.ChartType = xlPie
If Rango1.Rows.Count = 1 Then
ActiveChart.SetSourceData Source:=Sheets(NombreHoja). _
Range(Rango), PlotBy:=xlRows
Else
ActiveChart.SetSourceData Source:=Sheets(NombreHoja). _
Range(Rango), PlotBy:=xlColumns
End If
ActiveChart.Location Where:=xlLocationAsObject, Name:=NombreHoja
End Sub

Saludos,

David Canales


"Héctor Miguel" wrote in message
news:
hola, Mariano !

> ... varios usuarios hacen uso intensivo de graficos de torta en distintos


rangos de distintas hojas.
> Se me ocurrio crear una funcion ... donde el usuario pondria por ejemplo
>... en la celda D38 "=Torta(B35:C38)", y sobre esa celda apareceria un


grafico simple de torta [...]
> ... principalmente dos problemas:
> A: ... determinar la ubicacion del grafico para que aparezca sobre una celda


en particular.
> B: Se crear una funcion, pero no que esta no devuelva un valor sino que cree


un grafico [...]

-> 'empezando por el final'... [el 'problema' B]...
las funciones NO 'pueden' afectar a 'otras' celdas NI modificar el entorno de


excel... ->solo<- devolver valores
['tendras que'... usar procedimientos 'Sub'... NO procedimientos 'Function']


:(

-> 'comentando' sobre el 'problema' A...
al insertar un grafico en una hoja de calculo, de manera 'predeterminada' se


inserta 'ocupando'...
- la mitad del ancho y alto de la ventana activa [o el 'panel' activo, si la


ventana esta 'dividida']
[tendrias que 'modificar' a un tamaño/posicion 'predeterminado/personalizado'


por medio de macros]

¿comentas datos adicionales?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
19/08/2004 - 03:02 | Informe spam
hola, David !

... Chip Pearson: http://www.cpearson.com/excel/differen.htm
... simular llamar una macro desde una funcion usando el evento Change de la hoja.



-> tambien explica 'el porque' las funciones [aun las 'definidas por el usuario']...
NO 'pueden' modificar otras celdas NI el ambiente de la aplicacion...
que [al parecer] 'es' lo que le habria gustado a Mariano

... probe ... una macro con el evento Change en la hoja donde quiero ... el grafico
... ademas de una funcion y otra macro en un modulo normal.
... hay que atender los detalles como el ... que cada vez que modificas ... crea un nuevo grafico [...]



-> 'esa' razon [y 'otras'] es 'el porque' pregunto en algunas ocasiones... ¿comentas datos adicionales?
-> podrias 'evitar' la 'repeticion' de graficos y mas graficos si [p.e.] agregas un nombre al 'objeto' y despues...
'detectas' [en el codigo] si ya 'existe' [lo modificas] o se trata de uno 'nuevo' [para crearlo] ;)
-> aunque la 'simulacion' no deja de ser una opcion [de hecho.. los eventos son 'el sustituto de']...
habria que pensar en dar alguna 'versatilidad' como... [segun la 'intencion' de Mariano]...
'tomar' [o 'poner'] los rangos 'a graficar' Y la posicion donde se requiere el grafico [quiza tambien 'medidas']
->de y donde<- los 'requiera' el usuario, etc. etc. etc.

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida