我的Powershell循环不会停止迭代数据的最后一行

时间:2018-11-02 21:49:36

标签: excel powershell powershell-v3.0 powershell-v4.0

您好,我有一个Powershell脚本,该脚本过去可以在excel电子表格中正常运行,但现在似乎出现了故障,无法对答案进行故障排除。

代码的精简版是这个

$pastecounter= 2
$intRowCount = $WS1.usedRange.Rows.Count       
for($i=6; $i -le $intRowCount; $i++)
{
    $startRow = $i

    <A lot of work being done to each row>

    $WS1.Range("A"+$startRow+":H"+$startRow).Copy()
    $WS2.Range("A"+$pastecounter+":H"+$pastecounter).Pastespecial()
    $pastecounter++ 
    $i=$j-1
}

这将迭代我的行,执行工作并将行逐行粘贴到新工作表中,并用于工作。

我今天开始运行它,一旦到达数据的最后一行,它便开始无限粘贴。

我已经回显了所有输出正确的变量,直到最后一行为止,并且我尝试添加Break,但是在for循环内,粘贴一行后它会中断,而在for循环外,它无法解决问题。

现在我唯一能想到的是excel电子表格可能存在问题。但是我删除了所有空行,并且在没有帮助的情况下清除了excel中的格式。

这里的任何Excel或Powershell专家可能知道一些故障排除方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

乍一看,问题似乎在于如何增加循环。我对您为什么要按自己的方式处理问题有很多疑问,但这应该可以帮助您指出正确的方向...要进行故障排除,请运行以下命令:

$pastecounter= 2
$intRowCount = $WS1.usedRange.Rows.Count       
for($i=6; $i -le $intRowCount; $i++)
{
    # // added
    Write-Host "Is `$i lessOrEqual to `$inRowCount?" -f Yellow -NoNewline
    if($i -le $intRowCount){
        Write-Host " Yes" -f Green
    } else {
        Write-Host " No"  -f Red
    }
    Write-Host ("`$i = {0}" -f $i) -f Cyan
    Write-Host ("`$intRowCount = {0}" -f $intRowCount) -f Cyan
    # // added

    $startRow = $i

    <A lot of work being done to each row>

    $WS1.Range("A"+$startRow+":H"+$startRow).Copy()
    $WS2.Range("A"+$pastecounter+":H"+$pastecounter).Pastespecial()
    $pastecounter++ 
    $i=$j-1
}