Xử lý VBA với file.csv có số dòng lớn hơn giới hạn dòng (1 người xem)

  • Thread starter Thread starter oldjack
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

oldjack

Thành viên chính thức
Tham gia
19/8/11
Bài viết
59
Được thích
1
Giới tính
Nam
Chào diễn đàn.

Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel, do đó mình gặp vấn đề như sau:

+ Excel không mở được file.csv đó, nên VBA không có dữ liệu để chạy.
+ VBA có cách nào xử lý với file .csv đó hông.
+ Sử dụng DAO thì không chạy nổi với file .csv đó

Mong diễn đàn giúp đỡ ạ,
Cảm ơn nhiều.
 
có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel
Mình tò mò dữ liệu gì nhiều vậy? Bạn gửi lên mình ngó tẹo được không?
Có thể nào chọn kiểu file khác không? Text File chẳng hạn. Dùng FileSystemObject đọc text vào mảng rồi xử lý...
 
Mình tò mò dữ liệu gì nhiều vậy? Bạn gửi lên mình ngó tẹo được không?
Có thể nào chọn kiểu file khác không? Text File chẳng hạn. Dùng FileSystemObject đọc text vào mảng rồi xử lý...
Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel
DÒNG TRÊN LÀ DÒNG nói dóc không đúng vì file *.csv trong bộ Office đi theo kèm nó VD: Office 2003 có 65536 còn 2016 có 1048576 dòng
Vậy kết luận chủ thớt nói Phét 100% ...............
 
Dùng PowerPivot mà đọc nó vào DataModel. Hình như được gần 2 tỷ dòng lận.
Làm việc với dữ liệu hàng tỷ dòng mà không biết PowerPivot thì quên đi.
 
DÒNG TRÊN LÀ DÒNG nói dóc không đúng vì file *.csv trong bộ Office đi theo kèm nó VD: Office 2003 có 65536 còn 2016 có 1048576 dòng
Vậy kết luận chủ thớt nói Phét 100% ...............
Rãnh quá, nghĩ ra để nói dóc trên đây vậy ông. Thời gian đâu để nghĩ ra mấy cái trò trẻ trâu vậy ông. (Trước khi phán, ông suy nghĩ dùm cái...)
Ps. ông nhìn dùm cái ảnh dung lượng file dùm cái/và cái thông báo nó Load không hết dữ liệu (full dòng, nên sót dữ liệu)
Làm ơn suy nghĩ rồi hãy phán ông ơi
 

File đính kèm

  • ThongBaoKhongLoad.PNG
    ThongBaoKhongLoad.PNG
    5.5 KB · Đọc: 27
  • DL.PNG
    DL.PNG
    2.8 KB · Đọc: 23
Mình tò mò dữ liệu gì nhiều vậy? Bạn gửi lên mình ngó tẹo được không?
Có thể nào chọn kiểu file khác không? Text File chẳng hạn. Dùng FileSystemObject đọc text vào mảng rồi xử lý...
Dear Bạn.
Text File là cái này phải không ban?
TextFile.PNG
Dùng FileSystemObject là như nào vậy, Bạn có thể ví dụ/hay đoạn code VBA như nào?
Cảm ơn. nhiều
 
Rãnh quá, nghĩ ra để nói dóc trên đây vậy ông. Thời gian đâu để nghĩ ra mấy cái trò trẻ trâu vậy ông. (Trước khi phán, ông suy nghĩ dùm cái...)
Ps. ông nhìn dùm cái ảnh dung lượng file dùm cái/và cái thông báo nó Load không hết dữ liệu (full dòng, nên sót dữ liệu)
Làm ơn suy nghĩ rồi hãy phán ông ơi
thấy cái hình file *.csv thì đoán bạn xài Office 2010 To 2016 vậy thì Excel có 1048576 dòng thì File *.csv phải có 1048576 dòng chứ lấy đâu ra dòng màu đỏ sau

Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel

Bạn hỏi cả thế giới này xem có đúng không chứ ?!

Còn cài hình lỗi đó lại khác nữa ...
 
Lần chỉnh sửa cuối:
thấy cái hình file *.csv thì đoán bạn xài Office 2010 To 2016 vậy thì Excel có 1048576 dòng thì File *.csv phải có 1048576 dòng chứ lấy đâu ra dòng màu đỏ sau

Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel

Bạn hỏi cả thế giới này xem có đúng không chứ ?!
Có lẽ tôi viết vội và không kiểm lại nội dung nên không đúng với thực tế.
excel load full dòng mà dòng dữ liệu của file.csv lơn hơn, nên không show đủ dữ liệu, do đó tôi đang tìm giải pháp xử lý nên cần sự giúp đỡ.
 
Phải coi File dữ liệu của bạn là gì thì mọi người mới có hướng giải quyết chứ.
Còn không bạn mở file đếm tới dòng 655366 thì ngắt rồi qua cột khác dán tiếp hoặc tạo Sheet khác dán tiếp
 
Phải coi File dữ liệu của bạn là gì thì mọi người mới có hướng giải quyết chứ.
Còn không bạn mở file đếm tới dòng 655366 thì ngắt rồi qua cột khác dán tiếp hoặc tạo Sheet khác dán tiếp
Tôi nghĩ là thớt nói về số cột chứ không phải số dòng.
Trên net có cả đống công cụ chẻ dọc file csv.
Nhưng bảo cái phần mềm tạo file này tách giùm thành 2-3 files thì là phương án chỉnh nhất.
 
Phải coi File dữ liệu của bạn là gì thì mọi người mới có hướng giải quyết chứ.
Còn không bạn mở file đếm tới dòng 655366 thì ngắt rồi qua cột khác dán tiếp hoặc tạo Sheet khác dán tiếp
Vấn đề là làm sao mở và làm sao đếm?
 
Cái này em phải xem file mới biết
 
Cái này em phải xem file mới biết
Excel chỉ tạo ra được file chứa tối đa 1,048,576 dòng nên chắc chắn không thể mở được file có số dòng lớn hơn giới hạn này rồi (không cần phải xem file cũng biết điều này)
Vậy nên:
- Chương trình nào tạo ra file này thì cứ mở bằng chương trình đó
- Dùng FileSystemObject đọc file csv này không biết có được không nhưng cứ cho là được thì với số dòng "khủng" kia chắc cũng... "đắm đuối"
 
Ủa cái bài tôi chỉ cho dùng splicer để chặt ra từng khúc đâu mất rồi. Chắc tại splicer nó phạm luật diễn đàn nên bị quan thánh xoá.
 
Excel chỉ tạo ra được file chứa tối đa 1,048,576 dòng nên chắc chắn không thể mở được file có số dòng lớn hơn giới hạn này rồi (không cần phải xem file cũng biết điều này)
Vậy nên:
- Chương trình nào tạo ra file này thì cứ mở bằng chương trình đó
- Dùng FileSystemObject đọc file csv này không biết có được không nhưng cứ cho là được thì với số dòng "khủng" kia chắc cũng... "đắm đuối"
Nãy giờ, chỉ có Anh này là hiểu được cốt lõi vấn đề... Tks.. FileSystemObject theo link dứoi chữ ký của "Kieu Manh" phải không a?

Vấn đề ở đây không phải là xem file nội dung gì, cốt lõi là show ra đến dòng cuối của dữ liệu. Đã từng nghĩ đến dùng access chứa dữ liệu, nhưng chưa biết cách để VBA nhận dạng được file.access đó.
 
thấy cái hình file *.csv thì đoán bạn xài Office 2010 To 2016 vậy thì Excel có 1048576 dòng thì File *.csv phải có 1048576 dòng chứ lấy đâu ra dòng màu đỏ sau

Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel

Bạn hỏi cả thế giới này xem có đúng không chứ ?!

Còn cài hình lỗi đó lại khác nữa ...
Excel chỉ tạo ra được file chứa tối đa 1,048,576 dòng nên chắc chắn không thể mở được file có số dòng lớn hơn giới hạn này rồi (không cần phải xem file cũng biết điều này)
Vậy nên:
- Chương trình nào tạo ra file này thì cứ mở bằng chương trình đó
- Dùng FileSystemObject đọc file csv này không biết có được không nhưng cứ cho là được thì với số dòng "khủng" kia chắc cũng... "đắm đuối"
Giờ mới đọc kỹ lại, kieu manh không hiểu về file.csv nên phán tôi như vậy.
 
Thì mình cứ gửi file đó lên đây xem nào?
Thấy mình ngó lơ cái vụ gửi file lên. Bí mật gì đó hả? Mọi người cứ lo lắng vậy thôi, chứ cứ gửi lên xem có hết lo lắng không nhưng chắc chắn là hết giằng co thế này thế kia.
 
Tôi nghĩ bài của bạn làm được bằng VBA kể cả đưa dữ liệu vào Sheet (nếu Full row Sheet thì insert them sheet và tiếp tuc) hay load lên Control ngâm cứu đi.
do tôi không có file dữ liệu mẫu nên không thử được. (Tôi chỉ biết thực hành không biết lý thuyết)
hinh 2.jpg
 
thấy cái hình file *.csv thì đoán bạn xài Office 2010 To 2016 vậy thì Excel có 1048576 dòng thì File *.csv phải có 1048576 dòng chứ lấy đâu ra dòng màu đỏ sau

Mình có file dữ liệu là .csv với số lượng dòng lớn hơn giới hạn dòng của excel

Bạn hỏi cả thế giới này xem có đúng không chứ ?!

Còn cài hình lỗi đó lại khác nữa ...
File *.csv là file dạng text mà anh, nó đâu có giới hạn dòng, giới hạn là ở Excel nó giới hạn thôi.
 
Thì mình cứ gửi file đó lên đây xem nào?
Thấy mình ngó lơ cái vụ gửi file lên. Bí mật gì đó hả? Mọi người cứ lo lắng vậy thôi, chứ cứ gửi lên xem có hết lo lắng không nhưng chắc chắn là hết giằng co thế này thế kia.
Sorry, tải lên là tôi chuyển qua thi đấu cho Juventus luôn.
Dù sao cũng cảm ơn bạn/mọi người.
 
Sorry, tải lên là tôi chuyển qua thi đấu cho Juventus luôn.
Dù sao cũng cảm ơn bạn/mọi người.
Cho dù bạn muốn đưa dữ liệu file text đó vào Excel được đi nữa thì cũng chẳng xử lý được gì vì dung lượng khủng sẽ làm tốc độ xử lý của Excel bị hạn chế. Vậy bạn có thể thay thế Excel = Access để xử lý nhé.
 
Hai Lúa Miền Tây anh nói Chính xác, đưa vô chỉ để xem thôi chứ xử lý gì nổi hichic
Ăn thua là muốn làm cái gì thôi. Chứ nếu chỉ muốn phân tích dữ liệu thì khoảng vài chục triệu dòng tôi đã làm rồi.
Như toi đã nói ở trên, DataModel có khả năng chứa đến gần 2 tỷ dòng, và PowerPivot có khả năng làm toán trên hàng chục triệu dòng.

Ngạn ngữ Tây: 'If the mountain will not come to Muhammad, then Muhammad must go to the mountain'
 
Tôi không có ý kiến gì về việc xử lý dữ liệu khủng (chục triệu dòng, trăm triệu dòng, hay hàng tỷ dòng). Tôi chỉ thắc mắc là tại sao cứ để mặc định csv mở bằng Excel? Hễ csv là phải mở bằng excel, double click nó là excel chạy?
Tôi thích để mở mặc định là Notepad, cần mở bằng Excel thì nhấn chuột phải Open with.
Vậy nếu chỉ muốn xem thì mở bằng notepad. Nếu file khủng mở bằng notepad mở không nổi, thì mở bằng wordpad.
Mở được thì copy 1 dòng bỏ vô excel, đếm bao nhiêu cột (bằng cách đếm số lượng dấu phẩy) xem có rơi vào trường hợp anh VetMini nói không. Nếu nhỏ hơn số cột của excel thì tức là quá nhiều dòng (cũng không hẳn là quá 1 tr dòng, có khi 1 dòng quá nhiều ký tự mà thôi).
Muốn biết thì thử copy 1/10 dữ liệu lưu ra file mới dạng text, nhưng sửa đuôi thành csv. Lúc này có quyền thử mở bằng excel.
 
Lần chỉnh sửa cuối:
Vậy cố thêm chút nữa thì có thể dùng Notepad++ (bé bé hạt tiêu). Em hay dùng cái này sau Notepad của Windows.

Dùng Notepad++ là bước tiến hay bước lùi vậy ta :)
Mình nghe nói cái này có thêm công đoạn tô màu chữ, format toàn bộ văn bản, chắc tiêu hao xăng dầu không ít hơn notepad nhỉ.
 
Hai Lúa Miền Tây anh nói Chính xác, đưa vô chỉ để xem thôi chứ xử lý gì nổi hichic

Bạn có nghe tích trạng Lương Thế Vinh cân voi chưa ? Tại sao cái cân mười ký vẫn cân được con voi nhỉ ?
Sao chúng ta phải bó tay khi có đầy đủ công cụ hiện đại, chịu thua tư duy của người sống cách đây mấy trăm năm hả bạn ? :)
 
Cho dù bạn muốn đưa dữ liệu file text đó vào Excel được đi nữa thì cũng chẳng xử lý được gì vì dung lượng khủng sẽ làm tốc độ xử lý của Excel bị hạn chế. Vậy bạn có thể thay thế Excel = Access để xử lý nhé.
đang xài data.xlsb bỏ qua data.accdb thấy sướng dum hết người

Lúc trước trên Excel Mạnh Lưu 1 Năm có 4 Sheet chính lên tới 65536 là thầy ì ạch ...

nay qua Access 4 tablename chính Lưu 2 Năm liên tục thấy nhẹ tênh

mà dụng file mới có 8 MB ... trong khi đó Bác Bill cho Tới 2G vậy lưu 10 năm quá

Thấy bác bill keo kết hợp Excel với Access là 1 giải pháp tuyệt vời
https://support.office.com/vi-vn/article/10-lý-do-hàng-đầu-cho-việc-sử-dụng-access-cùng-với-excel-2a454445-13cc-4b39-bc2f-d27fd12ca414
Capture.PNG
 
Lần chỉnh sửa cuối:
Bạn có nghe tích trạng Lương Thế Vinh cân voi chưa ? Tại sao cái cân mười ký vẫn cân được con voi nhỉ ?
Sao chúng ta phải bó tay khi có đầy đủ công cụ hiện đại, chịu thua tư duy của người sống cách đây mấy trăm năm hả bạn ? :)
Cái này là sự thật mà, bạn thử để dữ liệu 655366 dong roi ban sử lý trên Excel đi, mà chắc bạn cũng đã thử rồi
còn nếu ý bạn nói xử lý ngoài bằng chương trình thì nói làm gì ....????
 
Cho dù bạn muốn đưa dữ liệu file text đó vào Excel được đi nữa thì cũng chẳng xử lý được gì vì dung lượng khủng sẽ làm tốc độ xử lý của Excel bị hạn chế. Vậy bạn có thể thay thế Excel = Access để xử lý nhé.
Thiệt tình, có lẽ hàng ngày xử lý hơn 600k rows với sự ưu việt của VBA trong vòng chưa đến 1giây đã có kết quả, nên khi gặp dữ liệu vượt giới hạn Excel lại loay hoay với Excel, quên bén dùng Access làm trung gian xử lý nó.
Cảm ơn a nhiều nhiều.
 
Ăn thua là muốn làm cái gì thôi. Chứ nếu chỉ muốn phân tích dữ liệu thì khoảng vài chục triệu dòng tôi đã làm rồi.
Như toi đã nói ở trên, DataModel có khả năng chứa đến gần 2 tỷ dòng, và PowerPivot có khả năng làm toán trên hàng chục triệu dòng.

Ngạn ngữ Tây: 'If the mountain will not come to Muhammad, then Muhammad must go to the mountain'

Hàng ngày, chỉ sử dụng VBA thôi. Giờ mới nghe nói đến DataModel/PowerPivot...
 
Hàng ngày, chỉ sử dụng VBA thôi. Giờ mới nghe nói đến DataModel/PowerPivot...
Chịu khó đọc trả lời ở trên 1 chút.
Excel chỉ là bảng tính trải rộng. Tự bảng tính thì ít khi có lý do gì làm việc tới cả trăm ngàn dòng. MS muốn nới rộng tầm vực nó cho nên thêm vào cái đống PowerPivot và PowerQuery. Nhưng căn bản của bảng tính vẫn là mảng 2 chiều, chứa tới trăm ngàn dòng thì sẽ hụt hơi. DataModel giúp cho nó tạm vượt ra ngoài giới hạn đó.

Hàng ngày chỉ sử dụng VBA là cách làm việc cổ xưa rồi. Thời buổi công nghệ này bắt buộc phải đi theo phiên bản của phần mềm. Excel đã tới phiên bản 2016. Nếu không học DataModel là lạc hậu. Nếu nghĩ rằng VBA có thể làm được mọi thứ là không biết tự tiến bộ.
 
Chịu khó đọc trả lời ở trên 1 chút.
Excel chỉ là bảng tính trải rộng. Tự bảng tính thì ít khi có lý do gì làm việc tới cả trăm ngàn dòng. MS muốn nới rộng tầm vực nó cho nên thêm vào cái đống PowerPivot và PowerQuery. Nhưng căn bản của bảng tính vẫn là mảng 2 chiều, chứa tới trăm ngàn dòng thì sẽ hụt hơi. DataModel giúp cho nó tạm vượt ra ngoài giới hạn đó.

Hàng ngày chỉ sử dụng VBA là cách làm việc cổ xưa rồi. Thời buổi công nghệ này bắt buộc phải đi theo phiên bản của phần mềm. Excel đã tới phiên bản 2016. Nếu không học DataModel là lạc hậu. Nếu nghĩ rằng VBA có thể làm được mọi thứ là không biết tự tiến bộ.
Công việc hầu như không liên quan đến CNTT, nên khi tác vụ phát sinh vượt vấn đề hàng ngày thì đòi hỏi mới tìm giải pháp.
Tiện thể bạn cho xin đường link giới thiệu/hướng dẫn DataModel.
Cảm ơn...
 

Bài viết mới nhất

Back
Top Bottom