Excel VBA_批量自动制图表实例集锦

合集下载

VBA中的自动化报表生成技巧与实例

VBA中的自动化报表生成技巧与实例

VBA中的自动化报表生成技巧与实例自动化报表生成在各行各业中扮演着至关重要的角色。

它提供了一种快速、高效和准确地生成报表的方式,为决策者和管理人员提供了重要的数据支持。

VBA (Visual Basic for Applications) 是一种在Microsoft Office应用软件中嵌入的编程语言,它提供了丰富的功能来自动化任务,包括报表生成。

在本文中,我们将介绍一些VBA中的自动化报表生成技巧和实例,以帮助您提高报表生成的效率和准确性。

一、自动化报表生成的基本原理VBA自动化报表生成的基本原理是通过编写VBA代码,利用Excel中的数据和功能来生成报表。

以下是一个简单的示例,演示了如何使用VBA 自动化生成一个月度销售报表。

1. 创建一个新的Excel工作簿,并命名为"Sales Report"。

2. 导入销售数据到工作簿的一个工作表中。

3. 编写VBA代码,根据销售数据生成月度销售报表。

4. 运行VBA代码,生成报表并保存。

二、VBA中的自动化报表生成技巧1. 使用循环结构:循环结构(如For循环、Do While循环等)可以帮助您处理大量的数据并生成多个报表。

通过在循环中逐步处理数据,您可以自动化生成多个报表,提高工作效率。

2. 利用条件语句:条件语句(如If语句、Select Case语句等)可以帮助您根据不同的条件生成不同的报表。

例如,根据销售额超过一定阈值的产品数量,生成销售额前十名产品的报表。

3. 使用函数和公式:VBA代码中可以使用Excel的内置函数和公式,以便更好地处理数据和生成报表。

例如,可以利用SUM函数计算销售额总和,利用AVERAGE函数计算平均销售额等。

4. 自定义报表样式:VBA中可以通过操作工作表的格式、样式和布局,自定义报表的外观。

您可以调整字体、颜色、边框和填充色等,使报表更具可读性和专业性。

5. 错误处理机制:VBA中的错误处理机制可以帮助您应对代码执行中可能出现的错误。

Excel_VBA编程常用实例(150例)

Excel_VBA编程常用实例(150例)

Excel_VBA编程常用实例(150例)主要内容和特点《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。

这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。

■ 分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解;■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作;■ 各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解;■ 您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。

VBE编辑器及VBA代码输入和调试的基本知识在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。

当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。

下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。

激活VBE编辑器一般可以使用以下三种方式来打开VBE编辑器:■ 使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■ 在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■ 按Alt+F11组合键。

图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器此外,您也可以使用下面三种方式打开VBE编辑器:■ 在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示;■ 在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示;■ 选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

VBA编写自动化图表生成的技巧与实际案例分享

VBA编写自动化图表生成的技巧与实际案例分享

VBA编写自动化图表生成的技巧与实际案例分享随着数据分析和可视化在各个领域的重要性不断提升,自动化生成图表的需求也越来越多。

VBA(Visual Basic for Applications)作为一种强大的宏语言,可以在Microsoft Office套件中实现自动化操作,包括Excel等常用的办公软件。

在本文中,我们将探讨一些VBA编写自动化图表生成的技巧,并分享一些实际案例,帮助读者更好地了解和应用这一技术。

首先,让我们看一下VBA编写自动化图表的技巧。

以下是一些常用的技巧和函数,可以帮助你快速生成自动化图表:1. 使用宏录制功能:Excel的宏录制功能可以帮助我们记录下我们手动操作图表的步骤,然后将其转化为一段VBA代码。

这样,我们就能够重复运行这段代码,实现自动生成图表。

2. Range对象和Chart对象:使用VBA编写图表时,我们需要使用Range对象来选择要绘制图表的数据范围,然后使用Chart对象来创建和操作图表。

通过使用这两个对象,我们可以进行数据处理、样式设置和布局调整等操作。

3. 使用循环:循环结构是实现自动化图表生成的关键。

我们可以使用循环来遍历数据并生成多个图表,从而避免手动重复操作。

常用的循环结构包括For、While和Do循环。

4. 数据处理和转换:在绘制图表之前,我们可能需要对数据进行一些处理和转换。

例如,计算总和、平均值或百分比,删除重复数据,或者将数据从一种格式转换为另一种格式。

在VBA中,我们可以使用各种函数和方法来完成这些任务。

接下来,让我们通过一些实际案例来演示VBA编写自动化图表的应用:案例一:销售数据可视化假设我们有一个包含销售数据的Excel表格,其中包括产品名称、销售额、日期等信息。

我们希望使用VBA自动化生成柱状图,以展示每个产品的销售额变化趋势。

首先,我们可以使用VBA代码选择销售数据的范围,并创建一个柱状图对象。

然后,使用循环结构遍历每个产品的数据,将其添加到图表中。

VBA实现Excel图表自动生成和更新的实例演示

VBA实现Excel图表自动生成和更新的实例演示

VBA实现Excel图表自动生成和更新的实例演示Excel是一款功能强大的办公软件,它不仅可以进行数据输入和计算,还可以用于数据可视化。

图表是一种直观、易于理解的数据展示方式,能够帮助我们更好地分析和理解数据。

然而,手动创建和更新图表是一项繁琐而耗时的任务。

在本文中,将介绍如何使用VBA代码实现Excel图表的自动生成和更新,让你的工作更加高效和便捷。

首先,我们需要在Excel中创建一个空白工作表,并将需要生成图表的数据输入到工作表的指定位置。

在本例中,假设我们有一份销售数据,分别记录了销售量和销售额,并将其输入到A1:B6的单元格范围内。

接下来,我们将打开VBA编辑器,通过按下`Alt+F11`快捷键或在菜单栏中选择“开发工具”>“Visual Basic”来实现。

在VBA编辑器中,我们需要创建一个新的模块,通过右键点击VBA项目,选择“插入”>“模块”来创建。

在新创建的模块中,我们将编写用于生成和更新图表的VBA代码。

首先,我们需要定义一个子过程,用于生成图表。

以下是一个示例的VBA代码:```vbaSub GenerateChart()Dim ws As WorksheetDim rng As RangeDim cht As Chart' 设置工作表和数据范围Set ws = ThisWorkbook.Worksheets("Sheet1")Set rng = ws.Range("A1:B6")' 创建图表Set cht = ws.Shapes.AddChart2(240, xlColumnClustered).Chart With cht' 设置图表数据源和类型.SetSourceData rng.ChartType = xlColumnClustered' 设置图表的标题和轴标签.HasTitle = True.ChartTitle.Text = "销售数据".Axes(xlCategory).HasTitle = True.Axes(xlCategory).AxisTitle.Text = "月份".Axes(xlValue).HasTitle = True.Axes(xlValue).AxisTitle.Text = "数量/金额"' 设置数据系列的名称.SeriesCollection(1).Name = "销售量".SeriesCollection(2).Name = "销售额"End WithEnd Sub```在上述代码中,我们首先声明了一些变量。

VBA实现Excel的图表自动生成

VBA实现Excel的图表自动生成

VBA实现Excel的图表自动生成Excel是微软公司推出的一款功能强大的办公软件,无论在日常工作还是个人生活中,都离不开它的应用。

其中,图表的使用在数据分析和呈现方面尤为重要。

然而,手动创建和调整图表可能是一项繁琐的任务,尤其是在处理大量数据时。

通过使用Visual Basic for Applications(简称VBA),我们可以自动化图表的生成过程,大大提高工作效率。

本文将带您深入理解VBA实现Excel的图表自动生成。

首先,我们需要了解VBA是什么以及它在Excel中的应用。

VBA是一种宏语言,它可以与Excel以及其他Office应用程序进行交互。

通过编写VBA代码,我们可以实现对Excel应用的自定义控制,包括创建、修改和删除工作表、单元格内容的读写、图表的生成和格式化等。

在VBA中,我们可以使用Worksheet对象和Chart对象来控制Excel中的工作表和图表。

首先,通过创建一个Worksheet对象,我们可以选择或创建一个工作表来存储我们的数据和图表。

接下来,通过使用ChartObjects.Add方法,我们可以在工作表中插入一个新图表。

通过设置Chart对象的属性,我们可以自定义图表的类型、样式、数据源等。

然后,通过向Chart对象的SeriesCollection集合中添加数据系列,我们可以定义图表的数据。

最后,通过设置Axis对象的属性,我们可以调整图表的坐标轴刻度、标签等。

通过这样一系列的操作,我们可以轻松生成一个符合我们需求的图表。

在VBA中自动生成图表的过程主要包括以下几个步骤:1. 选择或创建一个工作表来存储数据和图表。

在VBA中,可以使用Worksheets对象的Add方法来新建一个工作表,使用Activate方法来激活一个已有的工作表。

2. 插入一个新图表。

可以使用ChartObjects对象的Add方法,在当前工作表中插入一个新的图表对象。

3. 设置图表的基本属性。

excelvba实例教程#060:使用vba自动生成图表

excelvba实例教程#060:使用vba自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。

1.Sub ChartAdd()2. Dim myRange As Range3. Dim myChart As ChartObject4. Dim R As Integer5. With Sheet16..7.R = .Range("A65536").End(xlUp).Row8.Set myRange = .Range("A" & 1 & ":B" & R)9.Set myChart = .(120, 40, 400, 250)10.With11..ChartType = xlColumnClustered12..SetSourceData Source:=myRange, PlotBy:=xlColumns13..ApplyDataLabels ShowValue:=True14..HasTitle = True15.. = "图表制作示例"16.With .17. .Size = 2018. .ColorIndex = 319. .Name = "华文新魏"20.End With21.With .22. .ColorIndex = 823. .PatternColorIndex = 124. .Pattern = xlSolid25.End With26.With .27. .ColorIndex = 3528. .PatternColorIndex = 129. .Pattern = xlSolid30.End With31..SeriesCollection(1).32.With .SeriesCollection(2).33. .Size = 1034. .ColorIndex = 535.End With36.End With37. End With38. Set myRange = Nothing39. Set myChart = Nothing40.End Sub代码解析:ChartAdd过程在工作表中自动生成图表,图表类型为簇状柱形图。

Excel高级技巧利用宏和VBA实现自动化报表生成

Excel高级技巧利用宏和VBA实现自动化报表生成

Excel高级技巧利用宏和VBA实现自动化报表生成Excel高级技巧——利用宏和VBA实现自动化报表生成在大多数工作环境中,数据报表的生成是一项繁琐且重复性高的任务。

然而,利用Excel的高级技巧,我们可以通过编写宏和使用VBA (Visual Basic for Applications)来实现报表的自动化生成,从而节省大量的时间和精力。

本文将介绍如何利用Excel宏和VBA实现自动化报表生成的方法及步骤。

一、了解宏和VBA的基础知识在使用宏和VBA之前,我们需要对它们的基本概念有一定的了解。

Excel宏是一系列动作的记录和回放,可以将我们在Excel中进行的操作记录下来,并在需要时快速执行这些操作。

而VBA是一种基于Visual Basic语言的宏编程语言,可以通过编写程序代码来实现更复杂的操作和功能。

二、录制宏在开始编写VBA代码之前,我们可以先录制一个宏来记录我们的操作步骤,以便后续进行分析和修改。

录制宏的步骤如下:1. 打开Excel,选择“开发工具”选项卡(如果没有该选项卡,需要自定义菜单栏中添加“开发工具”)。

2. 点击“录制宏”按钮,弹出录制宏对话框。

3. 在弹出的对话框中,输入宏的名称和快捷键(可选),然后点击“确定”按钮。

4. 开始进行操作,Excel会记录你的每一步操作。

5. 完成后,点击“停止录制”按钮,录制宏结束。

三、编辑VBA代码录制宏后,我们可以进一步编辑VBA代码,以实现更灵活和复杂的功能。

编辑VBA代码的步骤如下:1. 打开“开发工具”选项卡,点击“Visual Basic”按钮,弹出Visual Basic编辑器。

2. 在编辑器中,可以看到一个名为“VBAProject”的项目,在其中可以找到录制的宏。

3. 双击打开宏,即可查看和编辑该宏的VBA代码。

4. 在代码窗口中,可以进行各种VBA代码的编写和修改。

四、编写自动化报表生成的VBA代码下面是一个示例,展示了如何利用VBA代码实现自动化报表生成的过程。

VBA在自动化报表生成中的应用实例分享

VBA在自动化报表生成中的应用实例分享

VBA在自动化报表生成中的应用实例分享自动化报表生成是现代工作环境中常见的需求之一。

随着电子表格软件的发展,如Microsoft Excel,人们可以更加高效地生成各种形式的报表。

然而,手动创建报表仍然是一项繁琐且耗时的任务。

在这篇文章中,我们将分享一些使用Visual Basic for Applications(VBA)的实用示例,以帮助你利用自动化生成报表。

1. 数据源的处理和导入在报表生成的过程中,首先需要处理和导入数据源。

通常情况下,数据源可能来自不同的文件或数据库。

使用VBA可以编写宏来自动化这一过程。

例如,你可以编写一个VBA宏来从指定的文件夹中导入所有Excel文件的数据,并将它们合并到一个工作簿中的不同工作表中。

通过使用循环结构和文件处理函数,可以轻松实现这一操作。

2. 数据清洗和转换一旦数据导入到工作簿中,下一步是对数据进行清洗和转换,以使其适应报表需求。

使用VBA,你可以编写宏来处理数据,比如删除重复项、填充空白单元格、格式化日期等。

你还可以编写代码来进行数据转换,例如从字符串转换为数字,或者在数据中进行逻辑运算。

通过这些操作,可以确保你的数据准确无误地显示在报表中。

3. 报表模板的创建和设置报表通常具有特定的格式和布局。

使用VBA,你可以创建报表模板,并设置各种样式和格式规则。

例如,你可以编写宏来自动创建表头,设置字体和颜色,添加边框和网格线等。

你还可以使用VBA来自动调整列和行的宽度和高度,以确保报表的可读性和专业性。

4. 数据图表和图形的添加报表经常包含数据图表和图形,以更直观地展示数据。

使用VBA,你可以编写宏来自动添加和调整各种类型的图表,如柱状图、折线图、饼图等。

你可以根据数据的变化自动更新图表,并应用不同的样式和颜色。

此外,你还可以在报表中添加其他图形,如箭头、符号和图片,以增强可视化效果。

5. 报表的数据分析和总结最后,报表的目的是为了数据分析和总结。

使用VBA,你可以编写宏来进行各种统计运算,如计算平均值、求和、百分比等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1, 自动生成图表‘/thread-1058346-1-1.html‘统计报告0925a.xls‘2013-9-25Sub lqxs()Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$Dim dz$, dz3$, yy$, nm$Application.ScreenUpdating = FalseSheet3.ActivateArr = [a1].CurrentRegionks = 3: js = UBound(Arr) - 1nm = yy = Left(nm, Len(nm) - 3)nm1 = "图表6"nm2 = "图表4"dz = "A2:B" & js & ",D2:E" & jsActiveSheet.ChartObjects(nm1).ActivateWith ActiveChart.SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns.SeriesCollection(1).Selectdz1 = "R3C2:R" & js & "C2".SeriesCollection(1).Values = "='" & nm & "'!" & dz1dz2 = "R3C4:R" & js & "C4".SeriesCollection(2).Values = "='" & nm & "'!" & dz2dz3 = "R3C5:R" & js & "C5".SeriesCollection(3).Values = "='" & nm & "'!" & dz3.ChartTitle.SelectSelection.Characters.Text = yy & "月份合格率"End WithActiveSheet.ChartObjects(nm2).ActivateWith ActiveChart.ChartArea.Selectdz = "H2:T2,H" & js + 1 & ":T" & js + 1.SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= _xlRowsdz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20".SeriesCollection(1).Values = "='" & nm & "'!" & dz2.ChartTitle.SelectSelection.Characters.Text = yy & "月份不良趋势统计"End WithRange("A" & ks).SelectApplication.ScreenUpdating = True MsgBox "OK"End Sub2, 批量插入图表‘2010-9-27‘批量绘图表.xlsSub ChartsAdd()Dim myChart As ChartObjectDim i As IntegerDim R As IntegerDim m As IntegerR = Sheet1.Range("A65536").End(xlUp).Row - 1m = Abs(Int(-(R / 4)))Sheet2.ChartObjects.DeleteFor i = 1 To RSet myChart = Sheet2.ChartObjects.Add _(Left:=(((i - 1) Mod m) + 1) * 350 - 320, _Top:=((i - 1) \ m + 1) * 220 - 210, _Width:=330, Height:=210)With myChart.Chart.ChartType = xlColumnClustered.SetSourceData Source:=Sheet1.Range("B2:M2").Offset(i - 1), _PlotBy:=xlRowsWith .SeriesCollection(1).XValues = Sheet1.Range("B1:M1").Name = Sheet1.Range("A2").Offset(i - 1).ApplyDataLabels AutoText:=True, ShowValue:=True.DataLabels.Font.Size = 10End With.HasLegend = FalseWith .ChartTitle.Left = 5.Top = 1.Font.Size = 14 = "华文行楷"End WithWith .PlotArea.Interior.ColorIndex = 2.PatternColorIndex = 1.Pattern = xlSolidEnd With.Axes(xlCategory).TickLabels.Font.Size = 10.Axes(xlValue).TickLabels.Font.Size = 10End WithNextSheet2.SelectSet myChart = NothingEnd Sub3, 批量插入图表‘2013-9-30‘/forum.php?mod=viewthread&tid=1059674&page=1#pid7221588Sub OpenFiles()Dim myX As RangeDim myY As RangeDim i%, j&Application.ScreenUpdating = FalseActiveSheet.ChartObjects("图表1").ActivateFor i = 1 To ActiveChart.SeriesCollection.Count ‘序列集合对象的用法ActiveChart.SeriesCollection(i).Delete ‘删除原有的序列NextWith ActiveChart.Axes(xlCategory).MaximumScale = 100.MinimumScale = 0.MajorUnit = 20.MinorUnit = 4End WithWith ActiveChart.ChartType = xlXYScatterLinesNoMarkers ‘散点图For i = 1 To Sheet1.Range("IV1").End(xlToLeft).Column + 1 Step 2j = Sheet1.Range("A65536").Offset(0, i - 1).End(xlUp).RowSet myX = Sheet1.Cells(4, i).Resize(j - 3, 1)Set myY = myX.Offset(0, 1)With .SeriesCollection.NewSeries.Values = myY.XV alues = myX.Name = Sheet1.Cells(1, i).Value ‘序列名.MarkerStyle = -4142 ‘没有标志显示End WithNext iEnd With[a1].SelectApplication.ScreenUpdating = TrueEnd Sub4, 图表对象您可以结合使用Add 方法和ChartWizard 方法,添加包含工作表数据的新图表。

本示例将基于名为Sheet1 的工作表上单元格A1:A20 中的数据添加一个新的折线图。

With Charts.Add.ChartWizard source:=Worksheets("Sheet1").Range("A1:A20"), _Gallery:=xlLine, Title:="February Data"End WithChartObject 对象充当Chart 对象的容器。

ChartObject 对象的属性和方法控制工作表上嵌入图表的外观和大小。

ChartObject 对象是ChartObjects 集合的成员。

ChartObjects 集合包含单一工作表上的所有嵌入图表。

使用ChartObjects(index)(其中index 是嵌入图表的索引号或名称)可以返回单个ChartObject 对象。

示例以下示例设置名为“Sheet1”的工作表上嵌入图表Chart 1 中的图表区图案。

Worksheets("Sheet1").ChartObjects(1).Chart. _ChartArea.Format.Fill.Pattern = msoPatternLightDownwardDiagonal当选定嵌入图表时,其名称显示在“名称”框中。

使用Name 属性可设置或返回ChartObject 对象的名称。

以下示例对工作表“Sheet1”上的嵌入图表“Chart 1”使用了圆角。

Worksheets("sheet1").ChartObjects("chart 1").RoundedCorners = True 5, 保持图表位置居中by:Lee1892‘2013-12-03Private Sub KeepSquare()Dim dXDiff#, dYDiff#, dDiff#Dim dXMin#, dXMax#, dYMin#, dYMax#With ChartObjects(1).ChartWith .Axes(xlCategory).MaximumScaleIsAuto = True.MinimumScaleIsAuto = TruedXMax = .MaximumScale: dXMin = .MinimumScaledXDiff = dXMax - dXMinEnd WithWith .Axes(xlValue).MaximumScaleIsAuto = True.MinimumScaleIsAuto = TruedYMax = .MaximumScale: dYMin = .MinimumScaledYDiff = dYMax - dYMinEnd WithdDiff = dXDiffIf dXDiff < dYDiff Then dDiff = dYDiffWith .Axes(xlCategory).MaximumScale = dXMax + (dDiff - dXDiff) / 2.MinimumScale = dXMin - (dDiff - dXDiff) / 2End WithWith .Axes(xlValue).MaximumScale = dYMax + (dDiff - dYDiff) / 2.MinimumScale = dYMin - (dDiff - dYDiff) / 2End WithEnd WithEnd Sub6, 分表,修改数据序列公式‘/thread-1100811-1-1.htmlSub lqxs()Dim Sht As Worksheet, Sht1 As WorksheetDim Arr, i&, r%, Arr1(), ks, js, nm$Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseSet Sht1 = Sheets("源表")Sht1.ActivateFor Each Sht In SheetsIf <> Then Sht.DeleteNext ShtArr = [a1].CurrentRegionFor i = 3 To UBound(Arr)If Arr(i, 1) <> "" Thenr = r + 1ReDim Preserve Arr1(1 To r)Arr1(r) = iEnd IfNextFor i = 1 To rIf i <> r Thenjs = Arr1(i + 1) - 1Elsejs = UBound(Arr)End Ifks = Arr1(i)Sht1.Copy after:=Sheets(Sheets.Count) = Arr(ks, 1)[a3:e500].ClearContentsSht1.Cells(ks, 1).Resize(js - ks + 1, 5).Copy [a3]nm = Arr(ks, 1)ActiveSheet.ChartObjects(1).ActivateWith ActiveChart.SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns.FullSeriesCollection(1).SelectSelection.Formula = "=SERIES(" & nm & "!R2C4," & nm & "!R3C1:R" & js - ks + 3 & "C2," & nm & "!R3C4:R" & js - ks + 3 & "C4,1)".FullSeriesCollection(2).SelectSelection.Formula = "=SERIES(" & nm & "!R2C5," & nm & "!R3C1:R" & js - ks + 3 & "C2," & nm & "!R3C5:R" & js - ks + 3 & "C5,2)".FullSeriesCollection(3).Delete.FullSeriesCollection(3).DeleteEnd WithNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub7, 自动制作多图表‘/thread-919757-1-1.html‘2012-9-13Sub ChartsAdd()Dim myChart As ChartObjectDim i As IntegerDim R As IntegerR = Int(Sheet1.Range("A65536").End(xlUp).Row - 1) / 20ActiveSheet.ChartObjects.DeleteFor i = 1 To RSet myChart = Sheet1.ChartObjects.Add _(Left:=200, _Top:=(i - 1) * 260 + 20, _Width:=330, Height:=210)With myChart.Chart.ChartType = xlColumnClustered.SetSourceData Source:=Cells(20 * i - 18, 1).Resize(20, 2)End WithNextSet myChart = NothingEnd Sub‘2014-5-4‘/thread-1118085-1-1.htmlSub ChartsAdd()Dim myChart As ChartObjectDim Myc%, i&On Error Resume NextMyc = [iv3].End(xlToLeft).Columnnm = ActiveSheet.ChartObjects.DeleteFor i = 1 To Myc Step 8Set myChart = ActiveSheet.ChartObjects.Add _(Left:=Cells(3, i).Left, _Top:=Cells(3, i).Top, _Width:=Cells(3, i).Resize(1, 7).Width, Height:=Cells(3, i).Resize(16, 1).Height) With myChart.Chart.ChartType = xlXYScatterLinesNoMarkers '散点图.SetSourceData Source:=Cells(550, i + 1).Resize(1351, 2)End WithmyChart.ActivateWith ActiveChart.FullSeriesCollection(1).Select.FullSeriesCollection(1).XValues = "=" & nm & "!" & Cells(550, i + 2).Resize(1351, 1).Address.FullSeriesCollection(1).Values = "=" & nm & "!" & Cells(550, i + 1).Resize(1351, 1).Address.FullSeriesCollection(1).Name = "=" & nm & "!" & Cells(2, i + 1).Address.SeriesCollection.NewSeries.FullSeriesCollection(2).XValues = "=" & nm & "!" & Cells(550, i + 6).Resize(1351, 1).Address.FullSeriesCollection(2).Values = "=" & nm & "!" & Cells(550, i + 5).Resize(1351, 1).Address.FullSeriesCollection(2).Name = "=" & nm & "!" & Cells(2, i + 5).Address.Axes(xlValue).MaximumScale = 500.Axes(xlValue).MinimumScale = -200.Axes(xlValue).MajorUnit = 100.Axes(xlValue).MinorUnit = 20.2.Axes(xlCategory).MinimumScale = -0.000005.Axes(xlCategory).MaximumScale = 0.00003.Axes(xlCategory).MajorUnit = 0.000005.Axes(xlCategory).MinorUnit = 0.000001.Legend.Position = xlBottom.SetElement (msoElementChartTitleAboveChart).ChartTitle.Text = Cells(1, i).ValueWith .ChartTitle.Format.TextFrame2.TextRange.Font.Size = 14End WithEnd WithNextSet myChart = NothingEnd Sub8, 自动生成图表‘2014-8-5‘/thread-1142829-1-1.htmlSub lqxs()Dim Myr&, bt$Myr = Cells(Rows.Count, 1).End(xlUp).RowActiveSheet.ChartObjects.DeleteActiveSheet.ChartObjects.Add Left:=[g3].Left, _Top:=[g3].Top, _Width:=[g3].Resize(1, 7).Width, Height:=[g3].Resize(16, 1).HeightActiveSheet.ChartObjects(1).ActivateWith ActiveChart.ChartType = xlXYScatterSmoothNoMarkers.SetSourceData Source:=Sheets("CHART").Range("A3:B" & Myr), PlotBy _:=xlColumns.SeriesCollection.NewSeries.SeriesCollection(1).XValues = "=CHART!R3C4:R" & Myr & "C4".SeriesCollection(1).Values = "=CHART!R3C2:R" & Myr & "C2".SeriesCollection(1).Name = "=CHART!R2C2".SeriesCollection(2).XValues = "=CHART!R3C4:R" & Myr & "C4".SeriesCollection(2).Values = "=CHART!R3C1:R" & Myr & "C1".SeriesCollection(2).Name = "=CHART!R2C1".HasTitle = True: bt = ActiveSheet.TextBox1.Text.ChartTitle.Characters.Text = bt.Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = boBox2.Text.Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = boBox1.Text.Axes(xlValue).MajorUnit = 1.ChartTitle.SelectWith Selection.Font.FontStyle = "加粗".Size = 18End With.PlotArea.SelectWith Selection.Border.Weight = xlThin.LineStyle = xlNoneEnd WithSelection.Interior.ColorIndex = xlNoneEnd WithRange("a1").SelectEnd Sub9, 自动制作多图表‘2014-9-28‘/thread-1155286-1-1.htmlSub lqxs()Dim myChart As ChartObject, Arr, i&, mx, mn, lfActiveSheet.ChartObjects.DeleteArr = [a1].CurrentRegionFor i = 1 To UBound(Arr, 2)lf = Cells(1, UBound(Arr, 2) + 2).Leftmx = Application.Max(Cells(1, i).Resize(UBound(Arr), 1))mn = Application.Min(Cells(1, i).Resize(UBound(Arr), 1))Set myChart = ActiveSheet.ChartObjects.Add _(Left:=lf, Top:=(i - 1) * 220 + 10, _Width:=450, Height:=210)With myChart.Chart.ChartType = xlLine ‘折线图.SetSourceData Source:=Cells(1, i).Resize(UBound(Arr), 1), _PlotBy:=xlColumns.HasLegend = True.HasTitle = False.Axes(xlValue).MajorUnit = 10 ‘主要分尺寸.Axes(xlValue).MinimumScale = Int((mn - 10) / 10) * 10 ‘最小值.Axes(xlValue).MaximumScale = Int((mx + 10) / 10) * 10 ‘最大值End WithNextEnd Sub10, 根据指定级别自动制作多图表‘2015-4-23‘/thread-342019-1-1.htmlPrivate Sub Worksheet_Change(ByVal Target As Range)If Target.Address <> "$O$1" Then Exit SubDim Arr, i&, m&, j&Dim d, k, t, tt, ks, js, aa, c1%, c2%, c3%Set d = CreateObject("Scripting.Dictionary")Arr = [a1].CurrentRegionFor i = 2 To UBound(Arr)d(Arr(i, 2)) = d(Arr(i, 2)) & i & ","Nextk = d.keys: tt = d.itemsIf d.exists(Target.Value) Thent = d(Target.Value)m = Application.Match(Target.Value, k, 0) + 1t = Left(t, Len(t) - 1)If InStr(t, ",") Thenaa = Split(t, ",")ks = aa(0): js = aa(UBound(aa))For j = 2 To 6ActiveSheet.ChartObjects("图表" & j).ActivateSelect Case jCase 2c1 = 4: c2 = 5: c3 = 6Case 3c1 = 6: c2 = 7: c3 = 8Case 4c1 = 6: c2 = 7: c3 = 9Case 5c1 = 6: c2 = 7: c3 = 10Case 6c1 = 6: c2 = 7: c3 = 11End SelectWith ActiveChart.PlotArea.Select.ChartType = xlBubble.SeriesCollection(1).XValues = "=统计!R" & ks & "C" & c1 & ":R" & js & "C" & c1.SeriesCollection(1).Values = "=统计!R" & ks & "C" & c2 & ":R" & js & "C" & c2.SeriesCollection(1).BubbleSizes = "=统计!R" & ks & "C" & c3 & ":R" & js & "C" & c3.SeriesCollection(1).Name = "=统计!R" & ks & "C2"End WithNextEnd IfEnd If 'End Sub11, 自动制作多图表(散点图+趋势线)‘2015-4-30‘/thread-342407-1-1.htmlSub ChartsAdd_lqxs()Dim myChart As ChartObjectDim i&, R&R = Int(Sheet1.Range("A65536").End(xlUp).Row - 1) / 6ht = [a2:a16].Height: wt = [f1:l1].WidthActiveSheet.ChartObjects.DeleteFor i = 1 To RSet myChart = Sheet1.ChartObjects.Add _(Left:=[f1].Left, _Top:=(i - 1) * 210, _Width:=wt, Height:=ht)With myChart.Chart.ChartType = xlXYScatter.SetSourceData Source:=Cells(6 * i - 4, 1).Resize(5, 2).FullSeriesCollection(1).Trendlines.Add.FullSeriesCollection(1).Trendlines(1).SelectWith Selection.Type = xlPolynomial.Order = 3End WithSelection.DisplayEquation = TrueSelection.DisplayRSquared = TrueEnd WithNextSet myChart = NothingEnd Sub。

相关文档
最新文档