热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实时将来自多个工作表的数据组合到摘要工作表中-Realtimecombinedatafrommultipleworksheetsintoasummaryworksheet

IhavedatainmultipleDataworksheetsthatwanttocombineintoSummaryworksheet.Whenuserupdat

I have data in multiple Data worksheets that want to combine into Summary worksheet. When user update data in any Data worksheet, it will copy information automatically to Summary worksheet.

我有多个数据工作表中的数据要合并到摘要工作表中。当用户更新任何数据工作表中的数据时,它会自动将信息复制到摘要工作表。

For example

(Input) Data worksheet1

(输入)数据工作表1

 |   A   |    B   |   C   |
    Cat      Red     Male
    Dog     Green   Female

(Input) Data worksheet2

(输入)数据工作表2

 |   A   |    B   |   C   |
  Monkey   Brown    Male
    Ant     Blue     Male
   Bird     White   Female

(Output) Summary Worksheet

(输出)摘要工作表

 |   A   |    B   |   C   |
    Cat      Red     Male
    Dog     Green   Female
  Monkey    Brown    Male
    Ant     Blue     Male
   Bird     White   Female

Right now my code running okay with one data worksheet. But when I try to switch to work on another data worksheet, the data on summary worksheet will not correct. It also has some errors when I delete all information or when I change the code (I need to reopen it).

现在我的代码运行正常,有一个数据工作表。但是,当我尝试切换到另一个数据工作表上的工作时,摘要工作表上的数据将无法更正。当我删除所有信息或更改代码时(我需要重新打开它),它也有一些错误。

Here is my code

这是我的代码

ThisWorkBook

Public Sub Workbook_Open()

Set WB = ThisWorkbook
Set ActWS = WB.ActiveSheet
Set MainWS = WB.Worksheets("Main")

ActWSPreLastRow = ActWS.Cells(ActWS.Rows.Count, "A").End(xlUp).Row
MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row

End Sub

Module

Public WB As Workbook
Public ActWS As Worksheet
Public MainWS As Worksheet
Public ActWSPreLastRow As Long
Public ActWSStoredLastRow As Long
Public MainWSPreLastRow As Long
Public MainWSStoredLastRow As Long
Public MainWSEndLastRow As Long
Public I As Long

Public Sub DoCopy()

Set WB = ThisWorkbook
Set ActWS = WB.ActiveSheet
Set MainWS = WB.Worksheets("Main")

ActWSPreLastRow = ActWS.Cells(ActWS.Rows.Count, "A").End(xlUp).Row
MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row

I = MainWSStoredLastRow + (ActWSPreLastRow - ActWSStoredLastRow)

MainWS.Range("A" & MainWSStoredLastRow + 1, "AQ" & I).Value = _
ActWS.Range("A" & ActWSStoredLastRow + 1, "AQ" & ActWSPreLastRow).Value

MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row

End Sub

Public Sub StoreOld()
ActWSStoredLastRow = ActWSPreLastRow
MainWSStoredLastRow = MainWSPreLastRow

End Sub

Other worksheets

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A5:AQ1000")) Is Nothing Then
    Call StoreOld
    Call DoCopy
End If
End Sub

1 个解决方案

#1


Microsoft Query to the rescue:

微软查询救援:

SELECT A,B,C FROM [Sheet1$] 
UNION ALL
SELECT A,B,C FROM [Sheet2$] 

Data->From Other Sources->Microsoft Query or feel free to use my Add-In.

数据 - >来自其他来源 - > Microsoft Query或随意使用我的加载项。

Then simply refresh the Query when needed (via 1 line VBA or right-click on the table and click refresh).

然后只需在需要时刷新查询(通过1行VBA或右键单击表并单击刷新)。

Details

Assuming that the structure of Sheet1 & Sheet2 are:

假设Sheet1和Sheet2的结构是:

(Input) Data worksheet1 (with row numbers)

(输入)数据工作表1(带行号)

 1    |   A   |    B   |   C   |
 2       Cat      Red     Male
 3       Dog     Green   Female

(Input) Data worksheet2 (with row numbers)

(输入)数据工作表2(带行号)

 1    |   A   |    B   |   C   |
 2     Monkey   Brown    Male
 3       Ant     Blue     Male
 4      Bird     White   Female

Then:

  1. Create a new worksheet (Sheet3)

    创建一个新工作表(Sheet3)

  2. Create the Query with the SQL above.

    使用上面的SQL创建查询。

If you want to add a condition add a WHERE clause to one or both of the SELECTs

如果要添加条件,请向一个或两个SELECT添加WHERE子句


推荐阅读
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文为Codeforces 1294A题目的解析,主要讨论了Collecting Coins整除+不整除问题。文章详细介绍了题目的背景和要求,并给出了解题思路和代码实现。同时提供了在线测评地址和相关参考链接。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
迷雾飘渺2702932540
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有