Dùng VBAem có 1 file excel khoảng 1tr dòng cần vlookup lấy dữ liệu từ file notepad 25tr dòng.
các pro có cách nào xử lý giúp e với. dữ liệu quá nặng copy vào excel cũng ko chạy dc
VBA em không biết làm bác giúp em dc không ạ. dữ liệu của em đơn giản lắm file note pad có 1 cột file excel có 1 cột chỉ là dữ liệu quá lớnDùng VBA
cắt bớt dữ liệu file note pad và file excel cho nhẹ file và gởi lênVBA em không biết làm bác giúp em dc không ạ. dữ liệu của em đơn giản lắm file note pad có 1 cột file excel có 1 cột chỉ là dữ liệu quá lớn
em gửi file bác xử lý giúp ạ. cảm ơn bác nhiều.cắt bớt dữ liệu file note pad và file excel cho nhẹ file và gởi lên
Gởi file note pad với 25 tr dòng xem máy mình mở lên nổi khôngVBA em không biết làm bác giúp em dc không ạ. dữ liệu của em đơn giản lắm file note pad có 1 cột file excel có 1 cột chỉ là dữ liệu quá lớn
Kết quả sau khi xử lý file excel là gìem gửi file bác xử lý giúp ạ. cảm ơn bác nhiều.
file nó lớn quá bác ạ. khoảng 200mb e ko gửi lên dc máy e core i3 ram 4gb mở ngon lành. nhờ bác copy pate dữ liệu xuống dưới giúp em cho đủ 25tr dòng dc koGởi file note pad với 25 tr dòng xem máy mình mở lên nổi không
Tôi đoánn tr có nghĩa là triệu, thay vì trăm.Gởi file note pad với 25 tr dòng xem máy mình mở lên nổi không
bác có cách nào khả quan giúp em với.Tôi đoánn tr có nghĩa là triệu, thay vì trăm.
Không có cách nào Match/Lookup/Vlookup nổi vài triệu dòng đâu.
Nếu chỉ dò vài lượt thì code có thể dò từ a đến z.
Nhưng nếu dò (theo đầu bài) cả triệu lượt thì cách rừng nhất là đẩy cái file text vào một cách sort nào đó (quick sort?) rồi dùng cách dò nhị phân. Chỉ tôi không biết là có đủ bộ nhớ để chứa mảng hàng chục triệu hay không. Nếu khong đủ thì phải rừng thêm mọt bậc nữa là đọc từng triệu dòng, mỗi phần là một mảng.
Cách khá hơn chút là dùng Dictionary - chỉ tôi không chắc là Dictionary có hữu hiệu với độ lớn này không. Dictionary không dùng bộ nhớ liên tục cho nên có nhiều khả năng tránh được tràn. Tuy nhiên, cỡ hàng triệu dữ liệu thì hash collisions xảy ra khá nhiều. Có thể phải mất nửa tiếng để lập cái dic.
Cách ngon nhất có lẽ là cách khó nhất là lập cây nhị phân để chứa dữ liệu. Cách này đòi hỏi trình độ lập trình rất cao. (chính Dictionary cũng dùng cây nhị phân để chứa index)
Tôi không nghĩ ADO chịu nổi. Với có lớn này muốnn import vào Access cũng khó, nói gì Excel.
Dữ liệu bạn muốn lấy là thế nào trong 25tr kia?em có 1 file excel khoảng 1tr dòng cần vlookup lấy dữ liệu từ file notepad 25tr dòng.
các pro có cách nào xử lý giúp e với. dữ liệu quá nặng copy vào excel cũng ko chạy dc
dạ lọc ra số điện thoại trong file excel có trong file note pad ạDữ liệu bạn muốn lấy là thế nào trong 25tr kia?
Bạn úp file text lên Google Drive rồi úp link qua đây nhé.
Quy ước đầu số của bạn là như thế nào?dạ lọc ra số điện thoại trong file excel có trong file note pad ạ
em đang làm ở cty không cho vào drive ạ. dư liệu thì ko có gì bí mật ạBạn úp file text lên Google Drive rồi úp link qua đây nhé.
Nếu dữ liệu bí mật bí đường thì chắc liên hệ ai đó làm việc riêng.
kết quả trả về tại cột B file excel nếu có xuất hiện tại file notepad thì đánh dấu là 1 không có thì bỏ trống ạQuy ước đầu số của bạn là như thế nào?
2 file để cùng thư mụcdạ lọc ra số điện thoại trong file excel có trong file note pad ạ
Sub XYZ()
Dim Dic As Object, FSo As Object, TxtFile As Object
Dim nameText As String, iKey As String
Dim sArr(), Res(), sRow&, i&, k&
Set Dic = CreateObject("scripting.dictionary")
With Sheets("Sheet1")
sArr = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value2
End With
sRow = UBound(sArr)
ReDim Res(1 To sRow, 1 To 1)
For i = 1 To sRow
Dic.Item(CStr(sArr(i, 1))) = ""
Next i
Erase sArr
Set FSo = CreateObject("Scripting.FileSystemObject")
nameText = ThisWorkbook.Path & "\notepad.txt"
Set TxtFile = FSo.OpenTextFile(nameText)
Do While Not TxtFile.AtEndOfLine
iKey = TxtFile.ReadLine
If Dic.exists(iKey) Then
k = k + 1
Res(k, 1) = iKey
Dic.Remove (iKey)
End If
Loop
TxtFile.Close
Set FSo = Nothing: Set Dic = Nothing
Sheets("Sheet1").Range("C2").Resize(k) = Res
End Sub
bác làm giúp em vào file mẫu dc ko ạ.Nếu chỉ toàn số thì mọi việc dễ hơn nhiều.
Dựng một mảng Boolean, 100 triệu phần tử.
Đọc file text, cứ thấy số nào thì dùng số ấy làm chỉ sô, vào mảng gài trị True.
Đọc file Excel, cái nào trong mảng True là có.
Hết.
Chú:
1. trong file có số mang dấu phẩy, cần bỏ tất cả các ký tự không phải là số trước khi vào mảng.
2. 100 triệu Integers (hình như Boolean dùng Byte) thì mảng cỡ 800 MB (0,8 GB). Chắc bộ nhớ chịu nổi. (nếu không thì tách làm 10 mảng)
3. nếu tràn bộ nhớ thì có thể dùng kỹ thuật bit map. Giảm được xuống còn 1/8. Tuy nhiên, phải viết thêm 2 hàm setBit, và getBit.
khoảng bao lâu thì nó chạy xong bác nhỉ? e chạy từ lúc bác up bài đến giờ chưa thấy ra kết quả2 file để cùng thư mục
Chỉnh tên file Text theo tên thực tế
Chạy code xem có bị lổi bộ nhớ không
Code chạy rất lâu
Mã:Sub XYZ() Dim Dic As Object, FSo As Object, TxtFile As Object Dim nameText As String, iKey As String Dim sArr(), Res(), sRow&, i&, k& Set Dic = CreateObject("scripting.dictionary") With Sheets("Sheet1") sArr = .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Value2 End With sRow = UBound(sArr) ReDim Res(1 To sRow, 1 To 1) For i = 1 To sRow Dic.Item(CStr(sArr(i, 1))) = "" Next i Erase sArr Set FSo = CreateObject("Scripting.FileSystemObject") nameText = ThisWorkbook.Path & "\notepad.txt" Set TxtFile = FSo.OpenTextFile(nameText) Do While Not TxtFile.AtEndOfLine iKey = TxtFile.ReadLine If Dic.exists(iKey) Then k = k + 1 Res(k, 1) = iKey Dic.Remove (iKey) End If Loop TxtFile.Close Set FSo = Nothing: Set Dic = Nothing Sheets("Sheet1").Range("C2").Resize(k) = Res End Sub
Đẩy file excel 1tr dòng và file text 25tr đó vào data model ,tạo relationship rồi reload thôi bạn. Nếu có edit thì đưa qua power query edit rồi add vào data model, vài chục triệu dòng không thành vấn đề nếu máy bạn đủ mạnh . Dữ liệu hàng trăm ngàn hay triệu dùng excel hay VBA là không khả thi.em có 1 file excel khoảng 1tr dòng cần vlookup lấy dữ liệu từ file notepad 25tr dòng.
các pro có cách nào xử lý giúp e với. dữ liệu quá nặng copy vào excel cũng ko chạy dc
cái bác nói nó là phần mềm gì vậy có thể hướng dẫn cho e cụ thể hơn dc koĐẩy file excel 1tr dòng và file text 25tr đó vào data model ,tạo relationship rồi reload thôi bạn. Nếu có edit thì đưa qua power query edit rồi add vào data model, vài chục triệu dòng không thành vấn đề nếu máy bạn đủ mạnh . Dữ liệu hàng trăm ngàn hay triệu dùng excel hay VBA là không khả thi.
Nó có sẵn trong excel bạn ạ, power pivot bạn add thêm vào, bạn lên google hay youtube học cách hướng dẫn sử dung ( power query, power pivot, data model) tốt hơn nữa thì kiếm cái power Bi .cái bác nói nó là phần mềm gì vậy có thể hướng dẫn cho e cụ thể hơn dc ko
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2