ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9087|回复: 13

[分享] [已解决]如何让图表按“图表标题”自动排列成两列??

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-10-14 09:12 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<p>请教各位高手&nbsp; :如何让图表按“图表标题”自动排列成两列?? 附件试例中,sheet1 中是原始资料,sheet2中是整理出来的资料 7uBPFxVZ.rar (16.13 KB, 下载次数: 1275) 就是图表标题为 “VOUT”的图表有两个,我想让它排列成 左面一个图 右边一个图,成水平排列。不知道我说明白没?操作要求用宏来完成。在此请教高手!!!

万分感谢(EXCEL 精英培训网 八月的梦游者)为我解决这个问题,感谢你!!!
同时也感谢大家对此帖的关心和帮助,谢谢大家了
以下是(八月)的解决代码,分享!!!

Sub mmm()
    Dim iCount As Integer
    Dim i As Integer
    Dim iMid As Integer
    With Sheet1
        iCount = .ChartObjects.Count
        If iCount Mod 2 = 0 Then
            iMid = iCount / 2
        Else
            iMid = Int(iCount / 2) + 1
        End If
        For i = iMid + 1 To iCount
            .ChartObjects(i).Left = .ChartObjects(i - iMid).Left + .ChartObjects(i - iMid).Width
            .ChartObjects(i).Top = .ChartObjects(i - iMid).Top
        Next i
    End With
End Sub


续问:
我通过手动录制了一个宏:如下:
Sub tbpl()
  
     Windows("图表排列学习.xls").Activate

    ActiveSheet.Shapes.Range(Array("Chart 6", "Chart 7", "Chart 8", "Chart 9", "Chart 10")).Select    按住Ctrl 鼠标点第6至10图   
   Selection.ShapeRange.Group.Select                                  右键组合这5个图
    ActiveSheet.Shapes("Group 11").Select                              组合后生成Group 11----不知道可不可以这么理解
    Selection.ShapeRange.IncrementLeft 363#                        把组合后的图挪到指定位置
    Selection.ShapeRange.IncrementTop -1140.75                  同上

End Sub

我改编的宏:
Sub tbpl()
Dim a As Integer, n As Integer, x As Integer
     a = 5
     For n = 1 To a
    x = a + n
    Windows("图表排列学习.xls").Activate
   ActiveSheet.Shapes.Range(Array("Chart " & x )).Select         注:" Chart 这里有个空格 "              
   
    Next n
    Selection.ShapeRange.Group.Select
    ActiveSheet.Shapes("Group 11").Select
    Selection.ShapeRange.IncrementLeft 363#
    Selection.ShapeRange.IncrementTop -1140.75
   End Sub

问题是 宏可以找到这5个图表,但是不能够让他们组合到一起,求教高手。

[ 本帖最后由 eric_sun 于 2009-6-9 15:21 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-10-14 15:37 | 显示全部楼层

不很明白楼主的要求.

用试试用绘图工具的对象选择工具选中后,用相应的对齐或居中工具组合使用.

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-15 09:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

就是图表标题为 “VOUT”的图表有两个,我想让它排列成 左面一个图 右边一个图,成水平排列。不知道我说明白没?

补充: 我生成的图表顺序是 “C4:G15”、“C20:G31”“C36:G47”“H4:H15”“H20:H31”“H36:H47”  

            图表标题 :  (C4:G15 ;H4:H15)同为VOUT、(C20:G31;H20:H31)同为 VBP。

我想让生成的图表是    左边:  C4:G15                 右边:  H4:H15

                                                C20:G31                         H20:H31

                                                C36:G47                         H36:H47

以上操作要求用宏来完成。

在此请教高手!!!

[此贴子已经被作者于2008-10-15 9:45:47编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-22 14:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-10-23 11:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-10-23 12:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-10-27 09:03 | 显示全部楼层
看來這還是個很複雜的問題。
我也非常的想知道怎么做。請高手指教一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-27 14:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我又重新编辑了一下,不知道我写的清楚不,这个问题困扰我老长时间了。

TA的精华主题

TA的得分主题

发表于 2009-6-1 11:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一年多前的帖子,楼主还能记到这个问题,深表佩服。
但我确实没有搞明白,你要怎么做,工作薄中有两个表,两个表都有图表。

TA的精华主题

TA的得分主题

发表于 2009-6-1 17:44 | 显示全部楼层
'**假设楼主的确10个图表是依序产生,那就很容易处理的;否则以下代码需再增加先后的判断式

Sub Macro1()
    sh0 = "Sheet1"
    Sheets.Add
    sh1 = ActiveSheet.Name
    n = Sheets(sh0).ChartObjects.Count
    Application.ScreenUpdating = False
    y0 = 10
    x0 = 100
    For i = 1 To n
    Sheets(sh0).Select
    Sheets(sh0).ChartObjects(i).Select
     ActiveChart.ChartArea.Copy      
    Sheets(sh1).Select
    Sheets(sh1).Cells(i * 10, 2).Select
    ActiveSheet.Paste
     ActiveChart.Parent.Top = y0
     ActiveChart.Parent.Left = x0
     y0 = y0 + ActiveChart.Parent.Height
     If i = 5 Then
     x0 = x0 + ActiveChart.Parent.Width + 10
     y0 = 10
     End If
    Next
    Exit Sub
     Application.ScreenUpdating = True
End Sub

[ 本帖最后由 single_star 于 2009-6-1 17:49 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-1 22:41 , Processed in 0.044146 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表