Tag: autofilter

Excel自动筛选器,但可变的价值

所以我需要过滤除了一个之外的所有的值。 我使用了这部分代码,它显然会过滤一切,但“比利时”,但我需要在那里变化。 Dim myValue As Variant myValue = InputBox("Which country to exclude? ") Range("AB1").Select ActiveSheet.Range("$B$1:$BY$319696").AutoFilter Field:=27, Criteria1:="<>Belgium" 对于我在特定国家过滤的filter版本,variables工作得很好: Dim myValue As Variant myValue = InputBox("Which country to filter on: ") Range("AB1").Select ActiveSheet.Range("$B$1:$BY$319696").AutoFilter Field:=27, Criteria1:= _ myValue ActiveWindow.SmallScroll Down:=-30 那么为什么这不起作用: ActiveSheet.Range("$B$1:$BY$319696").AutoFilter Field:=27, Criteria1:= <>myValue 另外我不知道为什么它是这样的结构,它是从loggingmacros生成的,尤其是_ Criteria1:= _ myValue

高级过滤标准可以在VBA而不是范围?

在尝试通过VBA设置超过2个标准的正常自动过滤方式之后,我发现它必须通过高级filter来完成。 违规的例子: Worksheets(1).Range("A1").AutoFilter Field:=ColNum, Criteria1:="A*", Operator:=xlOr, Criteria2:="B*", Operator:=xlOr, Criteria3:="C*" 我希望将标准传递给PowerShell脚本中的函数(而不是macros)。 我有这一切工作正常,如预期的1标准,但现在我想3。 我想我可以写一个macros插入一个新的表格,写入条件,然后筛选新的范围,但我宁愿首先检查首选的方式。

C#Excel自动化:使用SpecialCells()检索AutoFilter()后的行似乎不能正常工作

第一次海报在这里:)。 从WinForms C#应用程序自动化Excel 2010中遇到以下问题。 我的testing表看起来如下: Index Value1 Value2 AAA 2 3 AAA 3 4 AAA 3 8 BBB 2 2 BBB 5 6 BBB 3 5 CCC 1 2 CCC 2 2 DDD 2 5 我成功地打开了工作簿并从我的C#应用​​程序加载工作表。 之后,我运行下面的代码: Excel.Range range = xlSheet.UsedRange; range.AutoFilter(1, "AAA", Excel.XlAutoFilterOperator.xlAnd, Type.Missing, true); Excel.Range filteredRange = range.SpecialCells(Excel.XlCellType.xlCellTypeVisible); 这按预期工作,并且filterRange现在包含我的testing表的前四行(列名称和所有“AAA”行)。 但是,如果我尝试使用AutoFilter来获取所有“BBB”行,就像这样 range.AutoFilter(1, "BBB", Excel.XlAutoFilterOperator.xlAnd, […]

自动过滤后调用autosize的Apache POI

我一直在寻找一段时间,还没有find解决scheme。 这个问题之前已经被问到过,但是OP没有得到回应,我不想复活一个老的线程,所以决定问一个新的问题。 OP线程在这里 。 我遇到的问题是我有一个电子表格,它是用从数据库中获得的数据创build的,但是有时候单元格内的数据可能会很长,所以想让POI自动化来保存用户不得不这样做,但是因为我在调用autosize之前设置了autofilter,所以没有工作。 我正在使用Apache POI 3.9。 我要么得到它的自动化点,但没有考虑到自动筛选下拉箭头,或者我得到一个空指针exception。 我已经尝试了遍地移动一个for循环,包括在数据写入电子表格的末尾,也在文件输出stream的前面,但是无济于事。 我也尝试使用几种不同的字体,但是这也没有奏效。 希望有人能帮助我。 谢谢

在AutoFilter中结合多个排除(<>)条件

我使用这个肮脏的黑客来解决我的问题: ' Filter managerial functions ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Head*", _ Criteria2:="<>IT*", Operator:=XlAutoFilterOperator.xlAnd ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Local Head*", _ Criteria2:="<>Resp*", Operator:=XlAutoFilterOperator.xlAnd ActiveSheet.Range("$A$1:$BW$2211").AutoFilter Field:=36, Criteria1:="<>Team Lead*", _ Criteria2:="<>XB*", Operator:=XlAutoFilterOperator.xlAnd 有没有办法把这三个陈述合并成一行? 一旦我有第三个标准(Criteria3)在一行Excel似乎有问题。 此外,<> Array()似乎不被支持。

比较2列值(在同一行)

我需要一个macros来过滤列A和B的值是相等的,或者是相同的,哪个差值是0。 通常情况下,我应用自动filter的单一范围,如下所示: ActiveSheet.Range("A2:AX2").AutoFilter Field:=Range("X" & 1).Column, Criteria1:=">0" 在这种情况下,我想匹配或比较2列,并应用AB=0时的filter 当然,我可以添加另一列是这两个之间的差异,但如果我可以,我宁愿避免它。 PS:稍后,我需要另外一个ABC=0滤波器,以防你的解决scheme适合这个。

设置自动筛选多个通配符

现在我正在做编码设置数据图表的filter。 基本上,我不知道如何在这里发布数据表,所以只要input它们即可): (从左边开始是列A)名称* B设备*数量*出售*所有者 基本上我需要过滤掉2列: – 带有任何字的BDevice包含“M1454”或“M1467”或“M1879”(这意味着M1454A或M1467TR仍然适合) – 拥有PROD或RISK的所有者 这是我写的代码: Sub AutoFilter() ActiveWorkbook.ActiveSheet..Range(B:B).Select Selection.Autofilter Field:=1 Criteria1:=Array( _ "*M1454*", "*M1467*", "*M1879*"), Operator:=xlFilterValues Selection.AutoFilter Field:=4 Criteria1:="=PROD" _ , Operator:=xlOr, Criteria2:="=RISK" End Sub 当我运行代码时,机器返回错误1004,似乎是错误的部分是filter第2部分(我不确定使用的字段,所以我不能肯定地说) 编辑; Santosh:当我尝试你的代码时,机器出错9的下标超出范围。 错误来自with语句。 (因为数据表有A到AS列,所以我只是改为A:AS)

Excel VBA:如何一次只取消一个自动filter范围? 代码提供

感谢您来到这个线程。 我拥有的: – 在行A:G上使用自动filter的报告 我需要的: – 如果有filter的话,那么不需要过滤特定列的实际代码。 运行下面的代码,不需要过滤A:G的整个范围。 – 在这个例子中,我只想要“F”而不过滤,如果过滤掉了任何其他的filter。 With Sheets("DATA") If .Range("F1").AutoFilter = True Then ActiveSheet.Range("$A$1:$G$59826").AutoFilter Field:=6 Else End If End With 任何和所有的想法,非常感谢! 非常感谢!

在列上添加特定的自动筛选器

我正在尝试在列上设置filter。 这是我在Interop中完成的方式: private void CheckMasterFile(string path) { var xlApp = new Excel.Application(); var xlWorkbook = xlApp.Workbooks.Open(path); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; foreach (var project in projects) { if (string.IsNullOrEmpty(project.ProjectID.Value)) { continue; } var xlRange = xlWorksheet.UsedRange; if (xlWorksheet.AutoFilter != null) { xlWorksheet.AutoFilterMode = false; } xlRange.AutoFilter(Field: 2, Criteria1: project.ProjectID.Value); var result = xlRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible, Type.Missing);//only shows filtered […]

在VBA自动筛选器中使用string数组作为条件

我搜查了其他post,发现类似的问题,但没有什么可以帮助我具体。 我试图采取一个string数组,并将其用作过滤条件。 这很棘手,因为数组是由一个函数创build的,并且具有可变数量的元素和内容。 我需要自动filter,并检查列E的每一个元素。 我试过两种方法 1) With Sheet17 .Range("E1").AutoFilter Field:=5, Criteria1:=Application.Transpose(arr) End With 结果:将筛选器应用于列E,但未能select任何选项 2) For i = 0 To counter – 1 With Sheet17 .Range("E1").AutoFilter Field:=5, Criteria1:=Application.Transpose(arr(i)) End With Next 计数器是一个整数,表示数组中元素的数量结果:这个数组正确地循环遍历数组,但是只select了filter的最后一个选项 – 大概是因为每次循环它都会重新开始并取消选中所有其他选项最后只有最近的选项保持被选中。