yswoyh 发表于 2021-12-24 11:52:14

请教高人!VB将xls中列中数据与list中的匹配,最快的方法是?

请教高人!VB将xls中列中数据与list中的匹配,最快的方法是?
xls数据量一般都在1000行左右,list中的照片一般都在2000行左右,我操作一次需要20分钟,请问有最快的方法吗?
      For i = 1 To xlSheet.range("A65536").End(3).Row
            For n = 0 To Me.List1.ListCount - 1
                ff = f(Me.List1.list(n))                  '截取名字部分
                ff1 = Format(xlSheet.Cells(i, 4), "0")      
                If xlSheet.Cells(i, 3) <> "空地" Then       '判断属性部分
                   GoTo Ei
                Else
                  'Debug.Print xlSheet.Cells(i, 4)
                  If ff1 = ff Then
                        Debug.Print i
                        Debug.Print ff
                        'List1.RemoveItem (n)
                        xlSheet.Cells(i, 8) = "图片"
                        GoTo Ei
                  End If
                End If
            Next n
Ei:
      Next i

fjfhgdwfn 发表于 2021-12-26 12:39:57

FOR中怎么还用GOTO,应用exitfor
你这个查找对应的,要优化,不清楚你数据有规律没有,有规律要用二分法查找之类的。
再有,你要把XLS和LIST的数据都放数组中,再查找,数组查找要比访问excel单元格快不少。

mikewolf2k 发表于 2021-12-27 09:03:00

同上。先把数据读到数组里面,数组排序,然后在数组里查找。采取高效的搜索方法,没必要每个都比较。

yswoyh 发表于 2021-12-29 13:56:55

多谢!多谢!将数据读取到数组中确实快不少

mikewolf2k 发表于 2021-12-29 15:29:22

yswoyh 发表于 2021-12-29 13:56
多谢!多谢!将数据读取到数组中确实快不少

改进算法,检索效率也可以提高。否则是M x N。二分法M x log2(N)。
页: [1]
查看完整版本: 请教高人!VB将xls中列中数据与list中的匹配,最快的方法是?