Excel 要按日期进行预测的数据透视表

Excel 要按日期进行预测的数据透视表,excel,vba,excel-formula,pivot-table,Excel,Vba,Excel Formula,Pivot Table,我正在尝试将此预测按日期输入到数据透视表中,以便可以深入查看CSV导入的信息。pivot向导识别出我的数据全部错误 如何获取SKU代码为行,所有动态添加日期为列,预测值为值 Excel数据 失败 我希望Pivot镜像我所拥有的,这样我就可以将数据向下钻取到格式 SKU, Date, Qty SKU, Date, Qty SKU, Date, Qty SKU, Date, Qty 如果有另一种更简单的方法,那就太好了。我认为您遇到的问题是如何存储原始数据。现在你正在做这样的事情: 要使数据

我正在尝试将此预测按日期输入到数据透视表中,以便可以深入查看CSV导入的信息。pivot向导识别出我的数据全部错误

如何获取SKU代码为,所有动态添加日期为,预测值为

Excel数据

失败

我希望Pivot镜像我所拥有的,这样我就可以将数据向下钻取到格式

SKU, Date, Qty
SKU, Date, Qty
SKU, Date, Qty
SKU, Date, Qty

如果有另一种更简单的方法,那就太好了。

我认为您遇到的问题是如何存储原始数据。现在你正在做这样的事情:

要使数据透视表正常工作,您需要这样的表格设计:

请注意,同一SKU代码可以出现多次,但日期不同(第12行和第19行、第13行和第20行,以此类推)

通过这种表格设计,您可以按照自己的意愿制作透视表:

所以你需要转换数据。我用了一些公式,也许能帮你一点忙。如果您获得了大量数据,那么我强烈建议您使用它们,然后粘贴值,否则该文件将被过度收费、速度缓慢等等。这是一种方法

  • 首先,数一数你得到了多少SKU代码(在我的图片中,只有7个)
  • 其次,数一数你有多少次约会(在我的图像中,只有2次)
  • 在原始数据下方,将完整的SKU代码组(7)复制到同一列中日期的两倍(在我的情况下是两倍)
  • 在下一列(日期字段)中,您可以使用以下公式:
    =INDEX($B$1:$C$1;1;COUNTIFS($A$12:A12;A12))
  • 在下一列(值字段)中,您可以使用:
    =索引($B$2:$C$8;匹配(A12;$A$2:$A$8;0);匹配(B12;$B$1:$C$1;0))
  • 只需向下拖动,您将获得一个新的范围,并正确地转换数据。这个新的范围是一个完美的数据透视表的来源,你可以随心所欲粘贴值
  • 如果将新的额外行添加到此新范围,则只需更改数据透视表的源,然后新数据将立即添加到具有所需设计的数据透视表中
  • 在检查一切正常后,当然要删除旧数据 我已经上传了一个样本到我的Gdrive上,以防对你有所帮助


    希望您能根据自己的需要进行调整。

    感谢您抽出时间帮助我,我找到了一个我想与大家分享的解决方案。这并不是沿着数据透视表的路线,而是提供我所需要的最终结果

      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
    
    如果应用程序的计算不手动进行,它将花费数小时,因此我使用宏和它几乎是瞬时的来关闭和打开它

    谢谢
    山姆

    据我所知,你现在不能。要想做什么,所有日期都应该在源范围的同一列中。这样,Pivot表将根据需要列出字段的所有值。现在,因为每个日期都是一个字段,所以Excel会列出每个日期中的所有值。恐怕你需要换位。无论如何,如果您已经拥有了所需的设计,那么为什么要使用透视表呢?因为看起来你已经用你想要的设计得到了你想要的(sku代码在左边,每个日期在第一行)。非常感谢你的帮助,非常感谢。此表包含700个SKU和30个每周日期。它将每天与新的日期和潜在的额外SKU一起使用。这将为我所需要的工作,我相信我已经找到了一个解决方案与VBA,这是一个更快。我会把它作为一个答案发布,请随意查看。它并没有把它放在数据透视表中,但它给了我所需要的最终结果。