Actualización de tabla y gráfico

Mi problema es el siguiente: Tengo una columna de datos (A), al lado otra con unos cálculos sobre la primera columna (B) y luego un gráfico con los datos esta última columna (B).
Trato de hacer que el usuario introduzcan un nuevo dato en otra hoja y entonces que este valor vaya al final de la columna de datos(A), y que se actualize la columna de cálculos(B) y el gráfico automáticamente.
He probado con macros, pero no sé cómo decirle que inserte los datos en la primera celda en blanco que encuentre, ni que el gráfico tome el último valor distinto de cero ( o vacío).
Gracias por anticipado, amigo.

1 Respuesta

Respuesta
1
'No se que tanto uses el VBA, pero para lograr lo que
'quieres, tienes que usar EVENTOS, solo sigue estos pasos
'Las pruebas las hice en el siguiente escenario.
'Un libro con dos hojas Hoja1 y Hoja2
'En la Hoja1 tengo en las celdas
'A1 = Palabra
'B1 = Numero de caracteres
'y a partir de la A2 una serie de palabras
'a partir de la celda B2 tengo la funcion que calcula
'el largo en caracteres de una candena Largo(cadena)
'esto supongo es algo similar a lo que me planteas
'El siguiente paso es entrar al Editor de Visual Basic (Alt+F11)
'dentro del Explorador de proyectos, le das un doble
'clic a Hoja2(Hoja2) y escribes lo siguiente
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FilaNueva As Long
Dim strDatos As String
Dim ch As ChartObject
'Con esta linea sabes que la celda que se modifico es la
'A1 (recuerda que estamos en la Hoja2), claro que tu puedes
'poner la celda que quieras
If Target.AddressLocal = "$A$1" Then
'Aquí obtenemos el numero de la siguiente fila en blanco
'en la Hoja1 (no te me confundas con la hojas) empezando
'por la celda A1
FilaNueva = Hoja1.Range("A1").End(xlDown).Offset(1, 0).Row
'Aqui ponemos el valor que se acaba de cambiar en la Hoja2
'o sea igualamos Hoja2.A1 = Hoja1.A[FilaNueva]
Hoja1.Cells(FilaNueva, 1).Value = Target.Value
'Aqui agregamos la formula en la columan B en Hoja1
Hoja1.Cells(FilaNueva, 2).FormulaR1C1Local = "=LARGO(LC(-1))"
'Obtenemos el gráfico, estoy suponiendo que ya esta hecho
'sino, hay que crearlo, que también se puede con código
'Nota: si no hay ningún gráfico te dará error y también
'si hay más de un gráfico, tomara el primero
Set ch = Hoja1.ChartObjects(1)
'Construimos una cadena con el rango de datos, incluyendo
'la nueva fila
strDatos = "A1:B" & Format(FilaNueva)
'Actualizamos los datos fuente del grafico
ch. Chart. ChartWizard Worksheets("Hoja1"). Range(strDatos) ', xlColumn,, xlColumns, 1, 1, True, "Largo de palabra", "Palabras", "Caracteres"
'Liberamos la memoria usada
Set ch = Nothing
End If
End Sub
'Esto tiene muchas variantes, pero es un buen principio
'

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas