将枢轴代码从VBA转换为PowerShell

杰夫·W

我有需要转换为PowerShell的Pivot代码,但我做得不好。谁能帮忙将此转换编码到PowerShell中吗?

这是Excel VB宏代码:

Sub XX()
  '
  ' XX Macro

  Sheets("PivotSheet").Select
  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Data!R2C2:R1680C10", Version:=xlPivotTableVersion14). _
  CreatePivotTable TableDestination:="PivotSheet!R1C1", TableName:= _
    "PivotTable1", DefaultVersion:=xlPivotTableVersion14
  Sheets("PivotSheet").Select
  Cells(1, 1).Select
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("State")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("Submit Date")
    .Orientation = xlRowField
    .Position = 2
  End With
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("Actual Completion Date")
    .Orientation = xlRowField
    .Position = 3
  End With
  With ActiveSheet.PivotTables("PivotTable1").PivotFields("State")
    .Orientation = xlColumnField
    .Position = 1
  End With
  ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
    "PivotTable1").PivotFields("Actual Completion Date"), _
    "Count of Actual Completion Date", xlCount
  Range("A8").Select
  Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
    False, True, False, True)
End Sub

这是我为PowerShell创建的内容:

[void]PivotSheet.Select()
$PivotRange = "Data!R2C2:J$lastrow"+'C10'
$PivotTable = $WorkBook.PivotCaches().Create($xlDatabase,$PivotRange,$xlPivotTableVersion14)
$PivotTable.CreatePivotTable("PivotSheet!R1C1","PivotTable1") | Out-Null
Start-Sleep -Milliseconds 500
[void]PivotSheet.Select()
$WorkSheet2.activate() | Out-Null

$Worksheet2.Cells.Item(1,1).Select()
$WorkBook.ShowPivotTableFieldList = $true
$PivotFields = $Worksheet2.PivotTables("PivotTable1").PivotFields("State")
$PivotFields.Orientation = $xlRowField
$PivotFields.Position = 1
$PivotFields = $Worksheet2.PivotTables("PivotTable1").PivotFields("Submit Date")
$PivotFields.Orientation = $xlRowField
$PivotFields.Position = 2
$PivotFields = $Worksheet2.PivotTables("PivotTable1").PivotFields("Actual Completion Date")
$PivotFields.Orientation = $xlRowField
$PivotFields.Position = 3
$PivotFields = $Worksheet2.PivotTables("PivotTable1").PivotFields("State")
$PivotFields.Orientation = $xlColumnField
$PivotFields.Position = 1 

$PivotFields = $Worksheet2.PivotTables("PivotTable1").AddDataField($Worksheet2.PivotTables,
  ("PivotTable1").PivotFields("Actual Completion Date"), "Count of Actual Completion Date", $xlCount)

$PivotFields.Range("A8").Select

但这还行不通。在设置表格的第一部分之前,我似乎还可以。

安斯加·威彻斯(Ansgar Wiechers)

PivotTables("...")是的缩写PivotTables.Item("...")PowerShell不允许使用此缩写,因此您必须Item()在集合上使用该方法。代替

$Worksheet2.PivotTables("PivotTable1").PivotFields("...")

$Worksheet2.PivotTables.Item("PivotTable1").PivotFields.Item("...")

至于使用命名参数转换方法调用,您需要以正确的顺序提供所有参数。使用[Type]::Missing该应保留其默认值的参数。不过,可以省略默认值的尾随列表。在你的情况下

Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
  False, True, False, True)

应该可能变成这样:

$periods = @($false, $false, $false, $false, $true, $false, $true)
$selection.Group($true, $true, [Type]::Missing, $periods)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

枢轴将null转换为零

来自分类Dev

使用枢轴将线转换为列

来自分类Dev

将VBA代码转换为R代码的问题

来自分类Dev

VBA:将代码段从VBA转换为SQL

来自分类Dev

需要帮助将PowerShell转换为C#代码

来自分类Dev

无法将Excel 2010 UI排序转换为VBA代码

来自分类Dev

将静态公式转换为选择代码VBA宏

来自分类Dev

将索引匹配转换为动态 VBA 代码

来自分类Dev

如何将数组转换为枢轴数组js

来自分类Dev

如何将数组转换为枢轴数组js

来自分类Dev

将行转换为列(可能是枢轴)

来自分类Dev

将代码转换为constexpr

来自分类Dev

将代码转换为 lambda

来自分类Dev

将数据转换为代码

来自分类Dev

将VBA转换为VBScript

来自分类Dev

将公式转换为 VBA

来自分类Dev

将matlab代码转换为python代码

来自分类Dev

将点击代码转换为悬停代码

来自分类Dev

将Javascript代码转换为PHP代码

来自分类Dev

将SAS代码转换为R代码

来自分类Dev

将 Python 代码转换为 C 代码

来自分类Dev

Excel公式转换为VBA代码

来自分类Dev

尝试将 c# 代码转换为 PowerShell 版本 5 脚本

来自分类Dev

Excel VBA代码将文件夹中的rtf文件批量转换为pdf文件

来自分类Dev

我想通过应用 vba 代码将数字转换为日期

来自分类Dev

将大量从十六进制转换为二进制 Excel VBA 的代码

来自分类Dev

除了枢轴以外,还有其他方法可以将行字段转换为列

来自分类Dev

将行转换为列时在语法上出现枢轴错误

来自分类Dev

如何将Oracle枢轴函数查询转换为MySQL查询