Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在指定范围内随机排列饼图?_Excel_Vba_Charts - Fatal编程技术网

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。我会检查这个函数,但作为初学者,我找到了早期的解决方案,可以计算范围内的行数,得到第一行和最后一行。这就是帮助我查看发生了什么。但我肯定会检查功能。