【问题标题】:Dynamically combine two sheets into one动态将两张纸合二为一
【发布时间】:2018-10-31 18:03:37
【问题描述】:

我有一个类似的问题:Combine 2 Excel tables into one appending the data?

如果我有以下 2 个工作表:

我想要第三张表格,如下所示:

如何从原来的两个工作表创建第三个工作表?如果我在前两个工作表之一中添加一行,第三个工作表会自动更新吗?

【问题讨论】:

  • 行顺序重要吗?
  • 理想情况下,我希望能够对第三个工作表进行排序(即,将“值”从最低到最高排序)。更重要的是每行中的信息保持在一起。
  • 使用 Power Query(获取和转换)很容易做到这一点。此方法会将原始两个工作表中的列转换为表格。这对你来说是个问题吗?
  • 感谢@ScottHoltzman 提供建设性的反馈。我已经使我的问题更加具体,并将通过您提供的资源。 (作为参考,我的原始帖子以“有没有办法将这些组合并动态更新?”这个问题结束)
  • @MarcoVos 只要满足两个条件,我很乐意使用表格。 1)我需要能够向原始的两个工作表添加行并将这些更改传播到表中。 2)我需要组合的第三个表来填充工作表。只要我能满足这些要求,我很高兴将所有表格都放在第四个工作表中。

标签: excel vba excel-formula


【解决方案1】:

对两张表执行以下过程。

  1. 在其中一列中选择一个值。
  2. 转到数据选项卡并在获取和转换组中选择From Table。点击确定。
  3. 在查询编辑器中,从主页选项卡上的下拉菜单关闭和加载中选择Close & Load to。在“加载到”对话框中选择Only Create Connection,然后单击“加载”。

对两个工作表执行此操作后,您现在应该在“工作簿查询”窗格中看到以下两个查询。

  1. 右键单击 Table1 查询并选择追加。在底部下拉框中选择 Table2。点击确定。
  2. 在查询编辑器中单击关闭并加载(图标,而不是下拉菜单)。

你现在有了你想要的桌子。将行添加到 Table1 和/或 Table2 后,当您单击 Data-tab 上的 Refresh 按钮时,新表 Append1 将更新。

【讨论】:

    【解决方案2】:

    太棒了,如果你曾经运行过一个宏,否则你可以第一次尝试。

    1. 在第一行点击 >> 开发者
    2. 在左上角点击 >> visual basic
    3. 右击左上栏文件名>>插入模块
    4. 粘贴以下代码,保存并运行(播放绿色三角形)。

    用于将多个 excel 文件合并到一个 excel 文件的不同选项卡中

    Sub mergeExcelFiles()
        'Merges all files in a folder to a main file.
        
        'Define variables:
        Dim numberOfFilesChosen, i As Integer
        Dim tempFileDialog As fileDialog
        Dim mainWorkbook, sourceWorkbook As Workbook
        Dim tempWorkSheet As Worksheet
        
        Set mainWorkbook = Application.ActiveWorkbook
        Set tempFileDialog = Application.fileDialog(msoFileDialogFilePicker)
        
        'Allow the user to select multiple workbooks
        tempFileDialog.AllowMultiSelect = True
        
        numberOfFilesChosen = tempFileDialog.Show
        
        'Loop through all selected workbooks
        For i = 1 To tempFileDialog.SelectedItems.Count
            
            'Open each workbook
            Workbooks.Open tempFileDialog.SelectedItems(i)
            
            Set sourceWorkbook = ActiveWorkbook
            
            'Copy each worksheet to the end of the main workbook
            For Each tempWorkSheet In sourceWorkbook.Worksheets
                tempWorkSheet.Copy after:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count)
            Next tempWorkSheet
            
            'Close the source workbook
            sourceWorkbook.Close
        Next i
        
    End Sub
    

    来源 https://professor-excel.com/merge-sheets/

    用于在同一个 Excel 文件的一个选项卡中合并不同的选项卡

    Sub mergeExcelTabs()
    'UpdatebyExtendoffice20180205
        Dim I As Long
        Dim xRg As Range
        On Error Resume Next
        Worksheets.Add Sheets(1)
        ActiveSheet.Name = "Combined"
       For I = 2 To Sheets.Count
            Set xRg = Sheets(1).UsedRange
            If I > 2 Then
                Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
            End If
            Sheets(I).Activate
            ActiveSheet.UsedRange.Copy xRg
        Next
    End Sub
    

    来源 https://www.extendoffice.com/documents/excel/5017-excel-collect-data-from-multiple-sheets.html

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 2012-10-21
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      相关资源
      最近更新 更多