Hola buenas. Estoy haciendo una aplicación, y sólo me queda guardar los resultados obtenidos en un gráfico. Quiero que estos datos me los mande cuando yo lo desee (mediante un botón) y no se alteren al ingresar más valores en el gráfico. Me imagino que la solución pasa por una macro, pero no llego a encontrar la solución definitiva. Gracias
1 Respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Recién vuelto del fin de semana de Pascuas, vi tu pregunta. La respuesta dependerá mucho de cómo se agregan los datos. Si los nuevos valores se agregan secuencialmente, esto es: en las líneas siguientes hacia abajo, la inclusión de los nuevos datos se hará, simplemente, expandiendo el rango a graficar. Esto, claro está, puede hacerse manualmente o mediante una macro sencilla que expanda el rango del gráfico. Puedes usar la "Grabadora de Macros", para que tome el nombre de rango propio de tu hoja (como imaginarás, yo lo desconozco) Pero, la vida no suele ser tan simple, así que creo que tu problema debe ser otro. Si lo sugerido anteriormente no fuera posible deberás rediseñar tu hoja de forma tal que el rango a graficar sea distinto al de carga y que una macro transfiera los datos nuevos de una base a la otra. A fin de desarrollar una macro, necesitaría saber cuál es tu esquema y qué direcciones (hoja/rango) tienen. Espero haberte orientado, al menos, un poco. Un gran abrazo! Fernando
Hola fernando. La verdad que releyendo mi pregunta me he dado cuenta que no queda muy clara mi duda. Quiero reflejar en un gráfico de barras donde el eje por es tiempo (365 días) unos resultados que obtengo. Cuando el resultado es el definitivo lo mando mediante un botón al rango que ya he definido. Lo que deseo es que si hoy es 3/4/02 mandar a esa posición el valor obtenido. He conseguido mandarlo, pero el problema es que me borra los resultados anteriores y quiero que una vez se hallan mandado no se alteren los resultados de las fechas anteriores. Espero haberme explicado mejor y gracias de antemano. P.D: Que quieres decir con "el rango a graficar sea distinto al de carga".
En principio, me parece que interpreté mal tu primera pregunta. En realidad, creí que era sólo una cuestión de gráficos. Pareciera ser que buscas un comando que *agregue* un dato nuevo a una lista o que lo asocie a una fecha determinada en la base definitiva. De allí que te sugerí que el rango a graficar fuese distinto al de carga. Esto, aparentemente ya lo tienes así en tu archivo. Cargas los datos en algún lugar, calculas, controlas y, luego, lo mandas a la base que se gráfica. Si entendí bien (dime si no) el código siguiente agregará la fecha y el valor definitivo a su derecha, después del último registro que encuentre en la base de datos a graficar. Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Modulo") y pega el siguiente código: Sub ManDato() ' definicion de variables Dim V_date As Date Dim V_Data As Variant Dim V_Grange As String 'toma dato definitivo a llevar V_Data = ActiveCell.Value 'identifica ultimo registro en base Sheets("Anual").Select Range("B3").Select Selection.End(xlDown).Select 'toma la última fecha y calcula la siguiente V_date = ActiveCell.Value V_date = V_date + 1 'se ubica en el siguiente celda inferior ActiveCell.Offset(1).Select 'ingresa fecha nueva ActiveCell.Value = V_date 'ingresa valor definitivo en la celda de la derecha ActiveCell.Offset(0, 1).Value = V_Data 'Determina nuevo rango a graficar V_Grange = Selection.CurrentRegion.Address Sheets("Anual").ChartObjects("Gráfico 1").Activate ActiveChart.SetSourceData Source:=Sheets("Anual").Range(V_Grange), PlotBy:=xlColumns Application.CutCopyMode = False ' vuelve a ultimo dato ingresado Sheets("Anual").Select Range("B3").Select Selection.End(xlDown).Select End Sub ---- Cierra el editor y graba el archivo. Para que funcione selecciona la celda donde está el dato a mandar y ejecuta la macro que acabas de pegar(ManDato). Supongo que la tendrás asociada al botón. Esta macro contiene explicaciones de lo que está realizando en cada paso. Cada vez que se ejecuta, agrega un registro a la base con la fecha siguiente a la última que encuentre y a su derecha estampa el valor calculado. Luego, redefine el área de gráfico para que incluya este último dato, además de los anteriores que ya tenías. Obviamente, tuve que asumir que: - La base de datos de fechas está en la hoja "Anual" y que empieza en la celda B3. Ah! No hay espacios intermedios entre fecha y fecha. - El gráfico existe, se llama "Gráfico 1", y está en la misma hoja ("Anual") Puedes variar, claro está, estos datos modificándolos dentro de la macro. Fiuuu!, Dios quiera que esto sea lo que necesitabas. ;) Inténtalo y coméntame. Lo probé y funciona bien. Un abrazo! Fernando
No se tú pero veo que, en algunas líneas del macro, aparece esto: ' Si te pasa, simplemente reemplázalo por un apóstrofe (que es lo que puse originalmente). Si no, no ;)