【问题标题】:Excel: How can I display the data from several sheets in one?Excel:如何将多张纸的数据合二为一?
【发布时间】:2016-02-01 09:21:19
【问题描述】:

我编写了一个脚本来创建一个复杂的 Excel 工作表,其中包含来自多个数据源的数据。每张纸上的数据通常为 1-5 行。如果我可以创建另一个表格来在线显示其他表格中的数据,那就太好了(即,概览表格应该随着我更改数据表格而改变)。我还需要用各种样式格式化数据,并让概览表复制它们。最后,数据表有不同的列宽。

我在想我可以简单地导入工作表。当我将每张工作表保存到一个文件中,然后将它们作为 OLE 对象导入时,这很有效。没有办法只用一个文件就可以达到同样的效果吗?

我需要告诉 Excel“将 Sheet1 上的 Sheet2 上的 A1:F3 绘制到单元格 A1 中”。

“插入对象”让我可以创建 Word 文档或 PP 演示文稿并将其放入单元格中,但我无法创建新的 Excel 工作表并将其放入单元格中。什么给了?

【问题讨论】:

    标签: excel


    【解决方案1】:

    您可以使用相机对象。

    1. 在封面上复制您想要的范围
    2. 转到封面
    3. 按住 shift 并单击 编辑 菜单
    4. 单击粘贴图片链接菜单项

    这会粘贴一个动态图片对象,只要数据表上的相应区域发生更改,该对象就会更新。

    【讨论】:

      【解决方案2】:

      您可以使用以下语法引用其他工作表:

      SheetName!Cell
      

      所以在Sheet1,A1中的一个公式

      =Sheet2!B4
      

      将在 B4 处对 sheet2 中的值进行实时引用

      【讨论】:

      • 您可以使用 PasteSpecial 方法将格式从源数据“绘制”到新摘要
      • 格式刷是这里另一个有用的工具。没有提供格式是有充分理由的。这是一种将“模型”与“视图”分开的方法
      • 所以简而言之,Excel 的设计目的不是为了做我想做的事?好吧,我可以创建一个 Word 文档,在其中放一张 Excel 表格,然后将这个怪物粘贴到一个单元格中……
      • 我认为你能做的最好的就是使用宏来复制格式 Range("A1:Z30").Select Selection.Copy Range("Sheet1!A1").Select Selection.PasteSpecial Paste :=xlPasteFormats, 操作:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False
      【解决方案3】:

      如果您想自己构建解决方案,请尝试:
      http://poi.apache.org/
      Apache POI - 访问 Microsoft 格式文件的 Java API 它真的很容易使用...您可以轻松地格式化数据等...

      我在 Apache Digester 中使用了 POI (http://commons.apache.org/digester/)
      从 XML 文件中读取数据并创建 Excel 表格。

      [编辑] 使用这种方法,您可以在现有的 Excel 工作表中读取,复制工作表之间的相关单元格(包括格式)。但是,这并不能解决“不同的列宽”和“在线更新”。

      【讨论】:

      • 正如我所说,我已经解决了这个问题。我需要告诉 Excel“在 Sheet1 上的 Sheet2 上绘制 A1:F3 到单元格 A1 中”。
      • 好吧...如果您已经解决了将数据放在一张 Sheet2 中的问题..为什么不能将该数据放在 Sheet1 中?我想我没有明白这一点...sry
      • 我认为 bastianneu 的意思是,使用 POI,您可以从 sheet1 读取数据/样式/格式并将其放入 sheet2。
      • 为此 +1。我冒昧地编辑了答案。随意对其进行进一步增强。
      • 不同的列宽...嗯,让我看看我通过以下方式解决了它:poi.apache.org/spreadsheet/quick-guide.html#Autofit 或者如果您想在尝试编辑列宽: sheet.setColumnWidth(cell or column, 256*20);仅供参考:256*20 = 20 个字符宽——使用在线更新意味着什么?超链接?也许这会对你有所帮助:poi.apache.org/spreadsheet/quick-guide.html#Hyperlinks
      【解决方案4】:

      复制范围。移动到要保存引用的单元格。在选择编辑菜单时按住 Shift 键。注意有新的菜单项; “粘贴图片”和“粘贴图片链接”。您要选择“粘贴图片链接”。现在,每当更新“源”或格式更改时,“目标”都会更新。

      Sub DemoIt()
      
          'open excel and vbe windows side-by-side
          '   to see results when break points hit
      
          'setup values
          Range("A1").Select
          ActiveCell.FormulaR1C1 = "A"
          Range("A2").Select
          ActiveCell.FormulaR1C1 = "B"
          Range("A3").Select
          ActiveCell.FormulaR1C1 = "C"
      
          'select "source" values and copy
          Range("A1:A3").Select
          Selection.Copy
      
          'move to "destination"
          Range("B1").Select
      
          'paste the "picture link"
          ActiveSheet.Pictures.Paste(Link:=True).Select
          Application.CutCopyMode = False
      
          'check out results
          Stop
      
          'change values
          Range("A2").Select
          ActiveCell.FormulaR1C1 = "99"
      
          'notice "destination" changed
          Stop
      
          'change formatting
          Range("A3").Select
          Selection.Font.Size = 20
      
          'notice formatting changed
          Stop
      
      End Sub
      

      【讨论】:

        【解决方案5】:

        一个 Excel 工作簿可以包含多个工作表。一个工作表中的公式可以引用同一工作簿中另一个工作表中的单元格。

        【讨论】:

        • 这并不能解决布局问题。没有办法说“从单元格表复制布局+数据;列;行”。另外,它不允许将“B”列五个不同的宽度,具体取决于行。
        猜你喜欢
        • 2016-02-25
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-13
        相关资源
        最近更新 更多