Office中国论坛/Access中国论坛
标题:
请高手帮助我一个数列的问题!
[打印本页]
作者:
batigol
时间:
2005-5-13 06:09
标题:
请高手帮助我一个数列的问题!
我有一组输入,比如1到100.中间不连续的数字,我想用VBA编辑个按扭,一点就把所以这组数没有的数字提出来.请高手告诉我代码啊!!!谢谢!!!!!!!!!
作者:
情比金坚
时间:
2005-5-17 04:35
还无需VBA,在B1写函数:向下拖即可
=IF(VLOOKUP(ROW(),$A$1
A$100,1,1)=ROW(),"",ROW())
作者:
红池坝
时间:
2005-5-17 07:05
还是用VBA吧。
情老斑竹的这个函数有问题,因为这个函数只对楼主所举的特例(1-100)有效,如果楼主的数据一变便会报错,比如A1的数据不是1,而是100,甚至101,这个函数就无法完成任务:因为函数以行标(ROW())作为返回值就值得商榷,毕竟真正的返回值应该是楼主的“一组输入”中的一个,而这组输入有可能与行标毫无关系,比如是一组身份证之类的。
VBA 的思路大致如下:
设两数组:A()为已经输入的数据,B()为预设的数组,也就是说A()是B()的子集,
flag=0 ======这是个标志,用以在集合B()中标识A()里有的数据,具体的可以根据情况自定,原则只有一个:不和B()中原有的任意数据雷同!
i=0
for i=0 to B()集合的个数 ====遍历B集合
for j=0 to A()集合的个数 ====遍历A集合
if B(i)=A(j) then ====如果A()中找到了B(i),则设立标志并退出这一层循环
B(i)=Flag
exit for =========退出这层循环
end if
next j
if B(i)<>flag then =====如果A()集合中没有B(i),则输出B(i)
output B(i)
next i
用数组真是麻烦,本来VB里好像有集合对象的,但我在VBA里没有找到,我想,如果能用集合的话,就可以用集合的减运算直接得到答案,用不了这么复杂的。希望能有兄弟们找到更好的办法:)
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3