Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2263|回复: 6

[已解决]请求筛选

[复制链接]
发表于 2021-10-23 08:15 | 显示全部楼层 |阅读模式
先生们好,我有一个40行12列的“原表”,这个原表中的每行的12个数都是最小是1最大是18,请问有否这样的现成的函数,能把每行中的12个数与1、2、...、17、18这18个数比对后将未出现的数写在这一行的右侧。若无怎样的现成函数,请大佬用vba编写一个能达到上述要求的代码,谢谢先生(“原表.xlsx”中的第一行已用手工做好并显示了) 原表.rar (9.14 KB, 下载次数: 9)
发表于 2021-10-23 11:29 | 显示全部楼层    本楼为最佳答案   
  1. =SMALL(IF(COUNTIF($A3:$L3,ROW($1:$18))=0,ROW($1:$18)),COLUMN(A1))
复制代码

数组公式。需要三键
回复

使用道具 举报

发表于 2021-10-23 12:35 | 显示全部楼层
  1. Sub 取不存在的值()
  2. Dim MAXROW As Integer, BRR(), K As Integer, COL As Byte, X, Y
  3. MAXROW = Range("A65536").End(xlUp).Row
  4. ReDim BRR(1 To MAXROW - 1, 1 To 6)
  5. For K = 2 To MAXROW
  6. Y = 0
  7. For X = 1 To 18
  8.   If Application.CountIf(Range("A" & K & ":L" & K), X) = 0 Then
  9.      Y = Y + 1
  10.     BRR(K - 1, Y) = X
  11.     End If
  12. Next
  13. Next
  14.    Range("M2").Resize(K - 2, 6) = BRR
  15. End Sub

复制代码

练习一下VBA

原表.rar

14.07 KB, 下载次数: 1

回复

使用道具 举报

发表于 2021-10-23 18:22 | 显示全部楼层
本帖最后由 songxueyi1 于 2021-10-23 18:39 编辑

大神大神,诚恳请教,
1:是否存在这样一种函数,可以把您所给出的这个公式当中所求得的结果合并在一个单元格里直接体现出来,用逗号隔开?而不是通过small把他们按各单元格体现出来?excel版本2007


2:如果单元格中不是数字,而是中文文本,那肯定不能通过small来对数组进行排序,是否还有其他的函数能达到此表中同样的要求?
回复

使用道具 举报

发表于 2021-10-24 20:33 | 显示全部楼层
songxueyi1 发表于 2021-10-23 18:22
大神大神,诚恳请教,
1:是否存在这样一种函数,可以把您所给出的这个公式当中所求得的结果合并在一个 ...

拿具体 的例子说话。一样的思路,只是找下位置而已
回复

使用道具 举报

 楼主| 发表于 2021-10-25 15:08 | 显示全部楼层

太棒了,谢谢先生

点评

不客气  发表于 2021-10-25 16:18
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 04:30 , Processed in 0.275188 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表