【问题标题】:My Powershell loop wont stop iterating the last row of data我的 Powershell 循环不会停止迭代最后一行数据
【发布时间】:2019-04-07 03:36:21
【问题描述】:

您好,我有一个 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 专家吗?

谢谢!

【问题讨论】:

  • 在 ISE 或 VSCode 调试器中逐步执行您的代码。可能不要在循环中更改 $i 。 $i=$j-1
  • 为什么要逐行粘贴?将数据读入 PowerShell,进行操作,然后 [object[]]$Data | ConvertTo-Csv -Del "`t" | Clip 并粘贴到目标的第一个单元格中。但是,是的,在 For 循环中修改 $i 可能是您现有代码的问题。
  • @KoryGill 谢谢你,这条评论让我找到了正确的方向。代码已更改为从 J 循环中删除了复制粘贴功能,因此 $i 不再 = $j-1 而是等于 $endrow。感谢您指出正确的方向!

标签: excel powershell powershell-3.0 powershell-4.0


【解决方案1】:

乍一看,问题似乎在于您如何增加循环。我有很多关于您为什么要像现在这样处理事情的问题,但这应该有助于为您指明正确的方向...要进行故障排除,请运行以下命令:

$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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多