数字游戏,高手进(讨论帖)
excel吧
全部回复
仅看楼主
level 12
yky洋洋 楼主
欢迎各路高手挑战。
题目:
给出一组100个手机号码,要求对号码进行识别,统计相同次数≥7个对应数字位置的手机号码。
举例:
13513561311和
13513000111
,对应位置相同次数个数=7个。前面5位数字相同和后面2位数字相同。
注:每个手机号码11位数,仅针对每个位数进行相同频次统计个数。
目的:纯娱乐打法时间,找出哪些人的手机号码最接近。并学习不同思维的处理方式。
要求:
1--不限方法,无论笨办法、死办法还是什么办法都行。
2--不限模版,但需要自己构建数据分析模版。
3--若VBA操作,不需要留下代码,仅给出截图+逻辑即可。
4--若函数操作,可提供用到哪些函数,不需要具体函数表达式。
5--若其他操作,尽可能上截图,看看思维+逻辑,以便观摩学习。
自己的方法是函数方法(不会VBA),尚可,不太满意。
2025年10月29日 07点10分 1
level 12
yky洋洋 楼主
追加自己的方案:
函数:正则,SUBTOTAL,IF,COUNTBLANK,外加超级表+切片器。模版暂不提供。
如果数据100条基数不够,可以自行增加至150条,200条等等。
2025年10月29日 07点10分 2
level 11
我运用了sqlserver 中 exists谓词 来解决这个问题。
思路: 每次根据当前号码 11位 去匹配 100个号码11位 ,存在位数上值相同时 合计数+1,11位都匹配完 如果 合计总数>=7 则符合条件。
2025年10月29日 08点10分 3
当然 这个主要使用了数据库,没用excel,比较偷鸡,哈哈哈就当一乐吧
2025年10月29日 08点10分
@_forever_允儿 也行,确实可以,也很高效,见识了![玫瑰]
2025年10月29日 08点10分
level 10
做个模拟样本出来,11位的数值型字圆串需要怎样统计?是否需按模式分类统计?因为近似也可以分多种模式的,如:1***1234***、13141******这两种都是匹配到5个字圆,但又是两种不同的模式。
2025年11月04日 11点11分 5
按手机号模仿数据,第一位是1,其他10位随机生成,然后整体弄100组数据出来。 然后用自己的方案做出这一百组数据中,每位数相同的累积和≥7的,列出模拟手机号
2025年11月04日 11点11分
level 10
不信你不会vba
2025年11月05日 03点11分 6
不会。真
2025年11月05日 09点11分
level 7
'首先要选择这些电话号码所在的区域,如图中的黄色区域。再运行即可。
2025年11月05日 15点11分 7
大概过程:把第1个号码依次和第2个一直到第100个对比,再把第2个依次和第3个一直到第100个对比,。。。。。。,再把第99个和第100个对比,只要有>=7个数字相同,就记录下来。
2025年11月05日 15点11分
@xsghk 循环跑,是很,可惜我不会[黑线]
2025年11月05日 23点11分
level 5
=LET(手机号,B21:B36,拆分,DROP(REDUCE("",REGEXP(手机号,".",3),VSTACK),1),SCAN("",手机号,LAMBDA(x_1,y_1,SUM(--(BYROW(拆分,LAMBDA(x,SUM(--(x=REGEXP(y_1,".")))))>6)))))
这样是否可以, 我的方法是用正则把所有的号码拆开,然后用BYROW去匹配每个号码相同下标总和, 最后判断byrow的数组大于6的总和
2025年11月05日 19点11分 9
我要验证下,逻辑是这样的
2025年11月05日 23点11分
吧务
level 15
=LET(X,MID(A1:A100,COLUMN(A:K),1),BYROW(X,LAMBDA(Y,SUM(N(MMULT(N(X=Y),ROW(1:11)^0)>6)))))
2025年11月06日 02点11分 10
level 9
感觉规则不够明确,比如:
号码1:12345671234
号码2:12345672345
号码3:23455672345
号码1和号码2只有前7位一样,号码2和号码3只有后7位一样,但是号码1和号码3只有中间3位一样,如果有任意7位一样就算一组的话,数据量够多,并且忽略电话号码编码规则的话,所有数字都可以编做一组从00000000000到99999999999都是一组
数据量不多的话,可能性就太多了,从所有数字各自为一组到所有数字都在一组里都有可能
计算的话,运算量就太大了,先拿出一个号码,然后把剩余号码分成2组,一组有7位以上和这个数字一样的,另一组没有,把有7位以上一样的和这个拿出的号码放一起,然后从剩余的号码里继续挑出和之前拿出的号码中任何一个有7位一样的,重复这个过程,直到没有可挑出来的,如果还有剩余号码,就再起一组,拿出一个号码,把剩余号码分成2组,如此循环......
2025年11月06日 04点11分 11
level 10
=LET(a,A1:A100,b,MID(a,SEQUENCE(,11),1),DROP(UNIQUE(REDUCE("",a,LAMBDA(x,y,LET(c,BYROW((MID(y,SEQUENCE(,11),1)=b)*1,SUM),VSTACK(x,FILTER(a,(c>7)*(c<>11),"")))))),1)) 要下班了 没时间验算了
2025年11月06日 09点11分 12
level 9
=LET(s,7,f,LAMBDA(a,b,IF(ISOMITTED(a),IF(ROWS(b)>1,f(TAKE(b,1),DROP(b,1)),CONCAT(b)),LET(c,BYROW(b,LAMBDA(r,OR(BYROW(N(a=r),SUM)>=s))),d,FILTER(b,c),e,FILTER(b,NOT(c)),a,BYROW(a,CONCAT),IF(OR(ISERROR(d)),HSTACK(a,f(,e)),IF(OR(ISERROR(e)),VSTACK(a,BYROW(d,CONCAT)),VSTACK(a,f(d,e))))))),IFNA(DROP(REDUCE(0,BYCOL(f(,REDUCE(,REGEXP(B:.B,".",3),VSTACK)),LAMBDA(c,LAMBDA(TOCOL(c,2)))),LAMBDA(a,x,IF(ROWS(x())>1,HSTACK(a,VSTACK("第"&COLUMNS(a)&"组("&ROWS(x())&"个)",x())),a))),,1),""))
2025年11月06日 10点11分 13
公式大概就这样了,数据需要自己模拟,每组中的每个数字都和该组内的至少1个数字有7位相同,而各组之间任意数字就不满足此条件
2025年11月06日 10点11分
level 13
低版本,和同一行相同位置数字相同>6的手机号码。如果要计算数量,textjoin函数换一下即可。
=TEXTJOIN(",",,IF(MMULT((MID(A$1:A$100,COLUMN(A:K),1)=MID(A1,COLUMN(A:K),1))*(A$1:A$100<>A1),Z1:Z11+1)>6,A$1:A$100,""))
2026年04月23日 05点04分 14
level 6
我来补一个VBA的代码:
2026年04月24日 02点04分 15
level 12
yky洋洋 楼主
3
2026年04月26日 11点04分 16
1