我用逗号分隔了这个逗号分隔文件
我唯一需要做的就是找出出现次数最多的数字
例: 817; 9; 516; 11; 817; 408; 9; 817
然后结果将是 817 我希望你明白我要做的事。
答案 0 :(得分:0)
我建议使用FileSystemObjects,特别是OpenTextFile方法来读取文件,然后使用split函数根据列进行分隔。然后迭代返回的数组,并计算每个数字出现的次数。
以下代码将为您计算数组。它使用有用的Dictionary对象。
Set counts = CreateObject("Scripting.Dictionary")
For i = Lbound(arr) to Ubound(arr)
If Not counts.Exists(arr(i)) Then
counts.add arr(i), 1
Else
currCount = counts.Item(arr(i))
counts.Item(arr(i)) = currCount + 1
End If
Next
nums = counts.Keys()
currMax = 0
currNum = 0
For i = Lbound(nums) to Ubound(nums)
If counts.Item(nums(i)) > currMax Then
currMax = counts.Item(nums(i))
currNum = nums(i)
End If
Next
num = currNum ' Most often found number
max = currMax ' Number of times it was found
答案 1 :(得分:0)
我会查看文本并计算你的nubmers的数量。 之后我会重新动态一个动态数组。 - 从头到尾遍历文本,并将它们存储在数组中。
之后我会选择第一个数字,遍历数组并计算(例如在tmpcounter中)数字。 [你可以在tmphit中存储文本文件中的计数数字]
你选择第二个数字,计算一个dublicates的数量(tmpcounter2 / tmphit2)
比较两个计数器,你“保持”较高的一个,并使用lowe一个用于下一个数字
...继续,直到验证最后一个字段。
最后你知道哪个号码最常出现以及频率是多少。
我希望这可以帮到你。 这就是我编程的方式,也许有更好的方法或API。
最后你知道
答案 2 :(得分:0)
试试这个
Set objFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1)
Set dictNumbers = CreateObject("Scripting.Dictionary")
Dim MostKey
intHighest = -1
do while NOT objFile.AtEndOfStream
LineArray = Split(objFile.ReadLine,";")
for i = 0 to UBound(LineArray)
if dictNumbers.Exists(LineArray(i)) Then
dictNumbers.Item(LineArray(i)) = dictNumbers.Item(LineArray(i)) + 1
else
dictNumbers.Add LineArray(i), 1
end if
if dictNumbers.Item(LineArray(i)) > intHighest Then
intHeighest = dictNumbers.Item(LineArray(i))
MostKey = LineArray(i)
end if
next
Loop
MsgBox MostKey