我有以下代码,其中对于A列,我试图为任何等于102的值执行红色突出显示,对于任何等于101的值执行黄色突出显示,对于任何等于100的值使用蓝色突出显示。
我认为问题出在我的上一节(### Super If Statement ##),所以只想看看上面段落中参数的正确代码是什么? 感谢
#Open Up the Workbook#
$excel = new-object -comobject Excel.Application
$excel.visible = $false
$workbook = $excel.workbooks.open("c:\scripts\test.xlsx")
$worksheet = $workbook.Worksheets.Item(1)
$rows = $worksheet.range("A1").currentregion.rows.count
#A Formula#
$worksheet.range("A2:A$rows").formula = "=B2+100"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#Today + 1 Formula#
$worksheet.range("C2:C$rows").formula = "=TODAY()+1"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#INJECTED WITH A POISON#
$worksheet.range("C1").formula = "The Official Formula"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#Set up a filter
$headerRange = $worksheet.Range("a1","c1")
$headerRange.AutoFilter() | Out-Null
$Excel.Rows.Item(1).Font.Bold = $true
#Super If Statement##
IF ($worksheet.range("A2:A$rows") -eq "102") {
$worksheet.range.Interior.ColorIndex =3}
ElseIF ($worksheet.range("A2:A$rows") -eq "101") {
$worksheet.range.Interior.ColorIndex =6}
ElseIF ($worksheet.range("A2:A$rows") -eq "100") {
$worksheet.range.Interior.ColorIndex =5}
答案 0 :(得分:1)
使用@SAm示例代码,我将#Super If Statement##
替换为##Super Foreach Statement##
中的代码,如下所示。以下代码现在可以按预期执行。
#Open Up the Workbook#
$excel = new-object -comobject Excel.Application
$excel.visible = $false
$workbook = $excel.workbooks.open("c:\scripts\test.xlsx")
$worksheet = $workbook.Worksheets.Item(1)
$rows = $worksheet.range("A1").currentregion.rows.count
#A Formula#
$worksheet.range("A2:A$rows").formula = "=B2+100"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#Today + 1 Formula#
$worksheet.range("C2:C$rows").formula = "=TODAY()+1"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#INJECTED WITH A POISON#
$worksheet.range("C1").formula = "The Official Formula"
[void]$worksheet.Cells.Item(1,1).select()
$excel.visible = $true
#Set up a filter
$headerRange = $worksheet.Range("a1","c1")
$headerRange.AutoFilter() | Out-Null
$Excel.Rows.Item(1).Font.Bold = $true
#Super ForEach Statement ##
$worksheet.Range('A2:A100')|%{ if($_.text -match '102'){ $_.interior.colorindex = 3 } }
$worksheet.Range('A2:A100')|%{ if($_.text -match '101'){ $_.interior.colorindex = 6 } }
$worksheet.Range('A2:A100')|%{ if($_.text -match '100'){ $_.interior.colorindex = 5 } }