【问题标题】:Excel: Pair things up between two columns (A and B), and show unpaired values in columns C and DExcel:在两列(A 和 B)之间配对,并在 C 和 D 列中显示未配对的值
【发布时间】:2012-09-02 06:18:06
【问题描述】:

Excel 爱好者:

在搜索两列之间的比较时显示了许多结果(即:使用 VLOOKUP),但到目前为止我所查看的结果似乎都没有以这种特殊方式满足我的需要:

A 列具有以下值:Z、Q、V、V、T、T

B 列具有以下值:V、T、T、M

C 列将显示 Z、Q、V(这里我们有一个 V,因为一组“V”配对,剩下一个未配对的“V”)

D 列将显示 M

到目前为止,我看到的其他示例假设 C 列中不会包含“V”,因为它已经在 A 列中找到,无论它出现了多少次。

基本上,相反,我需要将两列之间的值配对并删除,但不要让我有任何“奇数”。

我一直无法使用公式计算出这一点 - 我首先对所有内容进行排序,然后将 A 列或 B 列中的单元格向下移动,直到 A 列和 B 列有匹配的值或每个都有一个奇数行

提前致谢

编辑:另一种说法:我想从 A 列和 B 列中“消除”成对的值,直到所有对都被删除,留下 A 列和 B 列中的剩余值

【问题讨论】:

    标签: arrays excel excel-formula duplicate-removal


    【解决方案1】:

    我们假设允许 C/D 中的答案与 A/B 中不匹配的原始答案位于同一行。

    这是C1的公式,复制粘贴下来:

    =REPT(A1,
     MAX(0,MIN(1,COUNTIF($A:$A,A1)
     -COUNTIF($B:$B,A1)
     -IF(ROW()=1,0,COUNTIF(OFFSET($C$1,0,0,ROW()-1,1),A1))
     )))
    

    基本上,我们想“重复”列 A 中的相应值 如果我们在 B 中没有找到匹配的值 并且我们还没有计算到目前为止,它在 C 中。

    其中的逻辑确保 OFFSET() 不引用零高度范围,并且我们在 C 的每一行上重复 0 或 1 次,不多也不少。

    D1 的公式类似,但反过来将 B 与 A 进行比较:

    =REPT(B1,
     MAX(0,MIN(1,COUNTIF($B:$B,B1)
     -COUNTIF($A:$A,B1)
     -IF(ROW()=1,0,COUNTIF(OFFSET($D$1,0,0,ROW()-1,1),B1))
     )))
    

    【讨论】:

    • +1 确切地知道我的意思(即使我认为我解释得不好)以及及时、结构良好的接受答案!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多