如何用vba给excel数据画图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用vba给excel数据画图相关的知识,希望对你有一定的参考价值。

我的excel工作表中有500列数据并且每一列的长度不一样,我想给每一列数据画出折线图,手动操作太麻烦了,请问如何用vba实现这样的功能。小弟初学vba就15分了,还望各位大侠相助!!
需要每一列一张图~

参考技术A 不是有录制宏的功能吗?
先建一个简单的图,用宏录制,然后修改用于大数据
以下是我录制的
Sub 绘折线图()

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A5:G5"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R9C1:R9C7"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
End Sub

A5:G5为数据区域
R9C1:R9C7 表示X轴标志所在单元格区域
第9行第1列(即A9)到第9行第7列(即G9)

如果不需要可以把这行删除,得到,然后横坐标就自动123456

Sub 绘折线图()

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A5:G5"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
End Sub本回答被提问者采纳
参考技术B 有一点不太明白,是要每一列一个折线图呢?还是就一个图,有500条线?

在excel中,如何用VBA将每列数据的输出为一个独立的文本文件txt

我根据按每行数据的输出为一个独立的文本文件的代码稍微改了一下,如下
Private Sub export()
Application.ScreenUpdating = False '关闭屏幕刷新
Path = "E:\export"
Dim nro&, nco& '定义区域变量
nco = Cells(1, Columns.Count).End(3).Column
For i = 1 To nco '在行中进行循环
nro = Cells(Rows.Count, i).End(1).Row
Open Path & "\file" & i & ".txt" For Output As #1
Print #1, Join(Application.Transpose(Application.Transpose(Range(Cells(1, i), Cells(nro, i)))), ",")
Close #1 '关闭文本
Next '下次循环
Application.ScreenUpdating = True '开启屏幕刷新,与前对应
MsgBox "导出完成" '完成友好提示
End Sub
报错:运行时错误5 无效的过程调用参数
求问,应该怎么改呢?。
不太懂end()里面是什么意思,可以解释一下吗?

答:end()里面的数字是简写的,这样很不好辨认。强烈建议使用命名参数。

1、2、3、4代表xlToLeft、xlToRight、xlUp、xlDown。也就是点一个单元格,然后按“Ctrl+箭头”后指向的单元格。

我修改了这段代码,已验证了能正确导出。

Private Sub export()
    Application.ScreenUpdating = False
    Path = "E:\\export"
    Dim nro&, nco&
    nco = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To nco
        nro = Cells(Rows.Count, i).End(xlUp).Row
        Open Path & "\\file" & i & ".txt" For Output As #1
        For Each cell In Range(Cells(1, i), Cells(nro, i))
            Print #1, cell
        Next
        Close #1
    Next
    Application.ScreenUpdating = True
    MsgBox "导出完成"
End Sub


追问

先非常感谢。我用你的调试了,能用。但是中间是以回车间隔的,我想以逗号相隔,不是每个都换行,可以吗?。。多谢

追答

可以的,修改后的程序如下
Private Sub export()
Application.ScreenUpdating = False
Path = "E:\export"
Dim nro&, nco&
nco = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To nco
nro = Cells(Rows.Count, i).End(xlUp).Row
Open Path & "\file" & i & ".txt" For Output As #1
Print #1, Join(Application.Transpose(Range(Cells(1, i), Cells(nro, i))), ",")
Close #1
Next
Application.ScreenUpdating = True
MsgBox "导出完成"
End Sub

参考技术A end(3) 和下面那个 end(1) 对调一下追问

对调了,还是报相同的错误。

以上是关于如何用vba给excel数据画图的主要内容,如果未能解决你的问题,请参考以下文章

Excel 如何用VBA提取当前电脑的硬件信息

如何用VBA将EXCEL中的若干的数据导入不同的word文档

Excel中如何用VBA判断行数?

如何用VBA将excel中的数据转化成word文档

excel中如何用VBA一次读入一整行的数据到字符串中? 谢谢!

如何用VBA将excel的数据导入到另外个excel中