gpt4 book ai didi

VBA 具有第二个条件的唯一值计数

转载 作者:行者123 更新时间:2023-12-03 02:04:52 28 4
gpt4 key购买 nike

我在尝试思考如何编写 VBA 代码来计算唯一订单号的数量以及每个销售人员的订单状态是打开还是关闭时遇到了障碍。

我正在编写会影响 Sheet2 的 VBA。我需要 VBA 循环遍历 Sheets("Sheet2").Range("A:A") 并 (1) 在 Sheet1 中查找名称; (2a) 计算与销售人员姓名相对应且“开放”的唯一订单号,以及 (2b) 计算与销售人员姓名相对应且“已关闭”的唯一订单号。我为我想要用宏计算的值设计了“?”,并包含了答案数字。

非常感谢任何帮助。如果我可以澄清任何事情,请告诉我。

工作表 1 - 订单

enter image description here

表 2 - 订单摘要

       A                   B                            C    
1 **Name** **Count-Uniq Open Orders** **Count-Uniq Closed Orders**
2 John ? (answer: 2) ? (answer: 0)
3 Ben ? (answer: 1) ? (answer: 1)
4 Fred ? (answer: 1) ? (answer: 0)

最佳答案

测试:

Sub Tester()

Dim d1, d2, arrIn, r, tmp, nm, id, i
Dim c, k

Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")

With Sheets("orders")
arrIn = .Range(.Range("A2"), _
Cells(Rows.Count, 3).End(xlUp)).Value
End With

For r = 1 To UBound(arrIn, 1)
nm = arrIn(r, 1) 'name
id = arrIn(r, 2) 'order #
If Not d1.exists(nm) Then
d1.Add nm, Array(0, 0)
End If
If Not d2.exists(id) Then
tmp = d1(nm)
i = IIf(UCase(arrIn(r, 3)) = "OPEN", 0, 1)
tmp(i) = tmp(i) + 1
d1(nm) = tmp
d2.Add id, 0
End If
Next r

Set c = Sheets("summary").Range("a2")
For Each k In d1.keys
c.Resize(1, 3).Value = Array(k, d1(k)(0), d1(k)(1))
Set c = c.Offset(1, 0)
Next k
End Sub

关于VBA 具有第二个条件的唯一值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315452/

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