过去,我创建了很多数据透视表,发现它们是如此有用。
我真的是想按日期将此预测结果放入数据透视表中,以便我可以深入了解CSV导入的信息。经过数小时的头痛和谷歌搜索,几乎每天都要进行2周的访问。我似乎做不到,每次尝试时,都会以数据透视向导将我的数据全部识别为错误。所以我来这里问专业人士。
有人可以帮助我,告诉我我需要做什么才能将SKU代码获取为 ROWS ,将添加的所有日期动态为 COLUMNS 和预测值是 VALUES ?
我基本上希望Pivot镜像我已经拥有的内容,以便我可以将数据向下钻取为格式
AttributeError: 'DataFrame' object has no attribute '_get_object_id'
如果有其他选择,但更简单的方法会很棒。
答案 0 :(得分:1)
我认为您遇到的问题是如何存储原始数据。现在,您正在执行以下操作:
要使数据透视表正常工作,您需要像这样的表格设计:
请注意,相同的SKU代码可以出现多次,但可以在不同的日期(第12和19行,第13和20行,依此类推)出现。
通过这种表格设计,您可以根据需要创建数据透视表:
因此您需要转置数据。我使用了一些公式,可能会对您有所帮助。如果您有很多数据,那么我强烈建议您使用它们,然后粘贴值,否则文件将被严重收取过多费用,速度缓慢等等。这是一种方法。
=INDEX($B$1:$C$1;1;COUNTIFS($A$12:A12;A12))
=INDEX($B$2:$C$8;MATCH(A12;$A$2:$A$8;0);MATCH(B12;$B$1:$C$1;0))
我已将示例上载到我的Gdrive中,以防它对您有所帮助。 https://drive.google.com/open?id=1ElEPkk5V3QkME7yLPQuGnU7-wd6fQEd_
希望您可以使其适应您的需求。
答案 1 :(得分:0)
感谢您抽出宝贵的时间为我提供帮助,我设法找到了我认为可以分享的解决方案。这不会沿数据透视表的路线进行,而是为我提供了所需的最终结果。
Sub NormaliseTable()
Application.Calculation = xlManual
' start with the cursor in the table
Dim rTab As Range, C As Range, rNext As Range
Set rTab = ActiveCell.CurrentRegion
If rTab.Rows.Count = 1 Or rTab.Columns.Count = 1 Then
MsgBox "Not a well-formed table!"
Exit Sub
End If
Workbooks.Add ' the sheet for the results
Set rNext = Range("A1")
For Each C In rTab.Offset(2, 1).Resize(rTab.Rows.Count - 1, _
rTab.Columns.Count - 1).Cells
If Not (IsEmpty(C.Value) Or C.Value = "0") Then
rNext.Value = rTab.Cells(C.Row - rTab.Row + 1, 1)
rNext.Offset(0, 1).Value = rTab.Cells(1, C.Column - rTab.Column + 1)
rNext.Offset(0, 2).Value = C.Value
Set rNext = rNext.Offset(1, 0)
End If
Next
ChDir "\\Client\T$"
ActiveWorkbook.SaveAs Filename:="\\Client\T$\M3-FC-IMPORT.csv", FileFormat _
:=xlCSV, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Application.Calculation = xlAutomatic
End Sub
如果没有将“应用程序计算”手动进行,则需要几个小时,因此我使用宏及其几乎瞬时的功能将其关闭并打开!
谢谢 山姆