Tag: 过滤

Excel:需要删除大约一百万个空白行

我有一个来自我们的客户的Excel文件,该文件有接近100万空白行。 我尝试过滤列C(称为项目),它是空白的,然后select所有行,并尝试删除。 它几乎冻结了将近几个小时,但最后我杀了Excel的过程。 我也在VBA脚本下面试过,但是实际上它写着“r.rows(i).Delete”的那一行就冻结了。 这是第一个删除实例本身。 我也将Excel文件设置为手动进行公式计算。 我不介意整个工作需要几个小时。 我可以一夜之间离开,并在早上检查。 如果有什么与VB.NET或C#也没关系。 更新1:我不能做1到1048576行之间的批量删除,我需要删除C列为空的那些行(这意味着行是空白的)。 更新2:我标记下面的删除作为答案,但我最终通过将GOOD行复制到另一个工作表来解决此问题。 请build议处理这种情况的最佳select。 VBA源 Sub BlankRowDelete() Dim r As Range, rows As Long, i As Long Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False ActiveSheet.AutoFilterMode = False Set r = ActiveSheet.Range("A1:A1048576") rows = r.rows.Count For i = rows To […]

在大型datagridview数据源中实现像excel(性能明智)过滤

这个问题来自于build议的单独问题, 以便对大型datagridview数据源进行更高效的过滤 。 所以现在我的过滤在大型数据源(220k行)上很慢。 我过滤的方式是通过绑定源: mBindingSource.Filter = Filter; 这很慢,因为它可能遍历数据表的所有行。 当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。 我想知道是否有人知道,或者可以指出我正确的方向,如何实现其过滤Excel。 也许一小段代码也可以帮助。

使用VBA过滤掉相同的数据

这是我的数据: PART_NUM REV C210-272-002 B. C210-272-003 A. C210-272-004 A. C210-272-004 B. C210-272-005 F. C222-521-003 B. C222-521-004 A. C233-111-010 A. C233-111-010 B. C233-221-001 A. 所以,如你看到有一些单元格在part_num中是一样的,但是在rev中他们可能是A或B rev ..所以我想用最新的rev来过滤相同的数字。 它应该为列中的所有数据做到这一点。 EG: C210-272-004 B. C210-272-004 A. 我想删除/罢工/着色与行作为一个旧的行…我试图find一种方式,只是不能想到一个,因为我只想用VBA做我的学业。

在Apache POI中进行筛选

我刚开始使用Apache POI来处理来自Java和Excel电子表格的数据。 现在我只是在周围徘徊。 不过,我似乎无法理解setAutoFilter函数的工作方式。 有人可以解释一下,或给出一段代码,显示Excel数据被过滤的链接。 谢谢。

“Worksheet_Change”会覆盖重定位的行,无法处理列之间的间隙

我想在Sheet1写一块VBA代码,它对Excel中下拉列表中所做的更改作出反应。 现在,我写了下面的代码,其中Zeile = Row ,下拉列表中的每个相关条目都可以在K7:K1007范围内find。 设置为C (=已完成)时,相应的行应重新定位到另一个表单,称为Completed Items 。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Zeile As Long Set Target = Intersect(Target, Range("K7:K1007")) If Target Is Nothing Then Exit Sub If Target = "C" Then Zeile = Target.Row Range(Range(Cells(Zeile, 1), Cells(Zeile, 11)), _ Range(Cells(Zeile, 14), Cells(Zeile, 17))).Copy _ Destination:=Sheets("Completed Items").Cells(Rows.Count, 1).End(xlUp).Offset(6, 0) Target.EntireRow.Delete End […]

使用Worksheet.Range.Autofilter(字段,标准,运算符)按特定颜色索引/ RGB过滤范围

我正在做一些使用C#的自动化excel操作。 我一直很难搞清楚如何基于特定的颜色自动过滤。 关于这种types的操作几乎没有文档,但是我发现它有一些VB.net和VBA代码。 我似乎无法将代码转换为C#,因为“RGB”不可用,因为它在VB.net和VBA中(请参阅下面的VB.net代码)。 既然这个问题一直没有答案,我想指定需要查看的代码。 在Autofilter(字段,标准,运算符),我需要知道C#Microsoft.Office.Interop.Excel标准,让我select一种颜色来过滤。 这是我的代码看起来像: Excel.Worksheet xs1: Excel.Range xRange1; Excel.Range xRange2; Excel.Range lastrow; Excel.Range lastcol; lastrow = xs1.Rows.End[Excel.XlDirection.xlDown]; lastcol = xs1.Columns.End[Excel.XlDirection.xlToRight]; xRange1 = xs1.Cells[2, 14]; xRange2 = xs1.Cells[lastrow.Row, 14]; 下面select整个工作表并添加一个自动筛选器(),将其设置为过滤颜色。 这工作正常,但如何挑选我想要过滤的颜色? xs1.Range["A1", xs1.Cells[lastrow.Row, lastcol.Column]]. AutoFilter(14,Excel.XlColorIndex.xlColorIndexAutomatic, Excel.XlAutoFilterOperator.xlFilterCellColor); 这里是一个自动筛选代码在VB.net中看起来像什么的例子。 在excelmacros中,它看起来也非常相似。 xs1.Range("A1", xs1.Cells(lastrow.Row, lastcol.Column)). AutoFilter(Field:=14,Criteria1:=RGB(0,202,255), Operator:=Excel.XlAutoFilterOperator.xlFilterCellColors)

在VBA中过滤一个范围

我在使用VBA中的过滤范围时遇到问题。 如果我使用macros来过滤范围,然后使用另一个调用小计工作表函数来find第一列中的最小值,我得到过滤范围的预期最小值; 这就是我要的。 这显示在这里: Sub TestFilterTrans() Call FilterTrans("111Wall") End Sub Sub TestMinDate() MsgBox MinTransDate() End Sub Sub FilterTrans(Inv As String) Range("TransLabels").Select Selection.AutoFilter ActiveSheet.Range("Trans").AutoFilter Field:=2, Criteria1:=Inv End Sub Function MinTransDate() MinTransDate = Application.WorksheetFunction.Subtotal(5, Worksheets("Transactions").Range("TransDates")) End Function 但是,如果从表中调用一个函数来首先调用filter过程,然后调用一个函数来查找最小值,那么它将在整个范围内select最小值,就像未过滤一样,如下所示: Function IncepDate(Inv As String) Dim d As String Call FilterTrans(Inv) d = MinTransDate() Call FilterOff IncepDate = d End […]

按字母顺序sorting和过滤使用图纸名称自动填充的combobox

此处的目标是在50张工作表的Excel工作簿的首页上有一个下拉框,该工作簿会自动填充每个工作表名称,并按字母顺序(升序)对列表进行sorting,并过滤掉某些条目。 到目前为止,我已经得到了这个(从这里工作, 如何使工作表的下拉列表 )做自动填充: Private Sub workbook_open() Dim LSheets As Excel.Worksheet Dim OCmbBox As MSForms.ComboBox Set OCmbBox = ActiveWorkbook.Sheets(1).CmbSheet OCmbBox.Clear For Each LSheets In ActiveWorkbook.Sheets OCmbBox.AddItem LSheets.Name Next LSheets End Sub 如上所述,现在的挑战是按字母顺序对列表进行sorting,并筛选出一些条目。 特别是前页页面本身,以及任何以“BETA” 在这里的其他地方,我发现了2个可能的sorting选项,但是我打了一个关于如何将它与我已经得到的结合起来的块。 sortingCombobox VBA 至于过滤,我在看一个SELECT CASEtypes的安排,但看不到如何标记一个否定的情况。 有点像这样的东西: Private Sub workbook_open() Dim LSheets As Excel.Worksheet Dim OCmbBox As MSForms.ComboBox Set OCmbBox = ActiveWorkbook.Sheets(1).CmbSheet OCmbBox.Clear […]

用excel VBA保存date标准

我试图保存自动filter,然后在我的工作表上做一些事情,并重新应用filter。 以下主题: 在Excel VBA中,如何保存/恢复用户定义的filter? ; 它即将工作。 然后我试图过滤date列,它不起作用 – >它给了我以下错误: 我在互联网上寻找几个小时来find一个解决scheme,就像下面的post: Excel VBA使用date保存自动筛选设置 ; 但我无法解决这个问题… 我也在考虑以数字格式转换整个列,但是它不起作用,因为隐藏单元格未被转换,并且filter不转换filter列表中的值。 看来date不是一个有效的价值Criteria1 ..可能是? 这是我的代码: With myCurrentWorkbook.Worksheets(my_Of_To_Produce_Sheet).AutoFilter With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 'it's on this line that it doesn't work 'I tried this […]

我已经过滤了我的Excel数据,现在我想对行进行编号。 我怎么做?

基本上我想要做的是插入一个新的列之后,通过一定的标准筛选我的数据,然后插入连续的数字到该列,每行一个。 也就是说,我有一列这样的数据: 阿姆斯特朗,约翰 贝蒂,简 库姆斯,约翰 我想要一个新的列旁边运行,所以它看起来像: 1阿姆斯特朗,约翰 贝蒂,简 3 Coombs,约翰 我已经尝试input前几个数字,然后拖下来填补其余的列,但是当我这样做,所有的数字由于某种原因变为1。 谢谢你的帮助。