使用PowerShell,我怎么能值相加在Excel列和排序由另一个变量的值?

问题描述 投票:1回答:2

我试图从Excel电子表格数据导入到PowerShell脚本,并添加了值一列,而排序基于其他列的值的结果。也许下面的例子说明了这不是我能更好的话。

最终的目标是为每个代理提交列加起来的值,然后将数据导出到一个单独的电子表格,但我想不通添加值在一起,并与代理将它们分组的第一步。

foreach ($data in (Import-Excel "C:\prod\actstest.xlsx")) {
    $result += $data.Submit
}

Write-Host $result

当我运行的代码块以上,它成功地增加了值在提交列,但基于代理不排序。当我运行下面的代码它通过代理成功地对其进行排序,但不会把它们加起来。必须有这些组合在一起的方式,但我在想出来的这一点是不成功的。

$testdata = Import-Excel "C:\prod\actstest.xlsx"

ForEach ($Agency in $testdata) {

    $AgentID = $Agency.AGENT 
    $Product = $Agency.EPROD
    $Submit = $Agency.SUBMIT

    [int]$SubNum = [convert]::ToInt32($Submit, 10)

        ForEach($AgentID in $Agency) {

            If ($Product -eq "HOP") {

                $Agency | Group-Object AGENT | %{
                New-Object psobject -Property @{
                Agent = $_.Name
                Sum = ($_.Group |  Measure-Object -property SUBMIT -Sum).Sum

                }

            }

        }

    }

}

这就是我得到:

Sum Agent 
--- ----- 
  2 05007
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05008
  1 05018
  1 05018
  1 05018
  1 05018
  1 05018

这就是我试图得到:

Sum Agent 
--- ----- 
  2 05007
 13 05008
  5 05018
excel powershell sum
2个回答
0
投票

这是相当困难的推断你是什么后,没有看到你的原始数据。

这可能会做:

## Q:\Test\2019\02\07\SO_54576574.ps1
$testdata = Import-Excel "C:\prod\actstest.xlsx"

$testdata | Where-Object EPROD -eq 'HOP' | Group-Object Agent | ForEach-Object {
    [PSCustomObject]@{
        Agent = $_.Name
        Sum   = ($_.Group | Measure-Object -Property SUBMIT -Sum).Sum
    }
}

0
投票

因为我没有原始文件,并不能真正开始了解你所要完成充分什么,我只能提供一个办法做到的总和。我创建了自己的代理阵列,以显示它是如何工作:

$agents = @(05007,05007,05008,05007,05008,05009,05018,05008,05009,05017,05009)
$agentsSorted = $agents | sort
$uniqueAgents = $agentsSorted | get-unique

$data = foreach ($uniqueAgent in $uniqueAgents) {
$count = 0
$count = $agentssorted.where({$_ -eq $uniqueAgent}).count
$obj = [pscustomobject]@{Agent = $uniqueAgent; Sum = $count}
$obj
}

$data
© www.soinside.com 2019 - 2024. All rights reserved.