Excel数据透视表中的相关性

时间:2013-04-30 21:53:12

标签: excel excel-2010 pivot-table

我有大量的数据,我必须在Excel中分析(这在数据库中会更容易,我意识到)。每个订单项都有一个T / F指标,表明它在给定类别中的成员资格,我希望在几个月内获得每个类别的数量和价格的相关性。我所谈论的数据量一次在8到30千条记录之间。我们在办公室使用Excel 2010

示例数据:

State | Cat.1 | Cat.2 | Cat.3 |    TimeStamp    | Volume | Price
 WA   |  TRUE | FALSE | FALSE | 01/31/13 12:00  | 113.1  | 35.64
 WA   |  TRUE | TRUE  | FALSE | 01/31/13 13:00  |  65.2  | 32.52
 FL   |  TRUE | FALSE | TRUE  | 01/31/13 02:00  |  78.9  | 36.37
 FL   |  TRUE | TRUE  | FALSE | 01/31/13 23:00  | 113.9  | 39.39

理想情况下,我想要的是一个数据透视表,它将关联State,Cat.1,Year和Month的给定组合的Volume和Price。

现在我有一个计算字段,公式为:= correl(Volume,Price) 但是,该字段为每个方案返回#DIV / 0,但如果我双击查看适用的数据,我可以手动执行correl(),它可以正常工作。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

不确定我是否完全理解您的问题,但听起来您希望根据某些其他列的值进行关联。因此,我假设您在标题行上使用自动过滤,并且可以过滤您想要的状态和类别,您可以只关联可见值。您可能需要两个额外的列,其中= MONTH()和= YEAR()以及时间戳。

我在下面写的UDF将仅关联可见列,因此请转到VBA编辑器(Alt F11)并复制它,然后输入下面的公式并过滤列

=CorrelVisibleCells(F1:F100,G1:G100) 

假设F和G是您的数量和价格列

Public Function CorrelVisibleCells(aRange1 As Range, aRange2 As Range)
Dim aCorrelRange1() 
Dim aCorrelRange2() 
Dim rc As Long
Dim clCount As Long

Application.Volatile True  'This is a volatile function as changing the filter state    without changing the cell reference requires a recalc

rc = aRange1.Rows.Count
ReDim aCorrelRange1(rc) 'Largest they could be, will crop at the end
ReDim aCorrelRange2(rc)
clCount = 0
For i = 1 To rc
    If Not aRange1.Cells(i).EntireRow.Hidden Then  ' Can't use     SpecialCells(xlCellTypeVisible) in a UDF
        aCorrelRange1(clCount) = aRange1.Cells(i).Value
        aCorrelRange2(clCount) = aRange2.Cells(i).Value
        clCount = clCount + 1
    End If
Next
ReDim Preserve aCorrelRange1(clCount - 1)
ReDim Preserve aCorrelRange2(clCount - 1)

CorrelVisibleCells = WorksheetFunction.Correl(aCorrelRange1, aCorrelRange2) 'Get Excel to do the correlation on our new arrays

End Function