ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 练习:求多区域不重复代码个数

练习:求多区域不重复代码个数

作者:绿色风 分类: 时间:2022-08-18 浏览:142
楼主
gouweicao78
 

【题目】      
已知数据区域如A2:F10,共有3列代码,均为数字且包含空单元格。      
请在H3单元格用一个公式求出不重复代码的个数。不用定义名称、辅助列、VBA即其它操作。      
如有版本限制,请说明。      
【得分】
答案正确+3技能分,视精彩程度可再获得3~5技能分。
【期限】
本题暂不设期限,已采用回复仅楼主可见方式,答题后一周内即可获评分。
练习:求多区域不重复代码个数.rar
2楼
rongjun
  1. =COUNT(0/FREQUENCY((A3:A10,C3:C10,F3:F10),(A3:A10,C3:C10,F3:F10)))
  1. =COUNT(0/FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),IF((A2:F2="代码")*(A3:F10<>""),A3:F10)))
3楼
wise


不会函数,还是用VBA弄一下,尽管不能得分
  1. Sub test()
  2. Dim d As Object, i As Long, j As Long
  3. Set d = CreateObject("scripting.dictionary")
  4. For i = 3 To 10
  5.    For j = 1 To 6
  6.    If Cells(2, j) = "代码" Then
  7.      If Cells(i, j) <> "" Then
  8.       If d.exists(Cells(i, j).Value) Then
  9.         d(Cells(i, j).Value) = d(Cells(i, j).Value) + 1
  10.       Else
  11.        d(Cells(i, j).Value) = 1
  12.       End If
  13.     End If
  14.   End If
  15.   Next j
  16. Next i
  17. MsgBox d.Count
  18. Set d = Nothing
  19. End Sub
4楼
liuguansky
  1. =COUNT(0/FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),IF((A2:F2="代码")*(A3:F10<>""),A3:F10)))
5楼
zm0115
=SUM(--(FREQUENCY(A3:F10,IF(A2:F2="代码",A3:F10,0))<>0))


这个可行?借鉴了黄版的一个帖子
还可以短2个字符
=SUM(--(FREQUENCY(A3:F10,IF(A2:F2="代码",A3:F10))<>0))


练习:求多区域不重复代码个数.rar
6楼
biaotiger1
  1. =SUM(IF(FREQUENCY(LARGE(IF((A2:F2="代码")*(A3:F10<>""),A3:F10,3),ROW(1:48)),ROW(1:5233)),1,))
7楼
mn860429
草版,编码有0这个情况吗,没有的话写了这个。
  1. =COUNT(0/FREQUENCY(CHOOSE({1,2,3},A3:A10,C3:C10,F3:F10),CHOOSE({1,2,3},A3:A10,C3:C10,F3:F10)))-1
8楼
rongjun
  1. =COUNT(0/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))
  1. =COUNT(0/FREQUENCY((A3:A10,C3:C10,F3:F10),A3:F10))
9楼
rongjun
严格来讲,8楼的数组公式还是有缺陷的,比如B3输入0值,得到的结果是15(正确答案应该是14),公式可以更正如下:
  1. =COUNT(0/FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),A3:F10))
10楼
wangg913
  1. =COUNT(0/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))
重在参与。
11楼
wjc2090742
  1. =COUNT(1/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))

只想的出来一个。
练习:求多区域不重复代码个数.rar
12楼
阿卢
=COUNT(1/FREQUENCY(区域,区域)),一列就懂,多列还真没想法
13楼
foodorwater
=COUNT(1/FREQUENCY(A3:F10,IF(A2:F2="代码",A3:F10)))
數組
14楼
wqfzqgk
=COUNT(IF(FREQUENCY((A3:A10,C3:C10,F3:F10),(A3:A10,C3:C10,F3:F10)),1))
15楼
棉花糖
=COUNT(1/FREQUENCY((A3:A10,C3:C10,F3:F10),(A3:A10,C3:C10,F3:F10)))
16楼
foodorwater
再有一個解法,利用offset構建多維引用,再N()降維,然後frequency求不重復值
=COUNT(1/(FREQUENCY(N(OFFSET(INDIRECT({"A3","C3","F3"}),ROW(A3:F10)-ROW(A3:F3),,,)),N(OFFSET(INDIRECT({"A3","C3","F3"}),ROW(A3:F10)-ROW(A3:F3),,,)))))
數組
17楼
mxqchina
数组公式
  1. =COUNT(1/FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),IF((A2:F2="代码")*(A3:F10<>""),A3:F10)))
18楼
Zaezhong
  1. =SUM(N(FREQUENCY(TEXT(A3:F10,"0;;0;\0")*(A2:F2="代码"),TEXT(A3:F10,"0;;0;\0")*(A2:F2="代码"))>0))-1
不知对否,请草版检查
练习:求多区域不重复代码个数.rar
19楼
zsj119
看看答案
20楼
syz105729913
参与一下
  1. =SUM(N(FREQUENCY(IF(A2:F2="代码",A3:F10),IF(A2:F2="代码",A3:F10))>0))-1
21楼
涅磐86970
=SUM(1/IF(A3:F10="",9E+307,COUNTIF(A3:F10,A3:F10)))
22楼
wangxf9209
=COUNT(1/FREQUENCY(IF(A2:F2="代码",A3:F10,),IF(A2:F2="代码",A3:F10,)))-1
23楼
涅磐86970
=47-SUM(N(SMALL(IF((A2:F2="代码")*(A3:F10<>""),A3:F10,9E+307),ROW(1:47))=SMALL(IF((A2:F2="代码")*(A3:F10<>""),A3:F10,9E+307),ROW(2:48))))
好长的公式- -。
=SUM(N(FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),IF((A2:F2="代码")*(A3:F10<>""),A3:F10))>0))
24楼
LoveJinLee
看了草版的一些帖子,还是很有收获的~

谢谢草版~
先传上附件
希望草版指正~
练习:求多区域不重复代码个数.rar
25楼
Deksan
H3 单元格 的公式 如下

=COUNT(1/FREQUENCY(IF((COLUMN(A3:F10)=IF(A2:F2="代码",COLUMN(A3:F10))*ISNUMBER(A3:F10)),A3:F10,"A"),IF((COLUMN(A3:F10)=IF(A2:F2="代码",COLUMN(A3:F10))*ISNUMBER(A3:F10)),A3:F10,"A")))

数组公式 按 Ctrl+Shift+Enter
26楼
syz105729913
之前没考虑到0值,再来一个
  1. =SUM(N(FREQUENCY(IF(A2:F2="代码",IF(A3:F10="","",A3:F10)),IF(A2:F2="代码",A3:F10))>0))
公式优化
  1. =SUM(N(FREQUENCY(IF(A2:F2="代码",IF(A3:F10="","",A3:F10)),A3:F10)>0))

优化2
  1. =COUNT(1/FREQUENCY(IF(A2:F2="代码",IF(A3:F10="","",A3:F10)),A3:F10))
27楼
piny
=SUM(--(MATCH(SMALL(IF(A2:F2="代码",IF(A3:F10<>"",A3:F10,9^9)),ROW(1:24)),SMALL(IF(A2:F2="代码",IF(A3:F10<>"",A3:F10,9^9)),ROW(1:24)),)=ROW(1:24)))-OR((A2:F2="代码")*(A3:F10=""))

數組

===========================================================================

簡化二
=COUNT(1/FREQUENCY(IF(A2:F2="代码",IF(A3:F10<>"",A3:F10)),IF(A2:F2="代码",IF(A3:F10<>"",A3:F10))))
28楼
Cuikool
=SUM(IF(FREQUENCY((A3:A10,C3:C10,F3:F10),(A3:A10,C3:C10,F3:F10))>0,1))
练习:求多区域不重复代码个数.rar
29楼
Violet_Universe
觉得排序重复了一遍,没时间简化了,有时间再试一试,请草版指教
刚才代码有点问题修正一下呵呵

  1. =SUM(1*(MATCH(SMALL(--TEXT(IF((A2:F2="代码")*1,A2:F10,""),"#;-#;\0;\0"),ROW(INDIRECT("1:"&ROWS(A2:F10)*COLUMNS(A2:F10)))),SMALL(--TEXT(IF((A2:F2="代码")*1,A2:F10,""),"#;-#;\0;\0"),ROW(INDIRECT("1:"&ROWS(A2:F10)*COLUMNS(A2:F10)))),)=ROW(INDIRECT("1:"&ROWS(A2:F10)*COLUMNS(A2:F10)))))-1*(SUM(--(TEXT(IF((A2:F2="代码")*1,A2:F10&"",""),"\0;\0;1;\0")))=0)
30楼
Violet_Universe
如果偷懒一下的话,代码这样呵呵
  1. =SUM(1*(MATCH(SMALL(--TEXT(IF((A2:F2="代码")*1,A2:F10,""),"#;-#;\0;\0"),ROW(1:54)),SMALL(--TEXT(IF((A2:F2="代码")*1,A2:F10,""),"#;-#;\0;\0"),ROW(1:54)),)=ROW(1:54)))-1*(SUM(--(TEXT(IF((A2:F2="代码")*1,A2:F10&"",""),"\0;\0;1;\0")))=0)
31楼
Violet_Universe
这个公式是不是还能优化呢
  1. =SUM((FREQUENCY(IF((A2:F2="代码")*1,IF(A2:F10<>"",A2:F10,MAX(A2:F10)),MAX(A2:F10)),A2:F10)>0)*1)
32楼
Violet_Universe
我知道为什么了,我忘记真空跟假空的区别了,不知道是不是这个意思,新公式,请指教
  1. =SUM((FREQUENCY(IF((A2:F2="代码")*1,IF(A2:F10<>"",A2:F10,""),""),A2:F10)>0)*1)
33楼
LOGO
  1. =COUNT(1/FREQUENCY(IF((A2:F2=A2)*(ISNUMBER(A3:F10)),A3:F10),IF((A2:F2=A2)*(ISNUMBER(A3:F10)),A3:F10)))

  1. =COUNT(1/FREQUENCY(IF((A2:F2=A2)*(A3:F10<>""),A3:F10),IF((A2:F2=A2)*(A3:F10<>""),A3:F10)))
数组公式
练习:求多区域不重复代码个数@.rar
34楼
piny
27樓有新增一個簡化一些的公式 請協助測試 謝謝
35楼
dengxiujuan
36楼
dengxiujuan
怎么看不到他们回复的消息呢!
37楼
XIAO_JUN
=SUM(N(FREQUENCY(IF(A2:F2=F2,A3:F10,0),A3:F10)>0)) 数组
38楼
涅磐86970
=SUM(N(FREQUENCY(IF((A2:F2="代码")*(A3:F10<>""),A3:F10),IF((A2:F2="代码")*(A3:F10<>""),A3:F10))>0))
39楼
laowuwyx
=COUNT(0/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))数组。
40楼
LCinderella
  1. =SUM(N(FREQUENCY(TEXT(A3:F10,"0;;0;\0")*(A2:F2="代码"),TEXT(A3:F10,"0;;0;\0")*(A2:F2="代码"))>0))-(SUM(COUNTIF(OFFSET(A3,,SMALL(IF(A2:F2="代码",COLUMN(A:F)),ROW(INDIRECT("1:"&COUNTIF(2:2,"代码"))))-1,8),0))=0)
41楼
bluexuemei
=COUNT(1/FREQUENCY((A3:A10,C3:C10,F3:F10),(A3:A10,C3:C10,F3:F10)))
42楼
xgg2001
方法蠢了点,见笑了哈,如果代码有0的话,我想不出有什么好办法解决,请草版指教!
练习:求多区域不重复代码个数.rar
43楼
xcd
看看并学习。好久没上社区磨刀,锈了,公式老长。顺便向各位问个好!

H3
=COUNT(0/(MATCH(SMALL(IF((A2:F2="代码")*(A3:F10<>""),A3:F10+1),ROW(1:50)),SMALL(IF((A2:F2="代码")*(A3:F10<>""),A3:F10+1),ROW(1:50)),)=ROW(1:50)))

数组公式。
44楼
xcd
再来一个,请陈版指正。

H3
=COUNT(0/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))
数组公式。
45楼
fangjianp
H3=COUNT(1/FREQUENCY(A3:F10,IF(A2:F2="代码",A3:F10)))
数组公式,下拉。
46楼
yuxin78
=COUNT(0/FREQUENCY(INDEX(A3:F10,N(IF(1,ROW(1:8))),N(IF(1,{1,3,6}))),INDEX(A3:F10,N(IF(1,ROW(1:8))),N(IF(1,{1,3,6})))))
47楼
gouweicao78
【结题】本题结题,此后答案如无其他思路和更好解法,将不再评分。
本题答案为8楼的2个答案:
=COUNT(0/FREQUENCY(IF(A2:F2="代码",A3:F10),A3:F10))
=COUNT(0/FREQUENCY((A3:A10,C3:C10,F3:F10),A3:F10))
主要考核FREQUENCY参数中设置条件和使用合并区域两种用法。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap