Sub NhapFile_TXT_LocTrung()
Dim Index As Long, n As Long, col As Long, row As Long, Text As String
Dim Rng As Range, FSO As Object, FilesToImport
Dim TextSource As Object, NumOfLines, Cols, Res()
Dim Dic As Object
Dim i As Long, j As Long, k As Long
Dim Tmp As String
Dim Arr, dArr
Application.ScreenUpdating = False
Sheets("ONVSUIK").Range("A2:U65536").ClearContents
Set Rng = Sheets("ONVSUIK").Range("A2")
FilesToImport = Application.GetOpenFilename("Text Files (*.txt), *.txt", , , , True)
If IsArray(FilesToImport) Then
Set FSO = CreateObject("Scripting.FileSystemObject")
For Index = 1 To UBound(FilesToImport)
n = 0
Set TextSource = FSO.OpenTextFile(FilesToImport(Index), 1, , -2)
NumOfLines = Split(TextSource.ReadAll, vbCrLf)
If UBound(NumOfLines) > 0 Then
ReDim Res(1 To UBound(NumOfLines), 1 To 1)
For row = 1 To UBound(NumOfLines)
Text = NumOfLines(row)
If Text <> "" Then
If Text <> String(Len(Text), ",") Then
n = n + 1
Cols = Split(Text, ",")
If UBound(Res, 2) < UBound(Cols) + 1 Then
ReDim Preserve Res(1 To UBound(NumOfLines), 1 To UBound(Cols) + 1)
End If
For col = 1 To UBound(Res, 2)
Res(n, col) = Replace(Cols(col - 1), """", "")
Next
End If
End If
Next
End If
Rng.Resize(n, UBound(Res, 2)).Value = Res
Set Rng = Rng.Offset(n)
Next
End If
Arr = Range(Sheet1.[A2], Sheet1.[U60000].End(3)).Resize(, 21)
ReDim dArr(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
Set Dic = CreateObject("Scripting.Dictionary")
With Dic
For i = 1 To UBound(Arr, 1)
Tmp = Arr(i, 2) & "#" & Arr(i, 3) & "#" & Arr(i, 4) & "#"
If Not .Exists(Tmp) Then
k = k + 1
.Add Tmp, k
For j = 1 To UBound(Arr, 2)
dArr(k, j) = Arr(i, j)
Next j
Else
dArr(.Item(Tmp), 6) = dArr(.Item(Tmp), 6) + Arr(i, 6)
dArr(.Item(Tmp), 7) = dArr(.Item(Tmp), 7) + Arr(i, 7)
dArr(.Item(Tmp), 8) = dArr(.Item(Tmp), 8) + Arr(i, 8)
dArr(.Item(Tmp), 9) = dArr(.Item(Tmp), 9) + Arr(i, 9)
dArr(.Item(Tmp), 10) = dArr(.Item(Tmp), 10) + Arr(i, 10)
dArr(.Item(Tmp), 11) = dArr(.Item(Tmp), 11) + Arr(i, 11)
dArr(.Item(Tmp), 12) = dArr(.Item(Tmp), 12) + Arr(i, 12)
dArr(.Item(Tmp), 13) = dArr(.Item(Tmp), 13) + Arr(i, 13)
dArr(.Item(Tmp), 14) = dArr(.Item(Tmp), 14) + Arr(i, 14)
dArr(.Item(Tmp), 15) = dArr(.Item(Tmp), 15) + Arr(i, 15)
dArr(.Item(Tmp), 16) = dArr(.Item(Tmp), 16) + Arr(i, 16)
dArr(.Item(Tmp), 17) = dArr(.Item(Tmp), 17) + Arr(i, 17)
dArr(.Item(Tmp), 18) = dArr(.Item(Tmp), 18) + Arr(i, 18)
dArr(.Item(Tmp), 19) = dArr(.Item(Tmp), 19) + Arr(i, 19)
dArr(.Item(Tmp), 20) = dArr(.Item(Tmp), 20) + Arr(i, 20)
dArr(.Item(Tmp), 21) = dArr(.Item(Tmp), 21) + Arr(i, 21)
End If
Next i
End With
Sheet1.Range("A2").Resize(1000, 21).ClearContents
Sheet1.Range("A2").Resize(k, UBound(Arr, 2)) = dArr
Application.ScreenUpdating = True
End Sub