不使用查询将数据除以数据透视表中另一列的总和

时间:2018-11-12 10:20:40

标签: excel vba pivot-table

我有一张看起来像这样的桌子

|---------------------------------|
| 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 :(得分:0)

由于数据透视表不适用于自定义函数,因此您只能使用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