Excel 只有1或2个点的X-Y散点图

Excel 只有1或2个点的X-Y散点图,excel,vba,Excel,Vba,我正在使用Excel VBA宏绘制X-Y散点图。如果有三个或三个以上的X-Y点要打印,但仅1个或2个点无法正确绘制点,则宏将起作用 Sub Macro1() Range("A2:B4").Select ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select ActiveChart.SetSource Data Source:=Range("Test!$A$2:$B$4") End Sub Sub Macro2()

我正在使用Excel VBA宏绘制X-Y散点图。如果有三个或三个以上的X-Y点要打印,但仅1个或2个点无法正确绘制点,则宏将起作用

Sub Macro1()
    Range("A2:B4").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
    ActiveChart.SetSource Data Source:=Range("Test!$A$2:$B$4")
End Sub

Sub Macro2()
    Range("A2:B3").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
    ActiveChart.SetSourceData Source:=Range("Test!$A$2:$B$3")
End Sub
下面是我为一个有三个点的电子表格记录的宏,以及为两个点记录的宏。除了三个点和两个点的范围外,宏看起来是相同的

Sub Macro1()
    Range("A2:B4").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
    ActiveChart.SetSource Data Source:=Range("Test!$A$2:$B$4")
End Sub

Sub Macro2()
    Range("A2:B3").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
    ActiveChart.SetSourceData Source:=Range("Test!$A$2:$B$3")
End Sub
测试电子表格在(10,10)、(20,20)和(30,30)处有点。3点宏将正确绘制点。当在前两个点上运行2点宏时,图表在X=10和Y=20处只有一个点。

Excel必须“解释”您在为图表提供数据范围时的意思,决定X轴和Y轴上的内容。在二维范围内给出三个或更多点时,默认解释为X值在第一列(a)中,Y值在第二列(B)中

对于只有两点的图表,Excel(出于某种原因)解释X值位于第一行(A2:B2),Y值位于第二行(A3:B3)。因此,您必须“强制”Excel以您想要的方式解释数据。使用
PlotBy
参数:

Sub Macro2()
    Range("A2:B3").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select
    ActiveChart.SetSourceData Source:=Range("Test!$A$2:$B$3"), PlotBy:=xlColumns
End Sub

感谢您的解决方案,Peter T。这对一个简单的示例有效,但对我在Excel VBA代码中使用的更复杂的宏无效。我会包括更复杂的宏,但不知道如何将其包含在此注释中。对于更复杂的示例,您应该在另一个(新)问题中打开它。尽可能完整地展示一组示例数据、代码、描述预期结果,以及关于如何解决所面临问题的问题。