0
我在使用Powershell将多个列字段添加到Excel中的数据透视表时遇到问题。录制的VBA宏工作正常,但一旦转录到Powershell,就会出现细微的错误。我有三列:ID,名称和组。我希望ID和名称是列分组和组作为行分组。使用Powershell将多列字段添加到数据透视表
这可以在没有任何问题或错误的Excel界面中完成。记录的宏是:
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Name")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("ID")
.Orientation = xlColumnField
.Position = 2
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Group")
.Orientation = xlRowField
.Position = 1
End With
宏记录的运行和完美的作品。现在,我需要在Powershell中复制此代码以执行自动化作业。这里是我写的Powershell:
$pt.PivotFields('Name').Orientation = [Microsoft.Office.Interop.Excel.XlPivotFieldOrientation]::xlColumnField
$pt.PivotFields('Name').Position = 1
$pt.PivotFields("ID").Orientation = [Microsoft.Office.Interop.Excel.XlPivotFieldOrientation]::xlColumnField
$pt.PivotFields("ID").Position = 2
$pt.PivotFields('Group').Orientation = [Microsoft.Office.Interop.Excel.XlPivotFieldOrientation]::xlRowField
$pt.PivotFields('Group').Position = 1
即使代码是相同的,结果不是。使用VBA宏,数据透视表最终以Name和ID作为列字段,Group作为行字段。使用Powershell脚本,只有名称成为列字段。该ID不是列字段。集团仍然成为一个行字段。
任何想法?我也试着用不同的API方法使用这种方法:
$pt.AddFields('Group', [array]('Name','ID'))
这给出了相同的结果。
在上面的powershell解压缩中,_ID_用双引号引起,而_Name_和_Group_用单引号引起来。 –
@GordonK我的一位同事告诉我,有时候单引号可以打破其中有空格的字符串。在实际(专有)代码中,该字段名称中有一个空格,因此双引号用于解决可能出现的所有问题。 –