Excel 能否使用在一列中直接输出另外两列中其中一列不包含的项? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sinORcos
V2EX    问与答

Excel 能否使用在一列中直接输出另外两列中其中一列不包含的项?

  •  
  •   sinORcos 2020-11-05 09:17:24 +08:00 1814 次点击
    这是一个创建于 1881 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近因统计需要,在寻找能在 excel 的一列中,直接输出另外两列中其中一列不包含的项。

    例如,A 列中分别有 ABCDEFG 七个项,B 列中有 FECBA 五个项。A 、B 两列的数据排序不同,且因为其他列数据的对应问题,不方便进行重排序。

    这时,我希望额能在 C 列中直接输出 DG 两个项,也就是 A 列有、B 列没有的项,且中间没有空白单元格。

    请问用什么办法能做到?在线等,请大佬指路。

    12 条回复    2020-11-05 13:43:20 +08:00
    icelake
        1
    icelake  
       2020-11-05 09:57:52 +08:00
    要想直接在 C 列输出只能通过 VBA 。
    如果不想用 VBA,简单的方法是用 vlookup 查找,但不能实现 C 列中从上往下顺序输出差异项:
    在 C 列中输入“=IF(ISNA(VLOOKUP(A1,B:B,1,FALSE)),A1,"")”,可以实现在 C 列显示 B 列缺少的项目。
    Hilalum
        2
    Hilalum  
       2020-11-05 10:01:05 +08:00
    vlookup 函数
    sinORcos
        3
    sinORcos  
    OP
       2020-11-05 10:41:50 +08:00
    @icelake 我目前是使用新版的 xlookup 函数,但是只能一一对应的输出,会出现大量空白单元格,还要再手动调整一遍,想要实现完全的自动化,所以在寻找能顺序输出的办法,但是我不完全不懂 VBA……很难受
    carryer
        4
    carryer  
       2020-11-05 10:52:42 +08:00
    用函数找完再筛选,复制出来
    TimePPT
        5
    TimePPT  
    PRO
       2020-11-05 11:04:14 +08:00
    sinORcos
        6
    sinORcos  
    OP
       2020-11-05 11:22:58 +08:00
    @TimePPT 这样还需要重新手动筛一遍,而不是直接输出结果,A 、B 两列是名单,我是要找出 B 列中相比 A 列少的那些人,说白了就是类似一次性输出缺席的名单。我目前是使用 xlookup 来实现,形如:

    xlookup(a2,b:b,b:b,"")
    翻译一下就是再 b:b 中查找 a2,如果找到了,输出对应行和 b:b 的交叉点的值,如果没找到就输出空白。
    然后再套一个 IF 来输出空白值是对应的人员姓名。

    但是输出后有大量的空白单元格,而不是一次性顺序输出一个完整名单。有没有大神指点一下 VBA 的解决方法?最后搞这个重复性的工作被弄得很烦。
    TimePPT
        7
    TimePPT  
    PRO
       2020-11-05 11:25:19 +08:00
    @mervynsword 那就不清楚了,这种情况我一般 shell 脚本或者 python 直接处理了
    geelaw
        8
    geelaw  
       2020-11-05 11:35:03 +08:00   3
    Excel 的公式是自带向量化功能的,而且 FILTER 函数返回值就是向量,所以可以用

    =FILTER(minuend, COUNTIF(subtrahend, "=" & minuend) = 0)

    minuend 是被减范围,subtrahend 是减范围,例如

    https://i.loli.net/2020/11/05/TDMA2jJ7vO1hXEa.png
    renmu123
        9
    renmu123  
       2020-11-05 11:39:42 +08:00   1
    =SORT(IF(ISNA(XLOOKUP(A1:A7,B:B,B:B)),A1:A7,""),1,-1)

    写完后发现还是楼上大佬厉害,我用了动态数组功能
    Devin
        10
    Devin  
       2020-11-05 11:48:50 +08:00
    1. 把这两列复制到新表
    2. 选定这两列,开始--条件格式--突出显示单元格规则--重复值
    3. 筛选 A 列,按颜色筛选--无填充,复制出来
    sinORcos
        11
    sinORcos  
    OP
       2020-11-05 13:06:53 +08:00
    感谢各位大佬指路
    @geelaw
    @renmu123
    freeair
        12
    freeair  
       2020-11-05 13:43:20 +08:00   1
    @geelaw #8 测试了下,还可以略微简化

    =FILTER(minuend, COUNTIF(subtrahend, minuend) = 0)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 12:51 PVG 20:51 LAX 04:51 JFK 07:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86