ฉันกำลังทำงานกับมาโครที่ยาวมากสำหรับงานของฉันและฉันเพิ่งจะเสร็จ แต่นี่เป็นส่วนสุดท้ายและไม่ว่าฉันจะทำอะไรฉันก็ดูเหมือนจะไม่สามารถหาทางแก้ไขได้ ใน PivotTable นี้ฉันต้องมี "ผู้จัดการ" เป็นคอลัมน์และทุกอย่าง (เช่นทุกเดือน) ในส่วนค่าโดยมี "ค่า" เป็นแถว หลังจากทำการแก้ไขมันดูเหมือนว่าฟิลด์ทั้งหมดที่ลงทะเบียนเป็น CubeFields แทนที่จะเป็น PivotFields เมื่อฉันเรียกใช้งานนี้ทันทีที่ได้รับการ. Omentation = xlDataField มันจะพ่น "ข้อผิดพลาดรันไทม์ 5 ... การเรียกหรือการโต้แย้งของกระบวนการไม่ถูกต้อง" ฉันต้องตรวจสอบให้แน่ใจว่า DataFields เหล่านั้นมีค่าเฉลี่ยและอยู่ในรูปแบบตัวเลขเฉพาะ ไม่มีอะไรที่ฉันทำงานและคำแนะนำ / แก้ไข / การแก้ปัญหาใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ด้านล่างคือมาโครและลิงค์ดาวน์โหลดไปยังไฟล์เพื่อทำการแก้ไข
Dim pvtTable As PivotTable
Dim cubField As CubeField
Dim i As Long
Dim cubName As String
Set pvtTable = ActiveSheet.PivotTables(1)
For Each cubField In pvtTable.CubeFields
For i = 1 To pvtTable.CubeFields.Count
With pvtTable.CubeFields(i)
If .Name = "[effRent_perBed].[Manager]" Then
.Orientation = xlColumnField
Else:
.Orientation = xlDataField
'has to be averaged
'has to have number format of ##0.00
End If
End With
Next
Next
นี่คือการแก้ไขที่ฉันพยายามทำโดยใช้เครื่องบันทึกแมโคร มันทำให้ฟิลด์ในเขตข้อมูลค่า แต่ไม่มีวิธีที่จะเปลี่ยนเป็นค่าเฉลี่ย มันแสดงรายการค่าทั้งหมดเป็น "1 (ตรวจสอบภาพเป็นภาพ)เมื่อฉันไปที่. Function = xlAverage จะมีข้อความระบุว่า Error 1004: ไม่สามารถตั้งค่าคุณสมบัติ Function ของคลาส PivotField ได้
If Name = "[effRent_perBed].[Manager]" Then
.Orientation = xlColumnField
Else:
With ActiveSheet.PivotTables(1)
.AddDataField ActiveSheet.PivotTables(1) _
CubeFields(cubName), _
"Average of " & cubName
End With
With ActiveSheet.PivotTables(1).PivotFields(cubName)
.Caption = "Average of " & cubName
.Function = xlAverage
End With
เมื่อฉันใช้ตัวบันทึกแมโครเพื่อเพิ่มบางอย่างลงในฟิลด์ข้อมูลฉันจะได้รับสิ่งนี้:
ActiveSheet.PivotTables("effRent_perBed_Pivot").CubeFields.GetMeasure _
"[effRent_perBed].[Jan-16]", xlSum, "Sum of Jan-16"
ActiveSheet.PivotTables("effRent_perBed_Pivot").AddDataField ActiveSheet. _
PivotTables("effRent_perBed_Pivot").CubeFields("[Measures].[Sum of Jan-16]"), _
"Sum of Jan-16"
With ActiveSheet.PivotTables("effRent_perBed_Pivot").PivotFields( _
"[Measures].[Sum of Jan-16]")
.Caption = "Average of Jan-16"
.Function = xlAverage
End With
นี่คือสำเนาของไฟล์ที่ฉันกำลังทำงานอยู่ มันแสดงให้เห็นตารางเดือยดิบและจากนั้นผลิตภัณฑ์สำเร็จรูป ฉันต้องทำสิ่งนี้สำหรับ 3 แผ่นดังนั้นฉันต้องหมุนเวียนกัน https://drive.google.com/uc?export=download&id=1NLGg8DVEMHnB2Ad7NAKWySevq8naqFjr
นี่คือการโพสต์ในฟอรั่มอื่น ๆ (ฉันต้องได้รับตามากในเรื่องนี้โดยเร็วที่สุด) https://www.excelforum.com/excel-programming-vba-macros/1222588-unable-to-add-cubefield- pivotfield-as-a-ข้อมูลภาคสนามใน vba.html # post4856940