Разделите значение на сумму другого столбца в сводной таблице без запроса - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть таблица, которая выглядит следующим образом

|---------------------------------|
| Date | User | Value A | Value B |
|------|------|---------|---------|
| Day1 |  U1  |   A111  |   B111  |
|------|------|---------|---------|
| Day1 |  U1  |   A112  |   B112  |
|------|------|---------|---------|
| Day2 |  U1  |   A121  |   B121  |
|------|------|---------|---------|
| Day2 |  U2  |   A221  |   B221  |
|---------------------------------|

Мне нужно создать сводную таблицу, которая отображает для каждого пользователя: сумму его значения A / сумму всех значений B.

Получение чего-то подобного:

|---------------------------------------|
| Date | User |    Value A / Value B    |
|------|------|-------------------------|
| Day1 |  U1  | (A111+A112)/(B111+B112) |
|------|------|-------------------------|
| Day2 |  U1  |      A121+(B121+B221)   |
|------|------|-------------------------|
| Day2 |  U2  |      A221+(B121+B221)   |
|---------------------------------------|

Я могу использовать только Microsoft Excel 2010 по умолчанию и не могу установить надстройку, поэтому я использую только VBA и сводные таблицы, чтобы постоянно обновлять листы.

Спасибо

1 Ответ

0 голосов
/ 12 ноября 2018

Поскольку сводные таблицы не работают с пользовательскими функциями, у вас остается VBA. Там вы можете использовать что-то вроде:

Sub getValues()
Dim LastRow As Long
  Sheets("Sheet1").Columns(1).Copy Destination:=Sheets("Sheet1").Columns(8)
  Sheets("Sheet1").Columns(2).Copy Destination:=Sheets("Sheet1").Columns(9)
  Range("H:I").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes

  With ActiveSheet
    LastRow = .Cells(.Rows.Count, "H").End(xlUp).Row
  End With

  For i = 2 To LastRow
    Cells(i, 10).Formula = "=" & "SUMIFS(C:C,A:A,H" & i & ",B:B,I" & i & ")/SUMIFS(D:D,A:A,H" & i & ",B:B,I" & i & ")"
  Next i
End Sub
...