首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从同一模板为不同的输入/场景生成多个图表

如何从同一模板为不同的输入/场景生成多个图表
EN

Stack Overflow用户
提问于 2019-01-15 07:40:13
回答 2查看 79关注 0票数 0

我正在使用Excel,并且有一些基本的VBA /宏知识。我有一个相当大的数据集,每周都会更新。在此基础上,我使用一系列Index/match为特定产品生成一个40列(日期)乘4行(时间序列数据)的表。我有15-20种不同的产品,它们经常变化。然后使用这个4x40表格来生成图表。使用这种方法,我可以用下拉框选择产品(数据验证),我的索引/匹配将正确的数据拉到4x40表中,然后显示该产品的图表。但我希望有一个宏,它可以为产品1生成图表,将其作为图像复制并粘贴到word文档中,然后对产品2和3执行相同的操作,依此类推,然后将单词文档保存为pdf以供分发。

一种选择是创建15-20个4x40表和15-20个图表,然后复制/粘贴所有这些表,但随着产品的更改,如果需要更改格式,这将成为一场噩梦。

EN

回答 2

Stack Overflow用户

发布于 2019-01-15 08:51:52

如果没有看到你确切的工作表,很难给出一段确切的代码。然而,我最近做了一个与此类似的要求的工作簿。

作为答案的大纲,您可以考虑使用循环遍历您的15 - 20个产品列表,将每个产品放入您当前进行数据验证的单元格中(确保您首先删除了任何验证),这将更新索引匹配以及您的图表。在该循环中,您可以包含一些代码,以便在转到下一个产品之前将工作表保存为pdf (或者将图表放在单独的工作表中并显式引用它)。

例如,如果你的验证是在单元格A1工作表“表”中,而你的产品列表是A2:A20工作表" products“,这样的东西会让你得到一些好处;

代码语言:javascript
复制
Sub save_charts()

Dim i As Long
Dim path As String
Dim product_name As String
Dim ws_name As String
Dim file_name As String

i = 2
path = Application.DefaultFilePath

Do Until Worksheets("Products").Cells(i, 1).Value = ""

If Worksheets("Products").Cells(i, 1).Value <> "" Then
product_name = Worksheets("Table").Cells(1, 1).Value
ws_name = product_name & " Chart"
file_name = path & "\" & ws_name
Worksheets("Table").Cells(1, 1).Value = Worksheets("Products").Cells(i, 1).Value
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        file_name, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True

End If

i = i + 1

Loop

End Sub

我知道你提到在导出为pdf之前将其复制到word中?这是一项要求吗?因为此代码仅使用Excel的本机导出到pdf功能。

我希望这能帮到你。

干杯。

票数 0
EN

Stack Overflow用户

发布于 2019-01-16 03:52:03

一种替代方案,将自动生成所有20个图表与每次刷新0 vba将是做以下步骤1次: 1.创建一个透视表和透视表图表,你需要为给定的产品,例如过滤它在一个单一的产品代码,创建基本图表,现在推迟格式化。此数据透视表的源数据需要包括所有20个产品的数据

  1. 在步骤1的源数据中,添加另一个名为FilterID的列,并按公式设置此列,以便1=第一个产品的数据;2,第二个;3,依此类推。
  2. 返回步骤1透视表并添加FilterID作为透视筛选器,将其设置为1,以便只有第一个产品出现在图表上
  3. 设置图表的格式现在复制包含数据透视表和数据透视表的工作表
  4. FilterID on each

<

  1. >G211>

此时,您唯一需要的vba是循环浏览每个包含有效图表的工作表,并保存为pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54190797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档