gpt4 book ai didi

vba - 如何按类别对行值求和

转载 作者:行者123 更新时间:2023-12-04 22:31:39 24 4
gpt4 key购买 nike

因此,例如,我在 Excel 中得到了下表(它实际上有 100 多行):

Alfa     10
Beta 5
Alfa 10
Beta 5
Gama 15

我想做的是使用 VBA 宏按名称(类别)对值求和,因此我可以在工作表中的某处显示它,如下所示:
AlfaTotal     20
BetaTotal 10
GamaTotal 15

我尝试使用 For Each 函数,但无法获取这些值。任何帮助将非常感激。

最佳答案

使用字典是一种常用方法。下面处理范围内的空白,如果只有 1 个项目存在。它不需要 .Exists test as 简单地通过直接访问添加到任何现有值。此外,一次性写入键数组和项目。

Option Explicit
Public Sub GetTotals()
Dim dict As Object, arr(), i As Long, lastRow As Long
Set dict = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Worksheets("Sheet1") '<==source data
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Select Case lastRow
Case 1
ReDim arr(1, 1): arr(1, 1) = .Range("A1:B1").Value
Case Else
arr = .Range("A1:B" & lastRow).Value
End Select
End With

For i = LBound(arr, 1) To UBound(arr, 1)
If Not IsEmpty(arr(i, 1)) Then
dict(arr(i, 1)) = dict(arr(i, 1)) + arr(i, 2)
End If
Next
With ThisWorkbook.Worksheets("Sheet2")
.Range("A1").Resize(dict.Count, 1) = Application.WorksheetFunction.Transpose(dict.keys)
.Range("B1").Resize(dict.Count, 1) = Application.WorksheetFunction.Transpose(dict.Items)
End With
End Sub

结果:

data

关于vba - 如何按类别对行值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52291586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com