gpt4 book ai didi

VBA:带有 INDEX MATCH 的循环不会转到下一个值

转载 作者:行者123 更新时间:2023-12-02 15:53:21 25 4
gpt4 key购买 nike

这里是 VBA 新手...任何帮助表示赞赏:)

我有一张这样的 table :

S/N     UNIQREF   REF   OPE
ABC123 10 C1
ABC123 20 C2
ABC123 30 I1
ABC123 40 IM1
DEF456 10 C1
DEF456 20 I1
DEF456 30 DR1
HIJ789 10 C1
HIJ789 20 DR1
HIJ789 30 I1
HIJ789 40 XX1

...我需要填写 UNIQREF 列。

规则是:循环遍历我的S/N(序列号)列,只要保持不变,就查找“I1”OPE(操作)左边的值,并将其写入UNIQREF在所有行中。

例如,我们以 ABC123 为例,在 OPE 中查找“I1”,看到它旁边(左侧)的值为 30,因此我们在所有 ABC123 S/N 的 UNIQREF 列中写入 30。

同样,我们将为所有 DEF456 S/N 写入 20,为所有 HIJ789 S/N 写入 30。

到目前为止,这是我的代码:

Public Sub routine()

Dim gamWAL as Worksheet
Set gamWAL = ThisWorkbook.Sheets("gamWAL")

i = 3 'because data in my table starts on line 3, line 2 is columns titles and line 1 is comments. Also starts in Column B (my S/N column)...

Do While gamWAL.Cells(i, "B").Value <> "" 'i want the loop to stop at the when the S/N list is over

Do While gamWAL.Cells(i, "B").Value = gamWAL.Cells(i + 1, "B").Value

gamWAL.Cells(i, "E").Value = Application.WorksheetFunction.Index(gamWAL.Range("F" & i & ":G3000"), Application.WorksheetFunction.Match("I1", gamWAL.Range("G" & i & ":G3000"), 0), 1)

i = i + 1

Loop

Loop

End Sub

问题:它确实为所有 ABC123 S/N 写入“20”,除了最后一个,然后不会继续到下一个“组”S/N...宏不断“计算” “虽然(对于超长,因为表当前有 900 行,但预计将增长到大约 4000 行)..

有什么技巧可以让这项工作成功吗?

谢谢!

最佳答案

尝试,

=INDEX(C:C, AGGREGATE(15, 7, ROW($2:$12)/((A$2:A$12=A2)*(D$2:D$12="I1")), 1))

enter image description here

假设 REF 是数字,并且 I1 对于每个 S/N 都是唯一的,那么 SUMIFS 也可以,并且对于记录删除/添加更加通用和友好。

=sumifs(c:c, a:a, a2, d:d, "I1")

关于VBA:带有 INDEX MATCH 的循环不会转到下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51630437/

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