Excel 的 VBA 代码。如何在单独的工作表中创建图表?

2023-12-23

我有一个关于如何使用 vba 代码自动创建绘图(图表)的问题。 我可以有一个包含两种列的 Excel 文档:可分为 6 列或可分为 7 列。 前两张图片代表我如何接收 Excel 文档。

我要做的是:

Step 1.复制 A 列并将其放在每组 6 或 7 列之前,并插入一个空列,如图 3 所示。

Step 2.为新工作表中创建的每个新组创建一个图表(例如,如果我有 100 组列,我想要 100 张图。每个图都在一张表上)

The 问题是: 如何将每个图表放在单独的表格中?

如果需要,第一张纸的名称是"HOOD"

我编写的代码可以执行步骤 1,还可以创建绘图,但问题是我无法将每个图形都放在一张纸上。

我可以执行步骤 1,从步骤 2 开始,我只能创建图表,但无法将每个图表放入新工作表中。

Sub Macro_Linearity_Plot()

        Dim pas As Integer
        Dim val As Integer

        Dim lCol As Integer
        Dim i As Integer
        Dim uCol As Integer


        ' define the numbers of columns. it can be 6 or 7 columns.

        lCol = Cells(1, Columns.Count).End(xlToLeft).Column
        val = Range("A1").Value
        pas = val + 2


        ' insert 2 new empty columns

        For colx = pas To lCol Step pas

        Columns(colx).Insert Shift:=xlToRight
        Columns(colx).Insert Shift:=xlToRight
        Next



        ' insert column number 1

        For colx = pas + 1 To lCol Step pas
        Sheets("HOOD").Columns(1).Copy
        Sheets("HOOD").Columns(colx).PasteSpecial xlPasteValues
        Next

        ' for every group of columns created at the last step generate a chart

        uCol = Cells(1, Columns.Count).End(xlToLeft).Column
        For i = -1 To uCol Step pas
        Range(Cells(2, i + 2), Cells(121, i + pas)).Select
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range(Cells(2, i + 2), Cells(121, i + pas))
        ActiveChart.ChartType = xl3DArea
        Next



        End Sub

谢谢 :)

UPDATED

新代码是:

    Sub Macro_Linearity_Plot()

        Dim pas As Integer
        Dim val As Integer

        Dim lCol As Integer
        Dim i As Integer
        Dim uCol As Integer


        ' define the numbers of columns. it can be 6 or 7 columns.

        lCol = Cells(1, Columns.Count).End(xlToLeft).Column
        val = Range("A1").Value
        pas = val + 2


        ' insert 2 new empty columns

        For colx = pas To lCol Step pas

        Columns(colx).Insert Shift:=xlToRight
        Columns(colx).Insert Shift:=xlToRight
        Next



        ' insert column number 1

        For colx = pas + 1 To lCol Step pas
        Sheets("HOOD").Columns(1).Copy
        Sheets("HOOD").Columns(colx).PasteSpecial xlPasteValues
        Next

        ' for every group of columns created at the last step generate a chart

        uCol = Cells(1, Columns.Count).End(xlToLeft).Column
        For i = -1 To uCol Step pas


        Range(Cells(2, i + 2), Cells(121, i + pas)).Select
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range(Cells(2, i + 2), Cells(121, i + pas))
        ActiveChart.ChartType = xl3DArea
          xx = 1  'Just to identify the Graph order

ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Chart" & xx

'Count the sheets and Charts for moving Chart to the end
ws = ThisWorkbook.Worksheets.Count
cht = ThisWorkbook.Charts.Count

Sheets("Chart" & xx).Move After:=Sheets(ws + cht)

xx = xx + 1


        Next



        End Sub

但也有一些错误:


您遇到的问题是您使用时遇到的典型问题不合格范围。不合格的范围指的是活动工作表,每次插入新工作表时它都会发生变化,因此您的代码在第一个循环后开始变得混乱。

起初我通过以下方式修复了你的代码“重新激活”床单HOOD在每个循环之后,但除了一些其他修复之外,我更喜欢完全重写您的代码,以便它永远不会引用不合格的范围。

Sub Macro_Linearity_Plot()
    Dim pas As Integer, val As Integer, lCol As Integer, i As Integer, ch As Chart

    With Sheets("HOOD")
        lCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
        val = .Range("A1").Value
        pas = val + 2

        ' insert an empty column and a copy of column A
        For colx = pas To lCol Step pas
            .Columns(colx).Insert Shift:=xlToRight
            .Columns(colx).Insert Shift:=xlToRight
            .Columns(1).copy .Columns(colx + 1)
        Next
        Application.CutCopyMode = False

        ' for every group of columns generate a chart and move it to end of Workbook
        lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        For i = -1 To lCol Step pas
            Set ch = ActiveWorkbook.Charts.Add '<~~ add a chart in own new sheet
            ch.ChartType = xl3DArea
            ch.SetSourceData .Range(.Cells(2, i + 2), .Cells(121, i + pas))
            ch.name = "Chart" & CInt(1 + (i + 2) / pas)
            ch.Move , ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        Next
    End With
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 的 VBA 代码。如何在单独的工作表中创建图表? 的相关文章

随机推荐

  • 我如何搜索文件并将它们压缩到一个 zip 文件中

    我尝试使用以下命令搜索文件并压缩它们 find regexpression exec zip 但是它不起作用 我怎样才能做到这一点 您使用的命令将分别对每个文件运行 zip 请尝试以下操作 find name
  • IIS 站点和 nant/nantcontrib?

    是否可以使用 NAnt 管理 IIS Web 应用程序 例如停止或启动它 Nant 具有 servicecontroller 任务 您可以使用它仅停止 启动 Web 服务器或整个 IIS 我通常使用它来停止 启动 Web 服务器
  • 如何在 php 中正确为我的 tbl_item 制作下拉列表菜单

    我的下拉列表菜单遇到问题 它不断出现 wamp 错误 我的下拉列表菜单将来自 tbl 项目的项目名称 postgres DB funcContainer php 页面 function DropdownListMenu label name
  • 扩展 MIDL 接口和 COM 对象设计

    我读过有关各种 COM 设计模式的详细信息COM 程序员的食谱 http msdn microsoft com en us library ms809982 aspx以及一些相关的 SO 线程 特别是讨论组合与多重继承的线程 https s
  • 我的插件未正确更新(upgrader_process_complete 问题)

    我有安装了我的插件的用户 我们将其称为 v6 我的插件的 V6 版本没有注册处理程序upgrader process complete 在我的新版本中 我有upgrader process complete注册对我的数据库表进行一些升级 然
  • 为什么 @FunctionalInterface 没有在 JDK 中符合条件的所有接口上使用?

    Java 8 为我们提供了许多有趣的方法来使用函数式接口以及新的注释 功能接口 http docs oracle com javase 8 docs api java lang FunctionalInterface html 它的工作是告
  • 使用 Postgres 将邻接列表转为 JSON 图

    我有以下标签表架构 CREATE TABLE tags id integer NOT NULL name character varying 255 NOT NULL parent id integer 我需要构建一个查询来返回以下结构 为
  • 获取 CFNetwork SSLHandshake 失败 (-9806) 错误

    我正在尝试使用调用我的网址 NSDictionary landingDetails appDelegate landingPage NSString devinf UIDevice currentDevice systemVersion N
  • Cassandra CQL3 导入 CSV

    背景 我创建了一个名为AvailableDomains 的架构 简单策略 1 个节点 在该键空间中 我创建了 1 个表 列族 称为包含列 id urn 时间戳 标志 的域 除时间戳之外的所有类型文本都是时间戳类型 我启动cassandra
  • 视频元素上出现不需要的边框[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何用webpack+react渲染图像?

    我对 React 和 Webpack 还很陌生 我遇到了这个我不明白的奇怪问题 问题 当我检查图像时 上面是我看到的 显然没有显示我的图像 我正在使用文件加载器 我的结构 网页包 const path require path const
  • R 中 KerasR LSTM 的数组转换

    为了在 KerasR 中使用 LSTM 我必须转换我的 NumericMatrix 335 x 1515 我想我在这里找到了解决方案https stats stackexchange com questions 274478 underst
  • rgl.snapshot() 不再有效

    我刚刚将 R 和 rgl 升级到以下版本 现在 rgl snapshot 不再起作用 它在以前的版本中有效 有没有解决的办法 R版本2 12 1 2010 12 16 rgl 版本 0 92 798 gt library rgl gt x
  • 从Dictionary中高效获取IReadOnlyDictionary

    public class Flea Animals var fleas new Dictionary
  • 是否可以使用 Nokogiri 解析样式表?

    我花了两个小时在谷歌上搜索这个问题 但找不到任何好的答案 所以让我们看看人类是否可以击败谷歌计算机 我想用 Ruby 解析样式表 以便可以将这些样式应用到文档中的元素 使样式内联 所以 我想采取类似的东西 并能够将其提取到某种 Nokogi
  • json.net - 如何仅在根对象上添加属性 $type

    我想修改我的 json NET 序列化器 以仅将 type 属性添加到实现给定接口的对象 而不添加到任何属性或嵌套对象 使用 TypeNameHandling Auto 默认 PropertyA 123 PropertyB foo Prop
  • Netty closeFuture().sync().channel();块休息 API

    我正在学习 Netty 并开始使用 Spring Boot 一些教程 我的目标是创建一个应用程序 该应用程序设置一个 TCP 端口来接收消息并通过 REST API 呈现它们 大多数教程都说我应该添加这样的东西 serverChannel
  • 如何将 VoiceOver 辅助功能添加到应用程序的图标徽章编号?

    问题 如何添加自定义 VoiceOver 辅助功能Label or Hint到应用程序 图标徽章编号 例如 当iOS设置Accessibility gt VoiceOver被转动On VoiceOver 会大声朗读屏幕上触摸的项 目 对于
  • PE文件如何映射到内存中?

    这几天我一直在研究PE格式 还有几个问题 数据部分是否被映射到进程的内存中 或者程序是否从磁盘中读取它 如果它确实被映射到内存中 那么进程如何获取该部分的偏移量 以及其他部分 有没有什么方法可以获取已映射到内存中的进程的入口点 而不触及磁盘
  • Excel 的 VBA 代码。如何在单独的工作表中创建图表?

    我有一个关于如何使用 vba 代码自动创建绘图 图表 的问题 我可以有一个包含两种列的 Excel 文档 可分为 6 列或可分为 7 列 前两张图片代表我如何接收 Excel 文档 我要做的是 Step 1 复制 A 列并将其放在每组 6