芯友网Xin1234.COM

除了数组循环VBA 有否办法 筛选 一个人事表中 某个部门的人员数据 到一个数组 类似 筛选中 按部门 筛选 但只取数据,不希望让工作表 真正出现筛选(避免影响用户当前的操作)@混混K



站王国中eciffO.ABV.理管
除了数组循环

VBA 有否办法 筛选 一个人事表中 某个部门的人员数据 到一个数组 
类似 筛选中 按部门 筛选 

但只取数据,不希望让工作表 真正出现筛选(避免影响用户当前的操作)

?混混K
子茄.询咨
Copyfromrecordsets 
Copyfromrecordset
?管理-VBA-Office中国王站 
站王国中eciffO.ABV.理管
使用select  * from 表  where 条件  
给ado 再 Copyfromrecordset?
子茄.询咨
站王国中eciffO.ABV.理管
但 ado 有一定的风险,主要是 字段判断 有时出错
子茄.询咨
不会吧
站王国中eciffO.ABV.理管
会有,ado 会根据前10-20条数据判断 ,有可能把 本是文本的字段 判断 为数字
子茄.询咨
嗯,是的
永小
子茄.询咨
要求数据一直
永小
格式一致
站王国中eciffO.ABV.理管
我是想了解下 Excel 本身有否什么函数,可筛选指定条件的数据,返回一个数组或range
是的,要格式一致,但客户这个 数据 比较乱
永小
筛选,我首先想到的就是用SQL
站王国中eciffO.ABV.理管
哈哈,我也是,我一起想为什么excel 不能 直接有个 where 条件呢。太习惯access了
还有多表关联 。出个查询 ,多方便
永小
狗二
站王国中eciffO.ABV.理管
但excel也有很多优点。没办法。不能两全
狗二
舟圆
K混混
?管理-VBA-Office中国王站 可以的
站王国中eciffO.ABV.理管
?圆舟 是的,如果能用sql是最方便的。
但客户这个环境 不能用sql

?混混K 有啥办法
K混混
读取源数据到数组,新建一个一样大小的数组,然后循环源数组,遇到需要的行,就计数+1,向新数组写入
写出的时候,以计数的行数写出就行了
站王国中eciffO.ABV.理管
是的,我现在是使用这个方法。
K混混
我以前写过分表的就是这样处理,很快的
秒拆分
站王国中eciffO.ABV.理管
但这个方法 在vba环境 数组的速度很快
K混混
3维数组,根据指定条件拆分
站王国中eciffO.ABV.理管
但客户 转成网页的语言。就比较慢
他们的数组 比VBA数组慢很多
K混混
网页里可以用vbscript
js的数组更快
站王国中eciffO.ABV.理管
所以想 excel有否办法 先缩小 Range的范围
K混混
不知道你的客户是不是搞错 了
站王国中eciffO.ABV.理管
不是js, 一种使用人群不多的奇怪 语言。一维数组快,二维数组慢
所以才想先缩小 范围。
K混混
那可以用一维数组套一维数组
缩小范围用find
站王国中eciffO.ABV.理管
如果在excel 里用函数 公式 或filter 缩小范围,这个它是调用excel 自身的功能,就快
find?  find 返回是一个range 或数组吗?
K混混
直接查找匹配的单元格,再读取整行
站王国中eciffO.ABV.理管
是想先取到  如:财务部门 的所有人员
那就是需要 查找 再找 循环了
K混混

find findnext
指定列的单元格查找
find相对来讲,还是挺快的,如果数组在他们语言里不快,而引用对象要快一些的话,可以试一下
kcin
大家好,
Sub 导入图片()
For Each shap In Sheet1.Shapes
If shap.Type <> 8 Then shap.Delete
Next
For Each Rng In Range([a2], Cells(Application.CountA(Columns(1)), 1))
i = ThisWorkbook.Path & " \" & Rng & ".jpg"
Set rngs = Cells(Rng.Row, 2)
Sheet1.Shapes.AddPicture i, True, True, rngs.Left, rngs.Top, rngs.Width, rngs.Height
Next
End Sub

运行这个代码时候,因为路径调用图片,但是出现自动化错误,
站王国中eciffO.ABV.理管
刚试了一下,find 在他们环境中效率也不高

如果 excel 有类似  autofilter效果但不真正去筛选  或  sql+ where 这种方式 就好了
 
即从原始数据 取到符合条件的数据,但不影响和破坏原数据
kcin
请求:)们帮忙,看看,
站王国中eciffO.ABV.理管
for each 删除的话,可能最好用倒序
K混混
那个什么语言啊
站王国中eciffO.ABV.理管
因为每删除一个 集合里就少了一个
K混混
?nick 确定,看哪句变黄
kcin
最后一句
K混混
具体内容
kcin
K混混
最后一句end sub
先判断i是不是存在
然后应该是 i,false,true,.....
kcin
这个代码是没有问题,因为是我抄写网上老师的,
我不会写,
开始可以运行,
K混混
kcin
后来,尝试,改下路径,就不习惯了,
行了,
业余爱好,然后工作可以用到,就学点皮毛,
���·�小
path了,改啥路径
K混混
你这个可能是第二个参数和第三个参数矛盾了
子茄.询咨
?管理-VBA-Office中国王站 啥环境,都搞到access 不行吗?
站王国中eciffO.ABV.理管
?咨询-茄子 客户不习惯access 
子茄.询咨
啥地方不习惯?
Office 多了现在正版不便宜
狗二
:),你要做啥子
?管理-VBA-Office中国王站 
子茄.询咨
Access 有runtime 
站王国中eciffO.ABV.理管
他们有固定的环境,没办法
子茄.询咨
啥环境?银行不让装软件?
能联网吗?
站王国中eciffO.ABV.理管
不能
excel vba如何获取 非选中的工作表中的当前选中的单元格 (或地址)
舟圆
 非选中的工作表中有当前选中的单元格吗

它好像就不接受父对象
站王国中eciffO.ABV.理管
就是没有这个属性,所以才问
舟圆
有个办法
hcyoR.sseccA.众观瓜吃
选中才叫活动单元格
舟圆
绕一下弯
站王国中eciffO.ABV.理管
你sheet1  选中 B5
去到sheet2 ,如果知道sheet1 原来选中的是 B5

每个工作表 也有一个当前 选中区域的
hcyoR.sseccA.众观瓜吃
那你得跳转到sheet2
站王国中eciffO.ABV.理管
但VBA 只能获取 激活的工作表的选中区域
不激活的获取不到。
是的,我现在是激活再回来,但有点别扭
舟圆

你先激活要查那个表
站王国中eciffO.ABV.理管
嗯嗯,是的。现在是这个方法
舟圆
获取完再跑.
站王国中eciffO.ABV.理管
也加了禁止update ,但感觉有一点晃
舟圆
假装没去过.
站王国中eciffO.ABV.理管
哈哈。
舟圆
我不排斥晃.
晃一点才知道没死机
站王国中eciffO.ABV.理管
舟圆
不然长时间一动不动还看着不放心
站王国中eciffO.ABV.理管
这理由我居然无法反驳
舟圆
所以一般不动ScreenUpdating
晃一点当进度条用了
站王国中eciffO.ABV.理管
ScreenUpdating有一点重
舟圆
知道代码还在努力工作
站王国中eciffO.ABV.理管
没办法,我说不过你

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容