2013-04-30 3 views
2

У меня есть значительный объем данных, которые я должен анализировать в Excel (это было бы намного проще в БД, я понимаю). Каждая позиция имеет индикатор T/F для его членства в данной категории, и я хотел бы получить соотношение объема и цены для каждой категории в течение нескольких месяцев. Количество данных, о которых я говорю, составляет от 8 до 30 тыс. Записей за раз. Мы используем Excel 2010 в моем офисеКорреляция в таблице сводной таблицы Excel

Пример данные:

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 

В идеале я хочу это сводная таблица, которая будет коррелировать объем и цену для данной комбинации государства, Кат.1, года и месяца ,

Прямо сейчас у меня есть вычисляемое поле с формулой: = корреляция (объем, цена) Однако это поле возвращает # DIV/0 для каждого сценария, но если я дважды щелкнул, чтобы просмотреть соответствующие данные, я могу вручную выполнить коррел(), и он отлично работает.

Любая помощь будет очень признательна!

ответ

0

Не уверен, что я полностью понимаю ваш вопрос, но похоже, что вы хотите скоррелировать в зависимости от значения некоторых из ваших других столбцов. Поэтому я предполагаю, что если вы использовали автофильтр в строке заголовка, и вы могли бы фильтровать состояния и категории, которые вы хотели, вы могли бы просто сопоставить видимые значения. Вам может понадобиться два дополнительных столбца с = MONTH() и = YEAR() с меткой времени.

ОДС я написал ниже будет коррелировать только видимые столбцы, так что идите в редактор 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 
Смежные вопросы