我正在尝试将 Excel 电子表格中的数据导入到 Powershell 脚本中,并将一列的值相加,同时根据另一列的值对结果进行排序。下面的例子可能比我用文字更能说明这一点。
最终目标是将每个代理的 SUBMIT 列中的值相加,然后将该数据导出到单独的电子表格,但我无法弄清楚将这些值相加并与代理进行分组的第一步。
foreach ($data in (Import-Excel "C:\prod\actstest.xlsx")) {
$result += $data.Submit
}
Write-Host $result
当我运行上面的代码块时,它成功地将 Submit 列中的值相加,但不会根据 Agent 对其进行排序。当我运行下面的代码时,它成功地按代理对它们进行了排序,但没有将它们加起来。必须有一种方法可以将它们结合在一起,但到目前为止我还没有成功。
$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