楼主 w83365040371 |
Q:如何生成不含数字7和7的倍数的序列 图1. 在b3中输入数字1, b4的公式如下, 然后下拉,结果见图2.
图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.
备注:*N指个位数字为N的任意整数... 2.个位数为数字2、4、5、6、8的任意整数,加减1,都不会是这些数字的倍数,所以对于一个已知的满足条件1和2的数字,加上{1,2}后所生成的数组中,必有一个能满足所有条件...
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必然不是其整数倍...
比如188+{1,2,3}用substitute()得到的结果是{1810,1100,1101},而不是我们想要的{190,200,201},所以对于数字9,我们用递减的公式求其序列 备注:将9替换为8
图5. |
3楼 w83365040371 |
扩展2... 对于单个数字N,用公式rept(N,row(a1)就可以解决;而对于多个数字N,怎么解决? 在这里稍微介绍下生成包含数字N的3种序列 备注:假设N=4,N1=2,N2=8 1.生成区间[0,N]的序列 方法1:生成这种序列,类似于生成不含数字9和9的倍数的序列,公式如下
方法2.观察序列得知,满足条件的序列就是5进制序列,用生成5进制序列的公式也可以达到目的,结果见图9.
2.生成区间[N,9]的序列 当上个数字是9时,+1所得结果是10,而实际上序列要求的数字是44,那么要讲1和0都替换为4,公式如下结果见图6.
3.生成区间[0,N1]or[N2,9]的序列, 这种序列比较简单,将N1+1替换为N2就是我们想要的序列,公式如下,结果见图6.
图6. 总结: 这里只是简单的介绍了生成所需序列的公式及其思路,对于较为复杂的生成包含多个数字N的序列,没有叙述! 如生成仅包含数字1、3、4、7、9的序列,目前还没有想到较为简单的公式(当然,我们可以用函数index嵌套进制函数去获得结果) |
4楼 wjc2090742 |
不需要辅助单元格的数组公式。说起来悟空可能之前有帖哦,他也在隔壁提问过类似问题的,我当时问他,说应该有帖的。
|
5楼 w83365040371 |
嗯,在eh上回的这个帖子, 好像有个挑战贴是4,他们有的用的是数组公式,不过单元格多时,速度会慢 起始也不需要辅助单元格,加上N判断就行了
|
6楼 wjc2090742 |
都N(B2)了,怎么说没有辅助单元格呢,如果要求从B1开始输入序列呢?但是用辅助的,运算量应该比较小,应该推广。只是楼主要搜索看看之前是不是有帖了,我当时是没搜索到,保险起见再搜索看看吧。 |
7楼 w83365040371 |
嘿嘿, 附件中, 公式输入的单元格位置是b3,所以就取巧了..... 如果是b1输入公式, 用if判断下
这个贴打算总结下,把数字0-9的公式写出来,并对比分析下 这个是不含4的1-999序列 |
8楼 天南地北 |
1就不用了吧,O(∩_∩)O~ |