使用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)
所以这就是你如何挑选需要自己弄清楚的可怜灵魂的色彩指数。 我无法在互联网上find这个地方。
xs1.Range["A1", xs1.Cells[lastrow.Row, lastcol.Column]]. AutoFilter(14, xlBook.Colors[33], Excel.XlAutoFilterOperator.xlFilterCellColor);
重要的部分是“xlBook.Colors [33]”。 xlBook是工作簿。 33是颜色指数。
我没有任何声望点,所以我必须提交一个答案,而不是评论。 无论如何,谢谢,谢谢,谢谢。 我花了几个星期寻找这个答案,碰巧search正确的关键词来find这个职位。 我注册,只是为了upvote答案!
我的情况并不完全像你的情况,但类似,你导致我的解决scheme。 所以,我会分享一下对我有用的东西。 我正尝试使用PowerShell按颜色索引进行过滤。 但是,PowerShell不允许RGB值,如上面的VB.net示例。 现在,我对答案的贡献。 如果你在PowerShell中这样做,那么它将需要如下所示:
$xlFilterCellColor = 8 $xl = New-Object -comobject excel.application $xl.Visible = $true $xl.DisplayAlerts = $False $wb = $xl.Workbooks.Open("\\path\to\file.xlsx") $ws = $wb.worksheets.items(1) $xlCellTypeLastCell = 11 $used = $ws.usedRange $lastCell = $used.SpecialCells($xlCellTypeLastCell) $range = $ws.range(A1:$lastCell) $range.select | out-null $range.autofilter(1,$wb.colors(6),$xlFilterCellColor)
运算符的十进制值在这里列出。 在上面的代码中,我正在过滤黄色的单元格。 单元索引颜色和值可以在这里find。