Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: yearabc

[已解决]VBA函数需要修正逻辑

[复制链接]
发表于 2022-4-21 20:43 | 显示全部楼层
本帖最后由 金樽空对月 于 2022-4-21 20:46 编辑
yearabc 发表于 2022-4-21 17:32
谢谢,意思是需要两个代码吗?没有衔接好,请谅解。没有弄明白。
而且我发现B列和I列非输入数据没有反应 ...

参考代码
  1. Private Sub Worksheet_Activate()
  2.    Set d = CreateObject("scripting.dictionary")
  3.      With Sheet1
  4.        R = Cells(Rows.Count, 2).End(xlUp).Row
  5.        ar = Range("b1:b" & R)
  6.         For ii = UBound(ar) To 5 Step -1
  7.             If ar(ii, 1) = "" Then GoTo 100
  8.         d.RemoveAll: n = 5
  9.         For i = ii To 1 Step -1
  10.           d(ar(i, 1)) = ""
  11.           If d.Count = 5 Then .Cells(ii + 1, 3).Resize(1, 5) = d.keys: Exit For
  12.           Next i
  13. 100:
  14.        Next ii
  15.     End With
  16. End Sub
复制代码

这代码只是运算B列的,如果想同时运算 I 列,把B列的代码做相应的修改,放在此工作表事件中运行即可。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2022-4-22 17:00 | 显示全部楼层
金樽空对月 发表于 2022-4-21 20:43
参考代码

这代码只是运算B列的,如果想同时运算 I 列,把B列的代码做相应的修改,放在此工作表事件中 ...

谢谢!还需要研究一段时间,好像不执行了

回复

使用道具 举报

发表于 2022-4-22 20:53 | 显示全部楼层
本帖最后由 金樽空对月 于 2022-4-22 20:55 编辑
yearabc 发表于 2022-4-22 17:00
谢谢!还需要研究一段时间,好像不执行了

不是不执行,你得先点到其它工作表内,然后再点回本工作表,程序才会执行。
另外,你说你的数据是用公式得到的,那公式得有源数据吧,那么源数据在哪个工作表内呢?

回复

使用道具 举报

发表于 2022-4-22 21:33 | 显示全部楼层    本楼为最佳答案   
yearabc 发表于 2022-4-22 17:00
谢谢!还需要研究一段时间,好像不执行了

详见附件,按钮也可用

用VBA公式筛选排列数字.rar

22.19 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2022-4-23 21:32 | 显示全部楼层
金樽空对月 发表于 2022-4-22 21:33
详见附件,按钮也可用

谢谢!感谢大师,就是这个目的。请问编码中的100,200,是什么意思,起什么作用,如果后面再添加同样数组,就要变为300递增吗?
回复

使用道具 举报

发表于 2022-4-24 10:11 | 显示全部楼层
yearabc 发表于 2022-4-23 21:32
谢谢!感谢大师,就是这个目的。请问编码中的100,200,是什么意思,起什么作用,如果后面再添加同样数组, ...

不是你所理解的那样,那个只是给程序做个节点标签而已,用的上的时候才做,你可以用随意一个数字做为它的名称,就像声明变量一样。
回复

使用道具 举报

 楼主| 发表于 2022-4-24 11:25 | 显示全部楼层
金樽空对月 发表于 2022-4-24 10:11
不是你所理解的那样,那个只是给程序做个节点标签而已,用的上的时候才做,你可以用随意一个数字做为它的 ...

谢谢,怎么才能只计算没有运算的部分,已经运算的就不用算呢?

VBA排列数字.zip

19.06 KB, 下载次数: 1

回复

使用道具 举报

发表于 2022-4-24 15:09 | 显示全部楼层
yearabc 发表于 2022-4-24 11:25
谢谢,怎么才能只计算没有运算的部分,已经运算的就不用算呢?

详见附件

VBA排列数字.rar

18.91 KB, 下载次数: 2

回复

使用道具 举报

 楼主| 发表于 2022-4-24 20:26 | 显示全部楼层

谢谢老师,但是不是从黄线哪一行逐渐向下计算,中间回空行啊。
回复

使用道具 举报

发表于 2022-4-24 21:56 | 显示全部楼层
yearabc 发表于 2022-4-24 20:26
谢谢老师,但是不是从黄线哪一行逐渐向下计算,中间回空行啊。

中间空行是因为运算添加的数据不足5,所以是空行。假如要把中间的也继续向上延伸查找够5个的话,那你后来的这个要求就完全没必要了。全部重算一次,也不会改变上面原来的结果,对于电脑来说就是多算了一些数据而已,快慢对于人来说也感觉不出来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 22:50 , Processed in 5.708862 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表