【问题标题】:How to change column values to rows in Excel with PowerShell如何使用 PowerShell 在 Excel 中将列值更改为行
【发布时间】:2015-02-10 13:45:57
【问题描述】:

对于我为工作所做的一些测试,会创建一个 CSV 文件,其中的数字都在一行,但有很多列。我需要将所有这些数字加在一起,然后除以列数。当您打开 Excel 并全选时,Excel 已经给出了平均值。

但是,我想在 PowerShell 中自动执行此操作,但到目前为止我还无法做到这一点。我能够得到行中的平均值,所以我的问题可能是以下之一:

1:如何计算所有具有值的列的平均值? 或者,
2:如何从行而不是列中的列中获取值?

从另一个我得到正确的 CSV 文件中,我目前使用此代码来获取总共 1500 行的平均值。

Import-Csv "$test.csv" | Select 'Frame time' -First 1500 | Measure-object 'Frame time' -ave | Select-Object -expand Average

还有一个问题是,有没有一种方法可以使用返回的值进行计算,而不是将其输入并作为变量放入计算中?

我是 PowerShell 脚本的新手,我发现这类操作很难(找到)。

【问题讨论】:

  • 所以你想要 csv 中所有数字的平均值? csv 只包含数字?

标签: excel powershell csv


【解决方案1】:

假设您只有一个充满数字的 csv,那么您可以使用 Get-Content 来读取文件并提取所有存在的数字,而不是使用 Import-CSV。考虑以下输入

column1,column2,column3,column4
2,4,6,8
1,2,3,4
5,10,15,20

你可以这样做

Get-Content C:\temp\names.csv | 
    Select-Object -Skip 1 | 
    ForEach-Object{$_.Split(",")} | 
    Measure-Object -Average | 
    Select-Object -ExpandProperty Average

将文件作为字符串数组读取。 Select-Object -Skip 1 是可选的,取决于文件中是否存在标头。如果您没有,则删除该行。然后将每一行拆分为,。所有这些输出都发送到Measure-Object 以计算平均值。然后,我们使用Select-Object 将值从对象中分离出来并返回数据。

在该注释中,如果您希望稍后使用结果,那么您只需将其捕获到一个变量中。

 $result = Get-Content C:\temp\names.csv | 
    Select-Object -Skip 1 | 
    ForEach-Object{$_.Split(",")} | 
    Measure-Object -Average | 
    Select-Object -ExpandProperty Average

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多