如何使用Powershell

时间:2017-05-28 02:26:43

标签: excel powershell

我有以下代码,其中对于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}

1 个答案:

答案 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 } }