我正在使用下面的代码在蓝棱镜中筛选多标准的excel。但是我不能过滤不等于场景的多个条件。
Dim wb As Object
Dim excel as Object
Dim range as Object
Try
wb = GetWorkbook(Handle, Workbook)
excel = wb.Application
range = excel.Range(FRange)
Dim listOfValues as Array
listOfValues = Split(FCriteria,";")
wb.worksheets(Worksheet).select
range.select
range.Autofilter(FCol,listOfValues,7)
Success = True
Catch e As Exception
Success = False
Message = e.Message
Finally
wb = Nothing
End Try请帮我调整一下脚本
发布于 2017-09-26 21:53:33
我几乎可以肯定,没有过滤器选项来设置“负面清单”。您可以指定一个(正)值列表(这是您的代码目前所做的,为此,您必须将7设置为第三个参数),或者您可以给出最多2个单独的条件(在Excel中,选择“自定义筛选器”来设置它们。
您应该直接在Excel中使用筛选器,并尝试按您所需的方式进行设置。满意后,清除筛选器,录制宏,然后重复筛选。转到VBA编辑器并查看其中的内容。将其转换为C#代码很简单。
但是:
不能通过Excel GUI
按代码( C#或VBA)设置任何筛选
发布于 2017-09-27 07:31:13
我会质疑你到底想做什么。由于您使用的是Blue Prism,因此您应该尝试访问BP集合(VB DataTable)中的底层数据,而不是应用过滤器,后者是供人类进一步操作界面的可视化工具。机器人仍然必须对过滤后的数据做一些事情,并且在循环期间编写代码来处理数据要容易得多。
否则,请使用“Utilities- collection Manipulation”VBO的“Filter Collection Page”来获取经过筛选的集合。
你也是在使用VBA的Split函数,而你应该在VB中使用Split作为字符串的方法。
在“Utilities- Collection Manipulation”VBO(未测试)中尝试此新页面:
Dim NewRow As DataRow
Collection_Out = Collection_In.Clone
Dim Select_Concat As String
Select_Concat = "NOT(" & fieldName & " = '" & [String].Join("' OR " & fieldName & " = '", FCriteria.Split(";"c)) & "')"
For Each parentRow As DataRow In Collection_In.Select(Select_Concat)
NewRow = Collection_Out.NewRow
For Each c As DataColumn In NewRow.Table.Columns
NewRow(c.ColumnName) = parentRow(c.ColumnName)
Next c
Collection_Out.Rows.Add(NewRow)
Next parentRow
NewRow = Nothing
Collection_In = Nothing输入:Collection_In(集合)、fieldName(文本)、FCriteria(文本)
输出:Collection_Out(集合)
您首先需要将整个范围放入一个未过滤的集合中(这将是您指向此页面的Collection_In,然后将过滤后的集合取出...
https://stackoverflow.com/questions/46427707
复制相似问题