0

我需要将 Excel 图表中的 X-ticklabels 舍入到最接近的 50。图表是在 VBA 中创建的,数据系列在工作表中,所以我很乐意在其中使用任何一个解决方案。我编写了以下四舍五入到最接近 50 的函数:

  Function RoundTo50(number As Double) As Double
      RoundTo50 = WorksheetFunction.Round(number * 2, -2) / 2
  End Function

我已将它应用于图表的最小和最大 x 限制并且它适用于它们,但我无法弄清楚如何将它应用于两者之间的所有刻度标签。我想在绘图之前将其应用于所有数据,但这会改变我不想做的绘图。由于四舍五入,我希望刻度标签略微未对齐。

你能用格式化字符串做到这一点吗?还是有什么其他方式?

谢谢

4

1 回答 1

0

所以答案如下(感谢 Sam Ward 的评论将我推向了正确的方向):

使用我的 RoundTo50() 函数将最小和最大限制四舍五入到最接近的 50。计算合理数量的网格线的间隔应该是多少,在我的例子中是 12。将此间隔四舍五入到最接近的 50。

Function RoundTo50(number As Double) As Double
    RoundTo50 = WorksheetFunction.Round(number * 2, -2) / 2
End Function

With Sheets("Report").ChartObjects.Add(...)
    .Chart.Axes(xlCategory).MinimumScale = RoundTo50(Sheets(sheetName).Range("M4"))
    .Chart.Axes(xlCategory).MaximumScale = RoundTo50(Sheets(sheetName).Range("M124"))
    .Chart.Axes(xlCategory).MajorUnit = RoundTo50((.Chart.Axes(xlCategory).MaximumScale - .Chart.Axes(xlCategory).MinimumScale) / 12)
    .Chart.Axes(xlCategory).MinorUnit = .Chart.Axes(xlCategory).MajorUnit / 3

我仍然对能够使用格式化字符串执行此操作非常感兴趣,因为我有一个以百分比表示的辅助轴,并且从舍入到 50 的网格线与辅助轴的刻度线略有偏移。使用格式化字符串,它们将完全对齐(因为它们会稍微放在错误的位置,但我更喜欢这样)。

于 2012-04-12T06:47:22.643 回答