合并两个文件或两个表

时间:2015-10-20 06:41:10

标签: excel vba excel-vba excel-formula excel-2007

我有两个Excel文件,在第一个表中:

Date        Water  Eggs Potato
01/09/15    10     52   642

第二名:

Date        Eggs   Potato Water Banana
01/09/15    50     300    15    10

在我需要的结果文件或表格中:

Date        Water  Eggs Potato Banana
01/09/15    25     102  942    10

你可以看到我从第一和第二张表中总结出来。在第一个表中,我没有列Banana,但在结果表中必须插入其列。

如何做到这一点,问题可以通过任何功能解决,还是我需要使用VBA?

2 个答案:

答案 0 :(得分:1)

对列进行排序,使它们的顺序相同。然后将一个表附加到另一个表,但只保留一组(完整的)列标签。应用详细{/ 3}}的拆迁程序。当你到达新表时,从中创建一个数据透视表,其中列为COLUMN,行为ROWS,值为VALUES为和。

答案 1 :(得分:1)

此解决方案假设如下:

  • 这两个表位于B6:E8G6:K8 范围内的同一工作表中(基于@Valeriu的响应)。范围包括标题,范围可根据用户的要求进行调整(参见图1)
  • 解决方案范围位于M6:Q12

enter image description here

所有公式均为FormulaArray

(按 [Ctrl] + [Shift] + [Enter] 同时)

日期:为了从两个表中提取唯一日期的组合列表,请在FormulaArray中输入此M7,然后复制到最后一条记录

=IFERROR( INDEX( $B$6:$B$8, MATCH( 0, COUNTIF( M$6:M7, $B$6:$B$8 ), 0 ) * 1 ),
IFERROR( INDEX( $G$6:$G$8, MATCH( 0, COUNTIF( M$6:M7, $G$6:$G$8 ), 0 ) * 1 ), "" ))

然后,要获取每种类型的总计,请在单元格FormulaArray中输入此N7,然后复制到最后一条记录,然后复制到O7:Q7

=IF( EXACT( $M7, "" ), "",
IFERROR( SUMIF( $B$6:$B$8, $M7, INDEX( $C$6:$E$8, 0, MATCH( N$6, $C$6:$E$6, 0 ))), 0 )
+ IFERROR( SUMIF( $G$6:$G$8, $M7, INDEX( $H$6:$K$8, 0, MATCH( N$6, $H$6:$K$6, 0 ))), 0 ))

enter image description here