Excel VBA更新工作簿中的链接到同一目标

时间:2018-01-12 10:23:43

标签: excel vba excel-vba merge sum

我的问题:

我有一张表,我在那里比较两组数据。这两组数据可能有一些具有相同的描述编号......

在这种情况下,我希望它们合并,但此刻我手动完成..

我的数据在两个范围内都是如此:

Date        Description  Amount  
15-12-2017  V576954    -1.289,89  
15-12-2017  V576954    1.289,89  
15-12-2017  V576954    -1.896,45  
19-12-2017  V586894    -789,52  
28-12-2017  GS5155692  -9.286,00  
28-12-2017  GS5155692  9.286,00  
28-12-2017  GS5155692  -11.857,50  

目标:

是否有某种方式,我可以拉出数据透视表正在使用的函数,并用相同的描述总结值? 我不想从我的数据中获取数据透视表,我想合并具有相同描述的值的值,以及具有相同的日期和相同的描述:)

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,如果A列和B列中的数据匹配,您希望对C列上的值求和,那么以下内容将为您执行此操作:

Sub foo()
Sheets("Sheet1").Copy After:=Sheets("Sheet1")
ActiveSheet.Name = "Summary"
Dim ws As Worksheet: Set ws = Sheets("Summary")
'declare and set your worksheet, change Sheet1 to the sheet you are using
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'find the last row with data on Column A
    For i = 2 To LastRow 'loop from row 2 to last
        ws.Cells(i, 4).FormulaR1C1 = "=SUMIFS(C[-1],C[-2],RC[-2],C[-3],RC[-3])" 'enter sum formula in adjecent cell (Column D)
    Next i
    ws.Range("D2:D" & LastRow).Copy 'copy the formula
    ws.Range("D2:D" & LastRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'paste as values
    Range("C2:C" & LastRow).Delete Shift:=xlToLeft 'delete column C and shift the values from column D to column C
    ws.Range("$A$1:$D$" & LastRow).RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes 'remove duplicate rows
End Sub

答案 1 :(得分:0)

您可以使用 Power Pivot 这是一个免费加载项,您可以轻松激活它。 获取&默认情况下,在Excel 2016中转换

  1. 选择主表中的任何单元格。
  2. 转到Excel 2016中的 Power Pivot 标签或数据
  3. 选择表格表格/范围 - >的确定
  4. 它会在那里打开查询编辑器

    1. 选择列[Date][Description]
    2. 转到主页标签,然后选择分组
    3. 为新字段命名。
    4. 选择操作。
    5. 选择要汇总的列。
    6. 确定
    7. 转到主页标签选择关闭&负载
    8. 使用您的新数据!
    9. enter image description here

      您可以将多个来源连接到 Power Query ,右键点击刷新,您就可以完成流程了。