excel - 在没有查询的情况下将值除以数据透视表中另一列的总和
问题描述
我有一张看起来像这样的桌子
|---------------------------------|
| 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 和数据透视表来保持工作表始终更新。
谢谢
解决方案
由于数据透视表不适用于自定义函数,因此您只能使用 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
推荐阅读
- typescript - 断言所有剩余参数的类型保护不是未定义的
- csv - 使用 GraphQL 机器,但返回 CSV
- python - 从 Node.js 读取 CSV 文件(用于使用 python)
- apache-spark - 如何在pyspark中做多个array_union和array_intersection
- javascript - html 输入为 pdf 格式
- sql - 使查询易受 SQL 注入攻击
- eclipse - 在 Eclipse 中为现有 Git 存储库创建 Spring Initializr 项目
- swift - Swift Print 函数格式化
- javascript - 暂停/恢复在 nodejs 中执行的代码
- java - 在 Try-Catch with Resources 中打印到控制台