В настоящее время я использую код VBA, который автоматически форматирует графики для меня.Раздел кода, который устанавливает числовой формат меток оси Y, выглядит следующим образом:
If chart1.Type <> xlPie And chart1.Type <> xlDoughnut Then
If InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0%;(#0.0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0%;(##0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
Else
chart1.Axes(xlValue).TickLabels.NumberFormat = "#,##0;(#,##0)"
End If
If InStr(chart1.Axes(xlCategory).TickLabels.NumberFormat, "yy") <> 0 Then _
chart1.Axes(xlCategory).TickLabels.NumberFormat = "mmm yy"
Я попытался изменить этот код, чтобы он также мог обрабатывать числовой формат: "#, ## 0.0x; (#, ## 0.0) x; 0.0x "
Это мой исправленный код:
If chart1.Type <> xlPie And chart1.Type <> xlDoughnut Then
If InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0%;(#0.0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0%;(##0)%"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "%") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale < 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0x;(#0.0)x"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") <> 0 And _
chart1.Axes(xlValue).MaximumScale >= 0.1 Then
chart1.Axes(xlValue).TickLabels.NumberFormat = "##0x;(##0)x"
ElseIf InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, ".") <> 0 And _
InStr(chart1.Axes(xlValue).TickLabels.NumberFormat, "x") = 0 And _
Len(chart1.Axes(xlValue).MaximumScale) > 2 Then _
chart1.Axes(xlValue).TickLabels.NumberFormat = "#0.0;(#0.0)"
Else
chart1.Axes(xlValue).TickLabels.NumberFormat = "#,##0;(#,##0)"
End If
If InStr(chart1.Axes(xlCategory).TickLabels.NumberFormat, "yy") <> 0 Then _
chart1.Axes(xlCategory).TickLabels.NumberFormat = "mmm yy"
К сожалению, это не похоже на работу.
В основном, если у меня есть набор данных:
2016 0,3x
2017 0,4x
2018 0,5x
График уНа ярлыках оси X нет символов
У кого-нибудь есть предложения?
Заранее спасибо,
Томас