Pregunta Establecer los valores Y máximos y mínimos primarios iguales a los valores Y secundarios correspondientes en un gráfico en Excel?


¿Hay alguna forma de establecer la escala en un gráfico de modo que los valores Y máximos y mínimos primarios también igualen los mismos valores en el eje Y secundario?

Básicamente, tengo varias acciones diferentes que estoy viendo (valores de registro históricos), cada una con su propio gráfico lineal de los precios, y luego agregué una serie secundaria que muestra 3 líneas horizontales: el precio promedio y un estándar desviación por encima y por debajo del promedio, así que puedo ver el rango de precios habitual en el que fluctúa la acción (esta serie la tengo como un gráfico de dispersión). Mi problema es que Excel parece estar usando una escala automática diferente para cada eje Y (he intentado incluir los mismos valores mínimos y máximos en mi serie secundaria, pero la escala sigue siendo diferente a veces).

Idealmente, dado que estoy viendo bastantes stocks diferentes, me gustaría automatizar esto agregando unas pocas columnas donde podría simplemente establecer los valores máximos y mínimos de Y para igualar el precio máximo o mínimo de cada acción (para ambos ejes, primario y secundario). Intenté mirar el siguiente sitio para ver si podía crear una macro (http://peltiertech.com/Excel/Charts/AxisScaleLinkToSheet.html) pero mis habilidades para escribir macros son bastante deficientes y no han tenido mucha suerte.

Sin embargo, me doy cuenta de que esta solicitud solo podría ser posible a través de VBA, por lo que, básicamente, en pocas palabras, ¿alguien sabría cómo configurar una macro que permita que mi gráfico seleccionado autosize utilizando los parámetros que le doy? (Supongamos que la columna A muestra las fechas, B muestra los precios y una sección a la derecha (por ejemplo, las celdas D1: F4) especificaría los valores mínimo y máximo de X e Y, y tal vez el tamaño Tick del que podría leer la macro? (Sé cómo crear una macro en blanco, y luego saltar a la macro en sí, pero ahí es donde empiezo a perderme un poco en cuanto a dónde pegar realmente el código).


1


origen


¿Esto no significa que el eje Y es igual al eje Y (2)? Si es así, ¿por qué tener un eje secundario? - mcalex
Hola, mcalex, la razón por la que necesitaba el eje secundario es para poder mostrar el rango de precios en el primer eje, y luego tomar el promedio y una desviación estándar por encima y por debajo del promedio para poder agregar 3 líneas horizontales encima de mi tabla para poder ver dónde está el stock en relación con su historial anterior. Simplemente me resulta más fácil ver dónde se está negociando actualmente en relación con su rango normal a lo largo del tiempo. Mi problema era Y1 e Y2 estaban usando escalas diferentes, por lo que los datos no coinciden. El macro dav creado a continuación funcionó perfectamente para automatizar esta solución para mí. Gracias, aunque - steveblank


Respuestas:


Este fragmento de código debe proporcionarle los elementos básicos para su solicitud. En un módulo para su libro de trabajo, debe ser independiente, o desde aquí puede expandirlo a otras hojas de trabajo o modificar cualquier parte de un gráfico. Las primeras dos líneas son para captura de errores, en caso de que no tenga un gráfico seleccionado. Todo lo demás formatos. Simplemente señale los rangos de referencia a las celdas que le gustaría usar para sus balanzas.

Sub CustomAxis ()

If ActiveChart Is Nothing Then ' Error trap to ensure a chart is selected
    MsgBox "Please: Select a chart and try again.", vbExclamation

    Else

        ActiveChart.Axes(xlValue).MinimumScale = Range("A2") 'Set min scale to cell A2
        ActiveChart.Axes(xlValue).MaximumScale = Range("A3") 'Set max scale to cell A3
        ActiveChart.Axes(xlValue).MajorUnit = Range("A4") 'Set major tick to cell A4
        ActiveChart.Axes(xlValue).MinorUnit = Range("A5") 'Set minor tick to cell A5

End If

End Sub


0



¡Perfecto! Muchas gracias dav, lo aprecio. Esto funcionó muy bien. - steveblank


Puede hacer que esto sea automático e independiente de VBA agregando algunos datos al gráfico.

En la celda F2 (por ejemplo) inserte una fórmula que calcule el mínimo de todos los valores Y en ambos ejes, y en F3 inserte una fórmula que calcule el máximo correspondiente. Me gusta esto:

Equal Axis Scales - Sample Data

El primer gráfico a continuación muestra solo los datos de stock, el segundo muestra los datos de stock en el eje secundario con las líneas de referencia en el eje primario (por lo que las líneas de referencia aparecen detrás de los datos de stock).

En el tercer gráfico, agregué los datos min / max de la columna F al eje primario, y en el cuarto al eje secundario.

Finalmente, en el quinto gráfico, he formateado las series min / max sin líneas o marcadores para que estén ocultas. Puede eliminarlos de la leyenda si es necesario: haga clic una vez en la leyenda, luego una vez en la entrada de la leyenda para eliminar, luego haga clic en Eliminar.

Sin embargo, los datos cambian, los cálculos min / max en la columna F se actualizarán, al igual que el gráfico.

Equal Axis Scales - Evolution of the Chart


0