【问题标题】:If duplicates, count duplicates, match to column and calculate sum如果重复,计算重复,匹配列并计算总和
【发布时间】:2015-11-12 00:04:53
【问题描述】:

样本数据:

Column A       Column B       Column C        Column D
Example 1      5              Example 1       13
Example 1      2              Example 2       8
Example 1      4
Example 1      2
Example 2      2
Example 2      4
Example 3      2

错误的伪:

  • 循环通过 A 列检查重复项
  • 如果发现重复,增加重复计数器并存储在数组中?
  • 然后将“示例#”写入 C 列
  • 使用计数器在 B 列中的行之间跳转,并在 D 列中汇总值和输出

英文:

  • 将每个“示例#”的所有值相加
  • 将“示例#”输出到指定的列/行
  • 求和并输出到指定的列/行

有没有更简单的方法?

【问题讨论】:

  • 您可以在没有任何 VBA 的情况下使用枢轴来完成。如果你真的想用 VBA 来做,请发布你拥有的真实代码并解释它为什么不起作用。 (在大型数据集上,数据透视表总是比任何 VBA 代码都快得多)。
  • 对固定宽度字体使用代码块格式(每行开头 4 个空格,或使用编辑器中的 {} 按钮)。
  • 我了解图像的问题,Jeeped。正如 aucuparia 指出的那样,我不知道如何最好地呈现固定宽度的材料。此外,如果我在物理上搜索特定查询,SumIf 和 CountIf 将起作用。我试图让它根据当前添加的材料自行填充。我会发回我拥有的代码。

标签: vba excel


【解决方案1】:

VBA 创建的数据透视表(通过记录宏):

Sub MacroPT()
    Application.CutCopyMode = False
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R1048576C2", Version:=xlPivotTableVersion15).CreatePivotTable _
        TableDestination:="Sheet1!R1C3", TableName:="PivotTable1", DefaultVersion _
        :=xlPivotTableVersion15
    Sheets("Sheet1").Select
    Cells(1, 3).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Column A")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Column B")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Column B"), "Count of Column B", xlCount
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Count of Column B")
        .Caption = "Sum of Column B"
        .Function = xlSum
    End With
    ActiveSheet.PivotTables("PivotTable1").CompactLayoutRowHeader = "Column C"
    Range("D1").Select
    ActiveSheet.PivotTables("PivotTable1").DataPivotField.PivotItems( _
        "Sum of Column B").Caption = "Column D"
    Range("C3").Select
    With ActiveSheet.PivotTables("PivotTable1")
        .ColumnGrand = False
        .RowGrand = False
    End With
End Sub  

Example 2 的结果是 6,而不是 8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2021-12-19
    • 2019-01-03
    • 2021-10-22
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多