ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 如何生成不含数字7和7的倍数的序列

如何生成不含数字7和7的倍数的序列

作者:绿色风 分类: 时间:2022-08-17 浏览:194
楼主
w83365040371
Q:如何生成不含数字7和7的倍数的序列 图1.

 



在b3中输入数字1, b4的公式如下, 然后下拉,结果见图2.
  1. =SUBSTITUTE(B3+MATCH(,0/MOD(SUBSTITUTE(b3+{1,2,3},7,8),7),),7,8)

图2.

 



不含数字的序列.rar



2楼
w83365040371
扩展...

1楼简单的介绍了生成不包含数字7和7的倍数的序列的公式,下面我们具体说下其它数字所对应的序列的生成公式及公式的思路

图4.

 


对于要生成的序列,要满足两个条件:

1.不能包含数字N
2.不能包含数字N的倍数

备注:N=0、1、2...9


根据条件2大致可以将数字N成三组:
1.对于数字0,0的M倍是0,条件2可以忽略掉;对于数字1,1的M倍是M,那么满足条件2的整数就不存在,故将条件2删除,公式如下
备注:M=0、1、2、3.....
公式3.
  1. =SUBSTITUTE(J2+1,0,1)


备注:*N指个位数字为N的任意整数...

2.个位数为数字2、4、5、6、8的任意整数,加减1,都不会是这些数字的倍数,所以对于一个已知的满足条件1和2的数字,加上{1,2}后所生成的数组中,必有一个能满足所有条件...
  1. =--SUBSTITUTE(L3+MATCH(,0/MOD(SUBSTITUTE(L3+{1,2},L$1,L$1+1),L$1),),L$1,L$1+1)

3.而对于数字3、7、9,则有可能*N+1或者*N-1是这些数字的整数倍,需要在+{1,2,3}范围内才能找到一个符合要求的值
  比如:对于数字7, 96是已知的满足条件的数字,+{1,2,3}生成的数组为{97,98,99},其中只有数字99才能满足要求
备注:为什么只用{1,2,3}?对于数字3、7、9而言,假如+{1,2}后是其中有一个是其整数倍,那么+3必然不是其整数倍...
  1. =--SUBSTITUTE(Q3+MATCH(,0/MOD(SUBSTITUTE(Q3+{1,2,3},Q$1,Q$1+1),Q$1),),Q$1,Q$1+1)


比如188+{1,2,3}用substitute()得到的结果是{1810,1100,1101},而不是我们想要的{190,200,201},所以对于数字9,我们用递减的公式求其序列
备注:将9替换为8
  1. =SUBSTITUTE(S2-MATCH(,0/MOD(SUBSTITUTE(S2-{1,2,3},9,8),9),),9,8)
所有的数字对应的序列见图5.


图5.

 



3楼
w83365040371
扩展2...



对于单个数字N,用公式rept(N,row(a1)就可以解决;而对于多个数字N,怎么解决?
在这里稍微介绍下生成包含数字N的3种序列
备注:假设N=4,N1=2,N2=8


1.生成区间[0,N]的序列
方法1:生成这种序列,类似于生成不含数字9和9的倍数的序列,公式如下
  1. =SUBSTITUTE(B6-1,9,4)

方法2.观察序列得知,满足条件的序列就是5进制序列,用生成5进制序列的公式也可以达到目的,结果见图9.
  1. =SUM(INT(MOD((ROW(A1)-1)/5^(ROW($1:$7)-1),5))*10^(ROW($1:$7)-1))
备注:反过来,5进制的序列也能用方法1生成....

2.生成区间[N,9]的序列
当上个数字是9时,+1所得结果是10,而实际上序列要求的数字是44,那么要讲1和0都替换为4,公式如下结果见图6.
  1. =SUBSTITUTE(SUBSTITUTE(E6+1,0,4),1,4)


3.生成区间[0,N1]or[N2,9]的序列
这种序列比较简单,将N1+1替换为N2就是我们想要的序列,公式如下,结果见图6.
  1. =SUBSTITUTE(G6+1,3,8)


图6.

 


总结:

这里只是简单的介绍了生成所需序列的公式及其思路,对于较为复杂的生成包含多个数字N的序列,没有叙述!


如生成仅包含数字1、3、4、7、9的序列,目前还没有想到较为简单的公式(当然,我们可以用函数index嵌套进制函数去获得结果)

4楼
wjc2090742
不需要辅助单元格的数组公式。说起来悟空可能之前有帖哦,他也在隔壁提问过类似问题的,我当时问他,说应该有帖的。
  1. =SMALL(--SUBSTITUTE(ROW($1:1)*7-{1,2,3,4,5,6},7,9^9),ROW(A1))
5楼
w83365040371
嗯,在eh上回的这个帖子, 好像有个挑战贴是4,他们有的用的是数组公式,不过单元格多时,速度会慢
起始也不需要辅助单元格,加上N判断就行了
  1. =--SUBSTITUTE(N(B2)+MATCH(,0/MOD(SUBSTITUTE(N(B2)+{1,2,3},7,8),7),),7,8)
6楼
wjc2090742
都N(B2)了,怎么说没有辅助单元格呢,如果要求从B1开始输入序列呢?但是用辅助的,运算量应该比较小,应该推广。只是楼主要搜索看看之前是不是有帖了,我当时是没搜索到,保险起见再搜索看看吧。
7楼
w83365040371

嘿嘿, 附件中, 公式输入的单元格位置是b3,所以就取巧了.....
如果是b1输入公式, 用if判断下
  1. =IF(ROW()=1,1,SUBSTITUTE(OFFSET(B1,-1,)+MATCH(,0/MOD(SUBSTITUTE(OFFSET(B1,-1,)+{1,2,3},7,8),7),),7,8))
我印象中好像见到过,不过没找到...
这个贴打算总结下,把数字0-9的公式写出来,并对比分析下

这个是不含4的1-999序列
8楼
天南地北
1就不用了吧,O(∩_∩)O~

免责声明

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

评论列表
sitemap