Xin giúp đỡ điền số ngẫu nhiên từ 1 đến 1048576 cho bảng có kích thước bằng một Sheet!

Liên hệ QC

Thư Sinh Áo Trắng

Thành viên hoạt động
Tham gia
26/3/21
Bài viết
160
Được thích
31
- Em cần kiểm tra một số hàm trong lớp Application (VBA) để biết giới hạn phần tử của nó. Nên cần tạo ra bảng dữ liệu có kích thước 1.048.576 hàng với 16.384 cột ( bằng kích thước của Sheet trong Excel 2013, ở phiên bản khác thì số cột và hàng lớn hơn nhỏ hơn em cũng chưa rõ).
- Em dùng hàm Rand()*1048576 nhưng oải quá. Thử qua làm bằng VBA thì lại Not Responding. Kết quả là cần một sheet tất cả các ô chưa số ngẫu nhiên từ 1 đến 1048576 mà chưa tạo ra được.
Mong các bác giúp em tạo ra một Sheet trong đó các ô chưa số ngẫu nhiên từ 1 đến 1048576 với ạ! Em xin cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Ghi xong lưu lại 2 tiếng đồng hồ sau báo tràn đĩa 100 Gb
Máy xịn. Theo như cách tính của bác @CHAOQUAY thì bảng kích thước bằng 1 sheet, các cells có kích thước 8 byte thì 137,4 Gb bác ạ. Cái này cho nó vào ổ trống hơn 140 Gb không biết còn lỗi không bác nhỉ? Mà file excel 140 Gb chắc chưa ai có.
 
Upvote 0
Máy xịn. Theo như cách tính của bác @CHAOQUAY thì bảng kích thước bằng 1 sheet, các cells có kích thước 8 byte thì 137,4 Gb bác ạ. Cái này cho nó vào ổ trống hơn 140 Gb không biết còn lỗi không bác nhỉ? Mà file excel 140 Gb chắc chưa ai có.
Máy tôi chạy thử bằng python 1000 cột và 1048576 dòng xong khoảng 4s, xuất file csv khoảng 4 phút tạo file 7G, Ram lưu cái data khoảng 4G, nếu chạy full chắc tầm trên 100GB, nếu xuất excel chắc cỡ 30GB, nếu xuất excel thì giờ lâu hơn csv tầm 10 lần, đang chạy đơn luồng nếu chạy đa luồng chắc cũng vậy có khi chậm hơn do phải chia tài nguyên1621701485604.png1621701267968.png
 
Upvote 0
Không giống Excel anh ơi.
Ghi xong là xong rồi. Nó can thiệp trực tiếp dữ liệu trên bộ nhớ ổ đĩa, không liên quan tí tẹo gì phần mềm MS Excel cả.
Ý anh nói đến cái dung lượng lưu trên ổ cứng, ngoài ra khi ghi trên excel chả lẽ không bao giờ mở file excel và lưu lại. Chỉ riêng việc mở file cho hiển thị lên màn hình cũng đã chết rồi.
Bài đã được tự động gộp:

Máy tôi chạy thử bằng python 1000 cột và 1048576 dòng xong khoảng 4s, xuất file csv khoảng 4 phút tạo file 7G, Ram lưu cái data khoảng 4G, nếu chạy full chắc tầm trên 100GB, nếu xuất excel chắc cỡ 30GB, nếu xuất excel thì giờ lâu hơn csv tầm 10 lần, đang chạy đơn luồng nếu chạy đa luồng chắc cũng vậy có khi chậm hơn do phải chia tài nguyên
Mới 1000 cột, nhân lên 13 ngàn cột (tính số học thôi) sẽ là mất 52 giây, xuất csv 52 phút, csv 100 Gb, excel 300 Gb, thời gian xuất excel 520 phút
 
Lần chỉnh sửa cuối:
Upvote 0
Máy tôi chạy thử bằng python 1000 cột và 1048576 dòng xong khoảng 4s, xuất file csv khoảng 4 phút tạo file 7G, Ram lưu cái data khoảng 4G, nếu chạy full chắc tầm trên 100GB, nếu xuất excel chắc cỡ 30GB, nếu xuất excel thì giờ lâu hơn csv tầm 10 lần, đang chạy đơn luồng nếu chạy đa luồng chắc cũng vậy có khi chậm hơn do phải chia tài nguyênView attachment 259229View attachment 259227
- Kích thước bảng dữ liệu bằng một Sheet chắc phải dùng tới máy tính lượng tử bác nhỉ?
- Bác làm cho em xin cái bảng 16384 cột và 16385 ( số dòng = số cột max + 1), có các cells là giá trị Double. Em không biết Python và theo cách tính của bác @CHAOQUAY thì file này 2 Gg. Thấy máy bác ghi 7 Gg mất 4 phút. Giúp em với
 
Upvote 0
- Bác làm cho em xin cái bảng 16384 cột và 16385 ( số dòng = số cột max + 1), có các cells là giá trị Double.
Bạn chỉnh lại sub Test trong bài #4:

Mã:
Sub test()
Dim t As Double
t = Timer
Application.ScreenUpdating = False
Dim r As Long
For r = 1 To 16385
    Range("A" & r).Resize(1, 16384).Value = MyRandom()
Next r
Application.ScreenUpdating = True
MsgBox Timer - t
End Sub

Máy tôi G3220, Ram 4G =>chạy 2000 dòng hết 40 giây
 
Upvote 0
Bạn chỉnh lại sub Test trong bài #4:

Mã:
Sub test()
Dim t As Double
t = Timer
Application.ScreenUpdating = False
Dim r As Long
For r = 1 To 16385
    Range("A" & r).Resize(1, 16384).Value = MyRandom()
Next r
Application.ScreenUpdating = True
MsgBox Timer - t
End Sub

Máy tôi G3220, Ram 4G =>chạy 2000 dòng hết 40 giây
Em xin bác!Hihi file 200M em mở thấy đơ đơ rồi, giờ hơn 2 Gb không biết sao. Chút em test ạ!
 
Upvote 0
- Kích thước bảng dữ liệu bằng một Sheet chắc phải dùng tới máy tính lượng tử bác nhỉ?
- Bác làm cho em xin cái bảng 16384 cột và 16385 ( số dòng = số cột max + 1), có các cells là giá trị Double. Em không biết Python và theo cách tính của bác @CHAOQUAY thì file này 2 Gg. Thấy máy bác ghi 7 Gg mất 4 phút. Giúp em với
Chaỵ trường hợp này thì mất 1s, xuất ra csv mất tầm 2p khoảng 260 triệu cell, tôi chuyển sang trường hợp tương đương là 90 triệu dòng và 3 cột, thời gian chạy và xuất cũng như trường hợp kia, connect excel bằng power query sau đó đưa vào data model, máy tôi load khoảng 600.000 dòng/s , tầm 4 phút load xong file csv 90 triệu , mở file excel chưa tới ...1s, dung lượng file excel1621747787965.png 8 800M.1621747762466.png1621747754487.png
 
Upvote 0
ngoài ra khi ghi trên excel chả lẽ không bao giờ mở file excel và lưu lại. Chỉ riêng việc mở file cho hiển thị lên màn hình cũng đã chết rồi.
Không cần anh ạ. Đã dùng Python thì dùng nó đọc luôn. Coi như máy tính không cài đặt phần mềm MS Excel ấy, file *.xlsx có vai trò lưu trữ dữ liệu thôi.
 
Upvote 0
Tóm lại nếu không có siêu máy tính hãy tạm gác lại mơ ước không khả thi
Vẫn phải tìm cách bác @HieuCD ạ. Thay vì thỉnh thoảng đi đánh cờ, thì chuyển sang ngâm cứu món này cũng biết thêm. Thấy cách bác @excel_lv1.5 áp dụng được.
Chaỵ trường hợp này thì mất 1s, xuất ra csv mất tầm 2p khoảng 260 triệu cell, tôi chuyển sang trường hợp tương đương là 90 triệu dòng và 3 cột, thời gian chạy và xuất cũng như trường hợp kia, connect excel bằng power query sau đó đưa vào data model, máy tôi load khoảng 600.000 dòng/s , tầm 4 phút load xong file csv 90 triệu , mở file excel chưa tới ...1s, dung lượng file excelView attachment 259250 8 800M.View attachment 259249View attachment 259248
Cho em xin file csv với bác, file mà có bảng 16385 x 16384 ấy bác
 
Upvote 0
Vẫn phải tìm cách bác @HieuCD ạ. Thay vì thỉnh thoảng đi đánh cờ, thì chuyển sang ngâm cứu món này cũng biết thêm. Thấy cách bác @excel_lv1.5 áp dụng được.

Cho em xin file csv với bác, file mà có bảng 16385 x 16384 ấy bác
Đây bạn 1.7G https://drive.google.com/file/d/1oqHHpc6TCeEBq3TL5DNfQrDFOvGbU5xF/view
Tóm lại nếu không có siêu máy tính hãy tạm gác lại mơ ước không khả thi
Không khả thi với bảng tính excel thôi, với big data thì case này là bình thường cần trên 32G Ram là đủ rồi bạn, chạy full 16 tỷ row python mất khoản 1 phút , dùng C## hay golang chắc vài s quá, để lưu cái data đó thì cần tối thiểu 32G Ram, chằng ai export cái lượng data lớn ra ổ cứng làm gì , nếu bắt buộc thì export ra csv là nhanh nhất rồi, excel vẫn cho lưu trữ Ram thông qua data model, không biết giới hạn bao nhiêu nhưng theo tôi biết thì data model power BI có giới hạn là 2GB tương đương với khoảng vài tỷ row
 
Upvote 0
Đây bạn 1.7G https://drive.google.com/file/d/1oqHHpc6TCeEBq3TL5DNfQrDFOvGbU5xF/view

Không khả thi với bảng tính excel thôi, với big data thì case này là bình thường cần trên 32G Ram là đủ rồi bạn, chạy full 16 tỷ row python mất khoản 1 phút , dùng C## hay golang chắc vài s quá, để lưu cái data đó thì cần tối thiểu 32G Ram, chằng ai export cái lượng data lớn ra ổ cứng làm gì , nếu bắt buộc thì export ra csv là nhanh nhất rồi, excel vẫn cho lưu trữ Ram thông qua data model, không biết giới hạn bao nhiêu nhưng theo tôi biết thì data model power BI có giới hạn là 2GB tương đương với khoảng vài tỷ row
Áy láy quá bác cất công up cho em file 1,7Gb. Em cố gắng lấy file có có bảng dữ liệu 16385 dòng và 16384 cột để kiểm tra một số hàm trong Application(VBA) để xem nó có nó có giới hạn không?
- Nếu bảng đó mà các hàm em định dùng mà vẫn được hỗ trợ thì yên tâm để phát triển tiếp các code VBA cho bài em đang làm.
- Nếu không hỗ trợ, thì chuyển sang ngôn ngữ lập trình khác.
Có lẽ nhờ kinh nghiệm của bác nên học ngôn ngữ lập trình nào ưu việt nhất để tính toán các ma trận lớn vừa có thế viết ra App cho Android trên chợ ứng dụng của Google. Khi học được để có nhiều hướng ứng dụng ngôn ngữ đó!
Em cảm ơn bác ạ!
 
Upvote 0
Áy láy quá bác cất công up cho em file 1,7Gb. Em cố gắng lấy file có có bảng dữ liệu 16385 dòng và 16384 cột để kiểm tra một số hàm trong Application(VBA) để xem nó có nó có giới hạn không?
- Nếu bảng đó mà các hàm em định dùng mà vẫn được hỗ trợ thì yên tâm để phát triển tiếp các code VBA cho bài em đang làm.
- Nếu không hỗ trợ, thì chuyển sang ngôn ngữ lập trình khác.
Có lẽ nhờ kinh nghiệm của bác nên học ngôn ngữ lập trình nào ưu việt nhất để tính toán các ma trận lớn vừa có thế viết ra App cho Android trên chợ ứng dụng của Google. Khi học được để có nhiều hướng ứng dụng ngôn ngữ đó!
Em cảm ơn bác ạ!
Tôi không biết về cái mảng code App cho điện thoại, tôi có tham gia các group lập trình trên Facebook đủ thể loại Data, Game, AI, Web, Machine learning, App...thấy ít người dùng Python, nhưng các tư vấn đều khuyên học Python đầu tiên, vì nó dễ học và đa hệ , hệ nào cũng mạnh nhưng không phải mạnh nhất, đến một lúc nào đó người ta sẽ chuyển sang ngôn ngữ khác phù hợp và tốt hơn, tôi học Python không phải vì nó dễ học vì hiện tại mảng công việc tôi đang theo nó đang là top 1 và các tool bây giờ đều có hỗ trợ scrip python. Nếu bạn đi theo cái mảng code App mà chưa có ngôn ngữ nào cụ thể thì học Python thử xem rồi từ từ học thêm java, C##... xem sao, còn các tính toán ma trận này kia như bạn nói thì các ngôn ngữ nó có library, package hỗ trợ hết rồi , tôi không biết VBA giúp được gì bạn trong việc code App nữa.
 
Upvote 0
Tôi không biết về cái mảng code App cho điện thoại, tôi có tham gia các group lập trình trên Facebook đủ thể loại Data, Game, AI, Web, Machine learning, App...thấy ít người dùng Python, nhưng các tư vấn đều khuyên học Python đầu tiên, vì nó dễ học và đa hệ , hệ nào cũng mạnh nhưng không phải mạnh nhất, đến một lúc nào đó người ta sẽ chuyển sang ngôn ngữ khác phù hợp và tốt hơn, tôi học Python không phải vì nó dễ học vì hiện tại mảng công việc tôi đang theo nó đang là top 1 và các tool bây giờ đều có hỗ trợ scrip python. Nếu bạn đi theo cái mảng code App mà chưa có ngôn ngữ nào cụ thể thì học Python thử xem rồi từ từ học thêm java, C##... xem sao, còn các tính toán ma trận này kia như bạn nói thì các ngôn ngữ nó có library, package hỗ trợ hết rồi , tôi không biết VBA giúp được gì bạn trong việc code App nữa.
- Vâng.
- Viết được game điện thoại thì kinh rồi!
- Khi viết được một chương trình chạy tốt với VBA, với mình khi đó là ưng rồi thì muốn chạy chương trình đó trên điện thoại cho tiện giống như kiểu App cho điện thoại Android. Lúc này lại phải học một ngôn ngữ lập trình cho Android để chuyển nó sang chạy trên điện thoại. Em chị sợ múc vào cái ngôn ngữ nào đó mà nó hạn chế tính toán ma trận như Excel thì mất công. Không biết nên theo anh nào vừa tính toán các ma trận mạnh mẽ mà viết được App cho Androi được. Được như vậy mới bõ công. Hay chăng là anh java
Nhờ các bác tư vấn cho em với!
 
Upvote 0
Tính toán ma trận thì python có numpy cũng mạnh. Với dữ liệu lớn thì có thể tách ma trận thành nhiều phần, lưu ở nhiều file khác nhau.
 
Upvote 0
Tính toán ma trận thì python có numpy cũng mạnh. Với dữ liệu lớn thì có thể tách ma trận thành nhiều phần, lưu ở nhiều file khác nhau.
Vụ tách nhỏ ma trận này này bác đang nói trên python hay vba ạ? Python thì em không biết, nếu VBA không xử lý được em chọn theo hướng ngôn ngữ lập trình đó vừa tính toán được ma trận lớn vừa viết ra app cho android được. Em không phải chuyên ngành lập trình mong nhận đc chia sẻ từ bác.
 
Upvote 0
Web KT

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

Back
Top Bottom