2017-08-03 74 views
0

私は、CSVをつかむことからExcelシートを作成し、いくつかの行と要約値とピボットテーブルを作成するために、PowerShellスクリプトを書きました。私はまた、フィルタフィールドを追加することができますが、私は正常に行うことができませんフィルタフィールドにフィルタリングする必要がある値を教えています。PowerShellのエクセルPivotFilters.Add

PivotFilters.AddとPivotFilters.Add2方法は、常に「値が予想される範囲内に収まっていません」というエラーをスローします。

は、ここでは、コードの関連部分だ:「値が予想される範囲内に収まっていない」

# Add PivotTable 
$WS2 = $WBK1.Worksheets.Add() 
$WS2.Name = "PivotTable" 

$xlPivotTableVersion15  = 5 # Excel 2013 
$xlPivotTableVersion12  = 3 # Excel 2007 
$xlDescending    = 2 
$xlDatabase    = 1 # this just means local sheet data 
$xlHidden     = 0 
$xlRowField    = 1 
$xlColumnField    = 2 
$xlFilterField    = 3 
$xlDataField    = 4  
$xlSum      = -4157 
$xlAverage     = -4106 
$xlCount     = -4112 
$xlRight     = -4152 

$pivotRange = $WS1.UsedRange  

$PivotTable = $WBK1.PivotCaches().Create($xlDatabase,$pivotRange,$xlPivotTableVersion15) 
$PivotTable.CreatePivotTable("R1C1","Tables1") | Out-Null 
[void]$WS2.Select() 

$WBK1.ShowPivotTableFieldList = $true 

# configure pivottable fields 

$PivotFields = $WS2.PivotTables("Tables1").PivotFields("VmName") 
$PivotFields.Orientation = $xlRowField 

$PivotFields = $WS2.PivotTables("Tables1").PivotFields("RAM") 
$PivotFields.Orientation = $xlDataField 
$PivotFields.Function = $xlAverage 

$PivotFields = $WS2.PivotTables("Tables1").PivotFields("vCPU") 
$PivotFields.Orientation = $xlDataField 
$PivotFields.Function = $xlAverage 

$PivotFields = $WS2.PivotTables("Tables1").PivotFields("Dept") # I also tried commenting these lines out 
$PivotFields.Orientation = $xlFilterField      # I also tried commenting these lines out 

$xlValueEquals = 7 
$xlCaptionEquals = 15 
$WS2.PivotTables("Tables1").PivotFields("Dept").PivotFilters.Add2($xlValueEquals, "Finance") 

は、私がPivotFilters.AddとPivotFilters.Add2私は常に取得するいずれかの方法の両方を使用して試してみました

また、私はすでに作成したフィルタを持っている場合、それを混乱されたと思ったとして、上記の注釈付き行をコメントアウトしようとしました。

アドバイスをいただければ幸いです!

答えて

0

最後に、私は基本的に私が使用して作成したフィルタのセルに値を書き込むことがわかったのでOK ...

$PivotFields = $WS2.PivotTables("Tables1").PivotFields("Dept") 
$PivotFields.Orientation = $xlFilterField 

は...働いていたので、私は離れてPivotFilters.Addで行うことができます/ PivotFilters.Add2メソッド。誰かがそれに対する答えを知っていれば私はt'interweb上の誰かが解決策が共有されていることに感謝するだろうと確信しています。