在excel vba中查找字母数字之间的前2个最大值

在excel vba中查找字母数字之间的前2个最大值,excel,vba,Excel,Vba,需要找到字母数字之间的前2个最大值。数据如下所示 “2FB”、“4CB”、“0FW”、“4CW” 这里的输出是:4CB,4CW 字母表总是一样的。。只有数字会改变。上面的数据是一个函数的输出,我将它存储在4个字符串变量中 非常感谢您的帮助 前面我已将输出保存在每个excel行中,并使用下面的vba代码来检索最大值。。但它没有像预期的那样工作,因为我现在需要前2个值 Evaluate("IF(MAX(COUNTIF(" & rng.Address & "

需要找到字母数字之间的前2个最大值。数据如下所示 “2FB”、“4CB”、“0FW”、“4CW”

这里的输出是:4CB,4CW

字母表总是一样的。。只有数字会改变。上面的数据是一个函数的输出,我将它存储在4个字符串变量中

非常感谢您的帮助


前面我已将输出保存在每个excel行中,并使用下面的vba代码来检索最大值。。但它没有像预期的那样工作,因为我现在需要前2个值

Evaluate("IF(MAX(COUNTIF(" & rng.Address & "," & rng.Address & "))>2,INDEX(" & rng.Address & ",MATCH(MAX(COUNTIF(" & rng.Address & "," & rng.Address & ")),COUNTIF(" & rng.Address & "," & rng.Address & "),0)),0)")

使用ArrayList对象怎么样:

Sub Test()

'Initialize your input:
Dim arr(): arr = Array("2FB", "4CB", "0FW", "4CW")

'Create the arraylist object:
With CreateObject("System.Collections.ArrayList")
    
    'Loop over your array to load arraylist:
    For Each el In arr
        .Add el
    Next
    
    'Sort our array ascending and reverse the outcome:
    .Sort
    .Reverse
    
    'Demo lines, we allready got our two largest values:
    Debug.Print .Item(0)
    Debug.Print .Item(1)
    
    'Slice away redundant items and report back in array:
    .RemoveRange 2, .Count - 2
    arr = .ToArray
      
End With

End Sub

前面我已将输出保存在每个excel行中,并使用下面的vba代码来检索最大值。。但它并没有像预期的那样工作,因为我现在需要在rng中计算前2个值(“如果(MAX(COUNTIF)(&rng.Address&“,”&rng.Address&“)>2,索引(&rng.Address&“,”MATCH(MAX(COUNTIF)(&rng.Address&“,”&rng.Address&“,”&rng.Address&“,”,0)),0”),我存储了2,4,0,4的值。它有时也会得到0作为输出。。因为我是vba新手,所以需要检查是否有其他备选方案。您所说的“最大”值是什么意思?字母表在“最大”部分扮演什么角色?你的意思是“4A”>“4B”(考虑中的字母顺序?)还是它们被认为是相同的(只是检查数字部分)?是的,只有数字部分
是的,只有数字部分-bvsnkiran 1小时前
:那么你的问题需要一种非常不同的方法。如果您的列表中有
2FB、4CB、0FW、4CW、4AB
,那么您希望从
4CB、4CW、4AB
中选择哪两个?在决定这两个值时应该遵循什么逻辑?值是动态的,结果会返回吗?谢谢:)让我尝试一下,然后会返回给您JvdVHI@JvdV,您的函数正在运行。。但问题是,由于它被多次调用(如每2分钟100次),总体性能正在下降。。您能否建议对代码进行任何更改..@bvsnkiran。最好是用你的问题,一个好的描述和你解决问题的尝试来提出一个新问题。