最近因统计需要,在寻找能在 excel 的一列中,直接输出另外两列中其中一列不包含的项。
例如,A 列中分别有 ABCDEFG 七个项,B 列中有 FECBA 五个项。A 、B 两列的数据排序不同,且因为其他列数据的对应问题,不方便进行重排序。
这时,我希望额能在 C 列中直接输出 DG 两个项,也就是 A 列有、B 列没有的项,且中间没有空白单元格。
请问用什么办法能做到?在线等,请大佬指路。
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 列缺少的项目。 |
2
Hilalum 2020-11-05 10:01:05 +08:00
vlookup 函数
|
3
sinORcos OP @icelake 我目前是使用新版的 xlookup 函数,但是只能一一对应的输出,会出现大量空白单元格,还要再手动调整一遍,想要实现完全的自动化,所以在寻找能顺序输出的办法,但是我不完全不懂 VBA……很难受
|
4
carryer 2020-11-05 10:52:42 +08:00
用函数找完再筛选,复制出来
|
5
TimePPT 2020-11-05 11:04:14 +08:00
|
6
sinORcos OP @TimePPT 这样还需要重新手动筛一遍,而不是直接输出结果,A 、B 两列是名单,我是要找出 B 列中相比 A 列少的那些人,说白了就是类似一次性输出缺席的名单。我目前是使用 xlookup 来实现,形如:
xlookup(a2,b:b,b:b,"") 翻译一下就是再 b:b 中查找 a2,如果找到了,输出对应行和 b:b 的交叉点的值,如果没找到就输出空白。 然后再套一个 IF 来输出空白值是对应的人员姓名。 但是输出后有大量的空白单元格,而不是一次性顺序输出一个完整名单。有没有大神指点一下 VBA 的解决方法?最后搞这个重复性的工作被弄得很烦。 |
7
TimePPT 2020-11-05 11:25:19 +08:00
@mervynsword 那就不清楚了,这种情况我一般 shell 脚本或者 python 直接处理了
|
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 |
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)
写完后发现还是楼上大佬厉害,我用了动态数组功能 |
10
Devin 2020-11-05 11:48:50 +08:00
1. 把这两列复制到新表
2. 选定这两列,开始--条件格式--突出显示单元格规则--重复值 3. 筛选 A 列,按颜色筛选--无填充,复制出来 |