Tag: autofilter

使用c#在两个单独的列中通过三个条件过滤excel范围

我正在过滤两个列的三个不同标准的Excel范围,列“B”由matFilter1过滤, matFilter2和列“AC”由matFitler3过滤,我使用的代码是: //Filter Job Data Sheet for Material Transactions string matFilter1 = "I Job Issue"; string matFilter2 = "W Job Withdrawal"; string matFilter3 = "1"; Excel.Range jobMatRange = JobDataSheet.UsedRange; //Define range of Job Material Sheet jobMatRange.AutoFilter(2, matFilter1, Excel.XlAutoFilterOperator.xlOr, matFilter2, true); //Apply matFilter1 and matFilter2 to column2 in range jobMatRange.AutoFilter(29, matFilter3, Excel.XlAutoFilterOperator.xlOr, Type.Missing, true); //Apply matFilter3 […]

如何AutoFilter或类似的只包括某些单词

我知道我可以像这样使用自动filter来移除包含某些string的特定行,如下所示(在本例中,被移除的行包含string“111-11111”)。 Set ws = Sheets("Gate_Results") Set rng1 = ws.Range(ws.[u1], ws.Cells(Rows.Count, "U").End(xlUp)) With ActiveSheet .AutoFilterMode = False rng1.AutoFilter Field:=1, Criteria1:="111-11111" rng1.Offset(1, 0).EntireRow.Delete .AutoFilterMode = False End With 然而,我想知道是否有一种方法来删除不包含标准的string。 例如,如果string### – #####表示产品代码,如果我想筛选我的列表以查看代码库中只有3种不同的产品,我可以使用AutoFilter函数来执行此操作如果是的话,怎么样? 我尝试了以下(和类似的例子,但在标准1部分的附加string中),然而它根本不起作用,但这只是我的业余猜测。 Set ws = Sheets("Gate_Results") Set rng1 = ws.Range(ws.[u1], ws.Cells(Rows.Count, "U").End(xlUp)) With ActiveSheet .AutoFilterMode = False rng1.AutoFilter Field:=1, Criteria1:<>"111-11111" rng1.Offset(1, 0).EntireRow.Delete .AutoFilterMode = False End […]

在PDF导出之前以编程方式更新自动filter

我有一些代码,通过基于数组创build大量工作表(通过复制现有的工作表),然后应用自动filter。 这里是我用来应用自动filter的代码,你可以看到它被configuration为应用在被激活的表格和任何单元格的变化。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False ActiveSheet.AutoFilterMode = False Range("A19").AutoFilter Range("A19").AutoFilter Field:=1, Criteria1:=Range("F17").Value End Sub Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveSheet.AutoFilterMode = False Range("A19").AutoFilter Range("A19").AutoFilter Field:=1, Criteria1:=Range("F17").Value End Sub 我的问题是,我然后运行一些进一步的代码来保存工作表到PDF,在这一点上表未被激活的变化(所以因此filter不适用) 以下是我的保存工作表代码: 'Code to Save PDF Dim wks As Worksheet Dim WksCell As Range ' Look at each cell within […]

如何自动筛选使用ComboBox值作为Excel VBA中的条件的列

我有一个电子表格,其中包含手机品牌和手机型号(手机品牌在A列,手机型号在B列) 我试图做一个ActiveX程序,允许用户使用ComboBox1的值从ComboBox1和Filter列A中select一个Phone品牌。 以下是我到目前为止: Option Explicit Sub AdvFilter() Dim lw As Long Dim lr As Long lw = Range("A" & Rows.Count).End(xlUp).Row Range("A2:A" & lw).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("H1"), Unique:=True End Sub Private Sub ComboBox1_Change() Dim lr As Long Dim Sel As String lr = Range("H" & Rows.Count).End(xlUp).Row Sel = "H2:H" & lr ComboBox1.ListFillRange = Sel End Sub 我能够填充来自列A的唯一值的comboBox1,但我无法弄清楚如何使用ComboBox1的值来过滤它。 […]

在同一字段上使用通配符的空格和数字的多重过滤条件不起作用

尽pipe关于这个话题的问题很多,但我还是无法find解决我的问题的scheme(这可能也可能不是我的错)。 我需要自动筛选范围以返回空格和614开始的数字。 此列已使用以下格式预先格式化: Range("B:C").NumberFormat = "###0" 这是为了移除Excel想要在某些数字上使用的科学记数法格式。 然后我使用以下来应用filter: With ActiveSheet .AutoFilterMode = False 'remove any active filters .Range("A1:O1").AutoFilter Field:=2, Criteria1:="614*", Operator:=xlOr, Criteria2:="=" End With 不pipe我如何应用filter,包括使用数组,filter只返回空白值。 我也使用了Criteria1:=“= 614 *”来获得相同的结果。 我唯一能确定的是这个数字是以614开始的,并且会有以下几种组合。 数据types是否存在问题? 空白是string,数字是数字? 只有一个博客稍微解决了这个问题,似乎表明我不能在这种情况下使用通配符。 它是否正确? 基本上这些数字是澳大利亚移动号码,因此有11个字符的长度,只有前3个是一个常数。 这就是为什么我真的想使用通配符来查找这些logging。 我需要消除这些加上数据集的空白。 根据你的回答以及我在很大程度上开始意识到的事情,我唯一的select就是把这些数字转换成string,如果我想把它作为一个一步的过程。 这会影响后面的代码。 我假设这不能作为autofilter标准的一部分(一厢情愿的想法)?

VBA AutoFilter基于数组数组的多个工作表,如果不在列表中则忽略

假设我有一个有3个工作表的工作簿。 我已经根据等于俄亥俄州的列状态过滤了第一张纸。 然后我从列ID中得到这个过滤列表的值列表,并把它们放到一个整数/长整型数组中。 基本上我把所有的ID的每一行的状态列俄亥俄州 。 我现在试图根据它们的ID列匹配我的数组ID列表来过滤剩余的表。 问题是,当它遇到不在新工作表中的过滤ID时 ,而不是为每个工作表提供匹配,只剩下最后一个匹配值。 下面是我的VBA试图过滤剩余表单的示例: For Each sheet In Worksheets If sheet.Name <> "Sheet1" Then sheet.Activate columnNum = ActiveSheet.UsedRange.Find("ID").Column ActiveSheet.AutoFilterMode = False ActiveSheet.UsedRange.AutoFilter '***Problem is here ActiveSheet.UsedRange.AutoFilter Field:=columnNum, Criteria1:=mainIDs, Operator:=xlFilterValues End If Next 正如我前面提到的, mainIDs是一个Integer数组,它被传递到每个表单进行过滤。 为什么只把我带回上一场比赛? 我是否需要以某种方式告诉它忽略不在新工作表中的过滤值? 怎么样? 编辑:这是我如何填充我的数组 Dim mainIDs() As Long, size As Integer, i As Integer size = […]

VBA:如何允许filter在受保护的页面上打开和closures?

我有下面这段代码,删除filter,然后重新应用它们从选定的单元格: Range("A10:AM10").Select Selection.AutoFilter Selection.AutoFilter 我遇到的问题是,当表被保护,我试图运行代码错误,那么有没有办法允许filter打开和closures在受保护的工作表上?

在VBA中自动filtersorting

我正在制作一个VBAmacros。 在某一点上,macros告诉excel改变当前的自动filter,使自动filter的sorting在Column A的列,它应该是升序。 但是,我现在所拥有的VBA代码声明范围是硬编码的,即Range(A1:A655) ,这是因为代码是用录制的macros写入的。 以下是我的VBA代码。 你能告诉我如何改变A1:A655而不是硬编码的方式,而不是一般的意思是“使范围是该列中的所有行,但有多less? ActiveWorkbook.Worksheets("A1").AutoFilter.Sort.SortFields.Add Key:=Range( "A1:A655"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= xlSortTextAsNumbers

尝试使用vba在自动筛选的单元格中循环时出错

我使用下面的代码来删除无效的文本实例,在这种情况下,语句以冒号开头。 我知道我需要采取的所有步骤,但在自动调整之后,我遇到了问题。 我试过使用可见单元格迭代 for x=1 to currentFilter.rows.count 和 for each x in currentFilter.rows 但是,无论我如何尝试使用(基本要点)尝试摆脱第一个字符(冒号)时,都会收到某种错误: Cell Value = Right(Cell Value, Len(Cell Value) – InStr(Cell Value, ",", vbTextCompare)) 我的完整代码如下: Sub PRTCheck() 'Column AN is Production Time & Column AP is Rush Time Dim endRange As Integer, ShipandRush As Range, CommaColons As Collection, cell, i endRange = ActiveSheet.Cells(Rows.count, […]

在VB.NET中,Range类的AutoFilter方法失败

我正在尝试使用一些parsing,我可以稍微调整一下。 如果我在Excel中使用直VBA,它工作正常。 但是,当我在VB.NET中使用相同的代码作为模块时,我得到了代码行标题中的错误 ws.Range(vTitles).AutoFilter() (duh!)我不确定在转换中出了什么问题,因为我不是一个硬核VB.Net程序员,所以我做了大量的Googlesearch,但没有find太多的工作。 任何想法如何可以修复,或者我不得不放弃在VB.Net中使用这个片段的想法? 这是我正在使用的代码: 'turned strict off or autofilter per http://www.pcreview.co.uk/threads/autofilter-method-of-range-class-failed.3994483/ Option Strict Off Imports xl = Microsoft.Office.Interop.Excel Module ParseItems Public Sub ParseItems(ByRef fileName As String) 'Jerry Beaucaire (4/22/2010) 'Based on selected column, data is filtered to individual workbooks are named for the value plus today's date Dim wb As xl.Workbook Dim […]