在Microsoft Excel中,我有两个列表,其中一些单元格彼此相等,如何找出哪些不相同

时间:2015-05-26 11:53:45

标签: excel excel-formula

我有一个总计列表,然后是另一个摘要总计列表 我需要找到总列中哪些单元格与摘要总数不匹配,并且列表太大而无法通过眼睛和计算器完成所有操作! 这是我的总计列表的开头

275
815
1655
9783.46
3393
4487.26
1691
2376.66
1997
100
6167.91
675
8843

我的总结总数

1090
1655
9783.46
9571.26
2376.66
1997
100
620.3
15685.91

您可以看到620.3尚未匹配的原因:

Totals              Summary Totals
275+815             1090
1655                1655
9783.46             9783.46
3393+4487.26+1691   9571.26
2376.66             2376.66
1997                1997
100                 100
???                 620.3
6167.91+675+8843    15685.91

我需要找到这样的其他人。我可以用的任何公式吗?

2 个答案:

答案 0 :(得分:1)

VBA脚本

将其粘贴在当前工作簿的模块中:

Function SummaryMatch(Totals As Range, SummaryTotals As Range) As Variant()
    Dim Sum As Double
    Dim T As Long, S As Long, I As Long
    Dim Result() As Variant
    Result = SummaryTotals.Value
    T = 1: S = 1
    Do
       If T > Totals.Rows.Count _
       Or S > SummaryTotals.Rows.Count _
       Then Exit Do

       Sum = 0: I = T
       Do
          Sum = Sum + Totals(I)
          I = I + 1
          If Abs(Sum - SummaryTotals(S)) < 0.001 Then
             Debug.Print SummaryTotals(S) & " T "
             Result(S, 1) = True
             T = I
             S = S + 1
             Exit Do
          ElseIf Sum > SummaryTotals(S) + 0.001 Then
             Debug.Print SummaryTotals(S) & " F "
             Result(S, 1) = False
             S = S + 1
             Exit Do
          End If
       Loop While True
    Loop While True
    SummaryMatch = Result
End Function

如何使用

如果您的总数在A2:A14中,并且汇总总数在C2:C10中,那么您将突出显示E2:E10并输入= SummaryMatch(A2:A14,C2:C10)到E2并按Control-Shift-Enter,因为该函数返回一个数组。公式将显示为{= SummaryMatch(A2:A14,C2:C10)},并将为每个汇总总计返回一个真/假值,表示是否有总计加起来该值。

    A        B        C        D         E 
1   Totals            Summary            Match
2   275               1090               TRUE
3   815               1655               TRUE
4   1655              9783.46            TRUE
5   9783.46           9571.26            TRUE
6   3393              2376.66            TRUE
7   4487.26           1997               TRUE
8   1691              100                TRUE
9   2376.66           620.3              FALSE
10  1997              5685.91            TRUE
11  100
12  6167.91
13  675
14  8843

工作原理

该脚本保存一个指向两个列表的指针(T表示Totals列表,S表示Summary Totals列表)以及一个向前扫描Totals列表的索引(I)。最初,T和S都设置为从顶部开始(每个列表的第1行),然后启动循环。

循环首先检查我们是否位于其中一个列表的底部,然后将当前Sum设置为零并开始向前扫描,将当前Total添加到Sum中,然后将Sum与当前Summary Total进行比较。

如果Sum与当前的Summary Total匹配,那么我们将S递增到下一个Summary Total并将当前Total设置为当前索引(这样我们就不再对这些值求和)然后我们启动主循环试。

如果Sum超过当前的Summary Total,则当前的Summary Total不匹配,我们继续下一个,而不将当前的Total更改为当前的Indegx(因此我们再次开始扫描当前的Total)

答案 1 :(得分:0)

某些较新版本的Excel有&#34;删除重复项&#34;数据菜单中提供的功能。我将您的列表粘贴到Excel for Mac 2011中,选择Remove Duplicates,并留下以下数据。这有帮助吗?

Values

如果有必要,您可以先在每个组中删除重复项,然后在列出的两个组中删除重复项,但我不确定它对您的应用程序是否重要。