【问题标题】:SumIF & Merge columns based on another column criteria VBASumIF & Merge columns based on another column criteria VBA
【发布时间】:2020-12-18 22:45:02
【问题描述】:

请找到以下示例,我想在其中对我的实际数据集的其余部分进行编码,

ColumnA 有多个州名,ColumnB 有唯一值,在columnC 中,我们想要columnBMerging cellssumif 基于州名(columnA)的结果。

Dim ColumnA as long
Dim ColumnC as long

ColumnsC = 0
ColumnA = Worksheets("Sheet1").Cells(2, 1).value

Lastrow = Worksheets("sheet1").cells(Rows.Count, 1).End(xlUp).Row

For i = 2 to lastrow 
    IF Worksheets("Sheet1").Cells(i, 1).value = ColumnA Then    
        ColumnC = ColumnC + Worksheets("Sheet1").cells(i, 3).value   
    End if
Next

worksheets("sheet1").cells(2, 3).value = ColumnC

【问题讨论】:

  • 没有问题。请查看How to Askminimal reproducible example 也可能有助于改善您的问题。请添加示例输入数据和所需的输出。还要解释你的代码有什么问题。
  • 一个非常可靠的经验法则:不要合并单元格。为什么数据透视表在这里不起作用?

标签: excel vba excel-formula


【解决方案1】:

数据透视表无需公式和合并单元格即可完成此操作(我主张您永远不要在源数据集上这样做)。


数据透视表

  1. 将“州”和“城市”字段添加到Rows
  2. 将字段值添加到Values
  3. 数据透视表报表布局 = 表格
  4. 小计 = 关闭

左侧是原始数据源,右侧是数据透视表输出

【讨论】:

  • 我有一个庞大的数据集,包含近 97,000 行和 58 列,这只是该项目的一部分,因此我只分享了一个示例以便更好地理解。这就是我需要宏编码的原因,所以我会将这些代码附加到我的实际数据集代码中。
  • 这听起来更像是不合并单元格的更多理由。您会发现它实际上使将来处理源数据变得更加困难。方程式不喜欢合并的单元格。数据透视表就是为了解决这个问题而构建的。我建议重新考虑你的方法。你让你的问题变得比它需要的更难,同时让你的原始数据变得更糟,以后更难使用。
猜你喜欢
  • 2022-12-02
  • 2022-12-02
  • 2020-06-12
  • 2022-12-02
  • 2022-12-28
  • 2015-07-21
  • 2018-07-13
  • 2022-11-20
  • 2019-07-08
相关资源
最近更新 更多