Excel 如何在指定范围内随机排列饼图?
我有一个代码,它根据一些标准绘制饼图,并根据这些标准定位图表。如果多个项目具有相同的输入,则图表重叠。像这样的 下面是定位图表的代码Excel 如何在指定范围内随机排列饼图?,excel,vba,charts,Excel,Vba,Charts,我有一个代码,它根据一些标准绘制饼图,并根据这些标准定位图表。如果多个项目具有相同的输入,则图表重叠。像这样的 下面是定位图表的代码 Set Rng = Range("BT_GATE1") Debug.Print Rng.Address Debug.Print Rng.Top Debug.Print Rng.Parent.Name Set ChtObj = ActiveChart.Parent ChtObj.Top = Rng.To
Set Rng = Range("BT_GATE1")
Debug.Print Rng.Address
Debug.Print Rng.Top
Debug.Print Rng.Parent.Name
Set ChtObj = ActiveChart.Parent
ChtObj.Top = Rng.Top
ChtObj.Left = Rng.Left
我们是否可以将图表随机放置在指定范围内,以便它们单独可见?像这样的
这样的辅助函数可能很容易返回指定范围内的随机单元格:
Public Function GetRandomCellWithin(ByVal rng As Range) As Range
With rng
Dim randomCellNumber As Long
randomCellNumber = WorksheetFunction.RandBetween(1, .Cells.Count)
Set GetRandomCellWithin = .Cells(randomCellNumber)
End With
End Function
然后,您可以使用随机单元格的
.Top
和.Left
在主命名范围内随机重新定位图表。您可以使用工作表函数.randbween
在该范围内随机选取行/列编号,实际上是在里面发现了一个随机的单元格。嗨,BigBen,你能详细解释一下语法吗?我可以在该函数中使用命名范围吗?你的意思是我按工作表函数选择随机单元格,然后将图表顶部和左侧移动到该单元格吗?假设您的命名范围range(“BT\u GATE1”)
有4列10行(您可以使用range(“BT\u GATE1”).columns.Count
和range(“BT\u GATE1”)获取这些值.Rows.Count
。然后使用randtween
中的那些值,以便获得一个随机行号,randtween(1,10)
,以及类似的列号。使用该随机行号/列号,您可以在指定范围内选择一个随机单元格:范围(“BT_GATE1”)。单元格(randomRow,randomColumn)
。事实上,更好的是,你可以只使用一次randbween
——你不需要随机的行和列数,你只需要一个随机的单元格数。谢谢BigBen。这很好。谢谢BigBen。我会检查这个函数,但作为初学者,我找到了早期的解决方案,可以计算范围内的行数,得到第一行和最后一行。这就是帮助我查看发生了什么。但我肯定会检查功能。