【发布时间】:2012-12-20 03:22:05
【问题描述】:
假设我有一个如下所示的矩阵:
EMPID Type Of employment
#1 10 "T"
#2 11 "P"
#3 20 "P"
#4 40 "T"
#5 50 "T"
#6 15 "P"
#7 19 "T"
过滤后
EMPID Type Of employment
#2 11 "P"
#3 20 "P"
#6 15 "P"
你们能建议我如何在 vbscript 中做到这一点吗?我知道 VBA 的语法,但是在 VBScipt 中不知道如何格式化?
过滤后,如果我在第 1 列上使用 CountA,我应该将行号设为 3 还是 7?我在这里太困惑了。
更新
objSheet2.Range("B1").AutoFilter 2, "Parent",,,False
要删除自动过滤,我使用了代码 - objSheet2.Rows("1:1").Select.AutoFilter 但收到错误 Unable to get the select property of the Range Class
已更正 objSheet2.Range("B1").AutoFilter 2, "Parent",,,True
objSheet2.AutoFilterMode = False
查询:一旦过滤了行,那么当循环遍历它们时,我将如何识别过滤数据行的实际行数?
回答
For rowIndex=2 To objExcel1.Application.WorksheetFunction.CountA(ob1.Columns(1))
If objSheet2.Rows(rowIndex).Hidden Then
' do nothing - row is filtered out
Else
MsgBox(rowIndex)
End If
Next
这样我得到了过滤行的实际行号。如果你们发布任何更好的想法,请提出建议:-)
屏幕截图
谢谢
【问题讨论】:
-
也许这会对您有所帮助...因为您似乎有很多关于如何在
vbscript中使用 Excel 而不是VBA做事的问题。一旦你通过vbscript建立了Excel对象,对象模型的工作原理和VBA一样……所以,如果你掌握了VBA语法,你就可以申请写XL对象了。 -
@ScottHoltzman 请查看我的更新!为什么设置为假?应该是“开”吧?我想过滤列#1 上的值。那我该怎么做呢?因为这种语法在 Vb 脚本中不起作用。
-
你读过关于
AutoFilter的任何信息吗?这在 vBA 中也不会做任何事情,除了在第 1 行的 A-D 列上放置过滤器。此外,“.AutoFiltermMode = False”确实会关闭您的过滤器。但有时您需要在重新设置之前删除所有现有的过滤器。 -
要实际过滤第1列,您需要在
AutoFilter方法中设置column和filter string属性。 -
@ScottHoltzman 请看我上面的更新。现在,当我的脚本将通过其处理完成时,如何将其还原?