如
1
2
3
1
2
3
洗掉重復項后得:
1
2
3
要求處理較大的資料如幾千幾萬的數字
uj5u.com熱心網友回復:
Private Sub xtmp()
Dim arrNumber() As String
Dim arrCache() As String
Dim sResource As String
Dim s As String
Dim bFound As Boolean
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim iCount As Integer
sResource = "1 2 3 1 2 3 4 1 2"
arrNumber = Split(sResource, " ")
iCount = 0
For i = LBound(arrNumber) To UBound(arrNumber)
s = arrNumber(i)
bFound = False
If iCount > 0 Then
For j = LBound(arrCache) To UBound(arrCache)
If arrCache(j) = s Then
bFound = True
Exit For
End If
Next
End If
If bFound = False Then
ReDim Preserve arrCache(iCount) As String
arrCache(iCount) = s
iCount = iCount + 1
End If
Next
For i = LBound(arrCache) To UBound(arrCache)
Debug.Print arrCache(i)
Next
End Sub
uj5u.com熱心網友回復:
這種方式處理大的資料會慢 有其他例如正則運算式 或api函式來處理的uj5u.com熱心網友回復:
50000個以內用字典效率應該沒有問題,以上需要變通一下,否則效率不高uj5u.com熱心網友回復:
一個使用 ListBox 的例子:
Private Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long
Private Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精確查找
Private Sub Command1_Click()
Dim tmp As String, i As Long
Open "yourfile.txt" For Input As #1
List1.Clear
Do Until EOF(1)
Line Input #1, tmp
If -1 = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, tmp) Then List1.AddItem tmp
Loop
Close #1
Open "newfile.txt" For Output As #1
For i = 0 To List1.ListCount -1
Print #1, List1.List(i)
Next i
Cose #1
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/103827.html
標籤:VB基礎類
