【问题标题】:Excel VBA update links in workbook to same destinationExcel VBA 将工作簿中的链接更新到相同的目标
【发布时间】:2018-06-21 19:02:57
【问题描述】:

我的问题:

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

在这种情况下,我希望它们合并,但目前我手动进行..

我的数据看起来在两个范围内:

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  

目标:

有什么方法可以让我提取数据透视表正在使用的函数,并用相同的描述总结这些值吗??
我不想从我的数据中获取数据透视表,我想合并具有相同描述、相同日期和相同描述的值的值:)

【问题讨论】:

    标签: vba excel merge sum


    【解决方案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
    

    【讨论】:

    • 主数据表没有A、B、C排线怎么办??并且可能会不时变化?我注意到您想要清除线条,我不想在它们在 A、B、C 中对齐的工作表中清除这些线条......因为它们在工作表中,因此它们与另一组进行比较数据:)
    • 我已更新我的答案以创建一个名为“摘要”的新工作表,并在该工作表上进行所有计算,以便您仍然可以保留原始的所有细节。如果 A、B 和 C 可能不同,那么您需要使用 Find 之类的工具来查找哪一列是指日期、描述和金额,然后使用它们进行计算。
    【解决方案2】:

    您可以使用 Power Pivot,它是一个免费的插件,您可以轻松获取并激活它。在 Excel 2016 中默认获取和转换

    1. 选择主表格中的任意单元格。
    2. 在 Excel 2016 中转到 Power Pivot 选项卡或 数据
    3. 选择表格表格/范围 -> 确定

    它将在那里打开查询编辑器

    1. 选择列[Date][Description]
    2. 转到首页标签并选择分组方式
    3. 为新字段命名。
    4. 选择操作。
    5. 选择要求和的列。
    6. 好的
    7. 转到主页标签选择关闭并加载
    8. 使用您的新数据!

    您可以将许多来源连接到 Power Query,只需右键单击 Refresh 即可完成您的流程!

    【讨论】:

    • 这很好,但你想让我如何从 VBA 触发这个? :)
    • 你不需要。您甚至不必打开查询编辑器。当您想要数据时,只需在“绿色”表中单击鼠标右键,然后单击“刷新”。
    • Think 就是我擦了数据,而且时不时变……这会自动应用吗??
    • 是的,您可以在“查询编辑器”中做任何您想做的事情,有很多工具可以转换您的数据。如果您查看 gif,您会看到一个名为 APPLIED STEPS 的框,您可以逐步检查直到最终结果。它逐行遵循编程逻辑。在主表中更改列名、删除或插入列时,唯一要做的就是小心。我制作了这个视频,展示了如何使用 PQ youtu.be/lZA_r5aVetU 中的一些工具,它是西班牙语的,但你可以关注它。我使用的是 Excel 的英文版。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    相关资源
    最近更新 更多