在A列中一些数字重复。我需要过滤A列并计算B列的总和。 就像第二张图片一样。
如果B列的总和大于90,则将其计为1。 我需要对A列中的每个唯一编号执行相同的操作。
简而言之:我需要知道有多少唯一的列A ID的列B之和大于90。
我想使用“ For Each Next”,但是由于我无法弄清楚如何使代码仅使用唯一值,因此我将整个A列复制到了不同的工作表中,删除了重复项并将其用作参考。
我也不知道如何使代码仅在公式中使用过滤后的单元格,因此我添加了对小计公式进行计数的单元格,然后尝试使用VBA代码来检查其值。
这是我到目前为止提出的:
Sub SkaiciuotiCB_Click()
Dim rng As Range
Set rng = Sheets("Sheet2").Range("A1:A229")
For Each Cell In rng
Sheets("Sheet1").Range("A2:O2").AutoFilter Field = 8, Criteria1 = Cell.Value
If Sheets("Sheet1").Range("I793").Value >= 90 Then
Sheets("Sheet1").Range("C1").Value = Sheets("Sheet1").Range("C1").Value + 1
End If
Sheets("Sheet1").AutoFilterMode = False
Next
End Sub
这时,我收到“运行时错误'1004':Range类的AutoFilter方法失败”
我的问题:
如何修复我的代码。
其他问题:
答案 0 :(得分:0)
不确定这是您要的吗,以及数据的顺序是否重要,但是您可以尝试
Sub Macro1()
Dim i As Long
Dim currentCustomer As String
Dim currentCustomerDays As Integer
Dim totalCount As Integer
totalCount = 0
'Clear sorting rules
Worksheets("Sheet1").Sort.SortFields.Clear
'Sort by first column
Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A2:A25") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'Set sorting arguements and do sort
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:B25")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'run through list
For i = 2 To 25
If currentCustomer = Worksheets("Sheet1").Cells(i, "A").Value Then
currentCustomerDays = currentCustomerDays + Worksheets("Sheet1").Cells(i, "B").Value
Else
If currentCustomerDays > 90 Then totalCount = totalCount + 1
currentCustomer = Worksheets("Sheet1").Cells(i, "A").Value
currentCustomerDays = Worksheets("Sheet1").Cells(i, "B").Value
End If
Next i
If currentCustomerDays > 90 Then totalCount = totalCount + 1
Debug.Print totalCount
End Sub
此示例将遍历工作表1上的表格(A1:B25)。