ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助各位高手

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-2 14:08 | 显示全部楼层 |阅读模式
想请问一下各位大侠,我想用VBA画折线图,在Return中画出每个银行收益率和时间的折线图,就像我画出来的那个一样。在Risk里面每个银行时间、市盈率和市净率画在一张折线图上,并按照银行命名。由于列是不固定的,所以想试一下循环语句,能按一下按钮就全部画出来那种,不好意思说已经做了好几天了,希望各位大侠赐教,不胜感激。

graph.zip

262.29 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2018-6-2 22:15 | 显示全部楼层

你自己的图表太难看了,我没有完全按你的图表做。
(已按你的表格规律自动绘图,请勿随便更改表格式)
图aaa中,你的原图是下边那个,日期挡住线了,我就做成上边那个样式。

aaa.png

图bbb你没有提供原图,我就按我的思路设计了。

bbb.png


  1. Sub AddNewCharts()
  2.     Dim ch As ChartObject, ws As Worksheet
  3.     Dim lastrow&, lastcol&
  4.     Application.ScreenUpdating = False
  5.     Set ws = Worksheets("Return")
  6.     If ws.ChartObjects.Count > 0 Then ws.ChartObjects.Delete
  7.     lastrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
  8.     lastcol = ws.Cells(2, Columns.Count).End(xlToLeft).Column
  9.         For i = 6 To lastcol Step 5
  10.             Set ch = ws.ChartObjects.Add(ws.Cells(5, i - 4).Left, ws.Cells(5, 1).Top, 360, 215)
  11.             ch.Name = ws.Cells(1, i - 4)
  12.             With ch.Chart
  13.                 .ChartType = xlLineMarkers
  14.                 .SeriesCollection.NewSeries
  15.                 .SeriesCollection(1).Values = ws.Range(ws.Cells(3, i), ws.Cells(lastrow, i))
  16.                 .SeriesCollection(1).XValues = ws.Range(ws.Cells(3, 1), ws.Cells(lastrow, 1))
  17.             End With
  18.             With ch.Chart.Axes(xlValue, xlPrimary)
  19.                 .CrossesAt = .MinimumScale
  20.                 .TickLabels.Font.Size = 8
  21.                 .MajorGridlines.Border.ColorIndex = 20
  22.             End With
  23.             With ch.Chart.Axes(xlCategory).TickLabels
  24.                 .Font.Size = 8
  25.                 .NumberFormatLocal = "yyyy/m/d"
  26.             End With
  27.             With ch.Chart
  28.                 .HasTitle = True
  29.                 .ChartTitle.Text = ch.Name
  30.                 .ChartTitle.Font.Size = 18
  31.                 .ChartTitle.Left = 137
  32.                 .ChartTitle.Top = 2
  33.                 .Legend.Delete
  34.                 .PlotArea.Width = 347
  35.                 .PlotArea.Left = 0
  36.                 .PlotArea.Top = 20
  37.                 .PlotArea.Height = 181
  38.             End With
  39.         Next
  40.     Application.ScreenUpdating = True
  41.     MsgBox "绘图完毕"
  42. End Sub


  43. Sub AddNewCharts2()
  44.     Dim ch As ChartObject, ws As Worksheet
  45.     Dim lastrow&, lastcol&
  46.     Application.ScreenUpdating = False
  47.     Set ws = Worksheets("Risk")
  48.     If ws.ChartObjects.Count > 0 Then ws.ChartObjects.Delete
  49.     lastrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
  50.     lastcol = ws.Cells(2, Columns.Count).End(xlToLeft).Column
  51.         For i = 2 To lastcol Step 5
  52.             Set ch = ws.ChartObjects.Add(ws.Cells(5, i).Left, ws.Cells(5, 1).Top, 360, 215)
  53.             ch.Name = ws.Cells(1, i)
  54.             With ch.Chart
  55.                 .ChartType = xlLineMarkers
  56.                 .SeriesCollection.NewSeries
  57.                 .SeriesCollection(1).Values = ws.Range(ws.Cells(3, i), ws.Cells(lastrow, i))
  58.                 .SeriesCollection(1).XValues = ws.Range(ws.Cells(3, 1), ws.Cells(lastrow, 1))
  59.                 .SeriesCollection(1).Name = "市盈率"
  60.                 .SeriesCollection(1).AxisGroup = 1
  61.                 .SeriesCollection.NewSeries
  62.                 .SeriesCollection(2).Values = ws.Range(ws.Cells(3, i + 1), ws.Cells(lastrow, i + 1))
  63.                 .SeriesCollection(2).XValues = ws.Range(ws.Cells(3, 1), ws.Cells(lastrow, 1))
  64.                 .SeriesCollection(2).Name = "市净率"
  65.                 .SeriesCollection(2).AxisGroup = 2
  66.             End With
  67.             With ch.Chart.Axes(xlValue, xlPrimary)
  68.                 .CrossesAt = .MinimumScale
  69.                 .TickLabels.Font.Size = 8
  70.                 .MajorGridlines.Border.ColorIndex = 20
  71.             End With
  72.             With ch.Chart.Axes(xlValue, xlSecondary)
  73.                 .CrossesAt = .MinimumScale
  74.                 .TickLabels.Font.Size = 8
  75.             End With
  76.             With ch.Chart.Axes(xlCategory).TickLabels
  77.                 .Font.Size = 8
  78.                 .NumberFormatLocal = "yyyy/m/d"
  79.             End With
  80.             With ch.Chart
  81.                 .HasTitle = True
  82.                 .ChartTitle.Text = ch.Name
  83.                 .ChartTitle.Font.Size = 18
  84.                 .ChartTitle.Left = 137
  85.                 .ChartTitle.Top = 2
  86.                 .PlotArea.Width = 347
  87.                 .PlotArea.Left = 0
  88.                 .PlotArea.Top = 20
  89.                 .PlotArea.Height = 181
  90.             End With
  91.         Next
  92.     Application.ScreenUpdating = True
  93.     MsgBox "绘图完毕"
  94. End Sub
复制代码
副本Xl0000014.zip (178.23 KB, 下载次数: 3)




评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-2 22:56 | 显示全部楼层
ivccav 发表于 2018-6-2 22:15
你自己的图表太难看了,我没有完全按你的图表做。
(已按你的表格规律自动绘图,请勿随便更改表格式)
...

觉得好感人,,,虽然你帮的不是我,但我还是要说:辛苦了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 23:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ivccav 发表于 2018-6-2 22:15
你自己的图表太难看了,我没有完全按你的图表做。
(已按你的表格规律自动绘图,请勿随便更改表格式)
...

谢谢您,非常非常感谢,学习了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 23:10 | 显示全部楼层
ivccav 发表于 2018-6-2 22:15
你自己的图表太难看了,我没有完全按你的图表做。
(已按你的表格规律自动绘图,请勿随便更改表格式)
...

万分感谢,谢谢您,学习了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 23:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ivccav 发表于 2018-6-2 22:15
你自己的图表太难看了,我没有完全按你的图表做。
(已按你的表格规律自动绘图,请勿随便更改表格式)
...

谢谢您,万分感谢,学习啦!为什么回复总是显示不出来
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:43 , Processed in 0.037950 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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