使用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。