2014-11-22 23 views
-1

我試圖通過刪除不需要的條目來基於單元格日期值是否超過x天來生成Excel報表,以改善正在運行的Powershell腳本。 PowerShell代碼是否正確,可以刪除超過14天的行?如果不需要單元格日期值範圍,刪除Excel電子表格中的行

謝謝。

$minus14days = (get-date).Adddays(-14).ToString('dd/MM/yyyy') 
$exceldate = (get-date).ToString('dd/MM/yyyy') 
$minus14days = [STRING] $minus14days 
$xlCellTypeLastCell = 11 

$usedup = $sheet1.usedRange 
$lastCell = $usedup.SpecialCells($xlCellTypeLastCell) 
$row = $lastCell.row 

$exRange = $sheet1.usedRange 
    for ($i = 0; $i -le $row; $i++) { 
     If ($exRange.Cells.Item($i, 1).value() -lt $minus14days) { 
      $Range = $exRange.Cells.Item($i, 1).EntireRow 
      $Range.Delete() 
      $i = $i - 1 
       } 
      } 
+0

SO不是代碼審查,如果你想知道,如果你的代碼的工作,然後只要運行它,看看自己......現在你code' $ minus14days = STRING] $ minus14days', '$ exRange = $ sheet1.usedRange'是多餘的。否則它應該沒問題(我們只能猜測,因爲我們沒有你的excel文件) – Paul 2014-11-22 19:09:02

+0

我已經嘗試過了。它似乎將列移1,而不是刪除所需的行。我想知道我是否應該計算並指定一個完整的範圍而不是使用'usedRange'? – Maverick 2014-11-22 19:14:44

+0

編輯您的問題,以包含此信息 – Paul 2014-11-22 19:17:56

回答

0
$minus14days = (get-date).Adddays(-14).ToString('dd/MM/yyyy') 
    $exceldate = (get-date).ToString('dd/MM/yyyy') 
    $minus14days = [STRING] $minus14days 
    $xlCellTypeLastCell = 11 

    $usedup = $sheet1.usedRange 
    $usedup.EntireColumn.HorizontalAlignment = -4131 
    $usedup.EntireColumn.VerticalAlignment = -4160 
    $lastCell = $usedup.SpecialCells($xlCellTypeLastCell) 
    $row = $lastCell.row 

    $exRange = $sheet1.usedRange 
    for ($i = 0; $i -le $row; $i++) { 
    If ($exRange.Cells.Item($i, 1).value() -lt $minus14days) { 
     $Range = $exRange.Cells.Item($i, 1).EntireRow 
     $Range.Delete() 
     $i = $i - 1 
      } 
     } 
相關問題