Ngô Hải Đăng
Thành viên hoạt động



- Tham gia
- 31/8/17
- Bài viết
- 183
- Được thích
- 247
- Giới tính
- Nam
Code tô màu cũ của bạn đâu cho lên đây xem nào.Mình có 1 vùng dữ liệu gồm 360 hàng và 480 cột, mỗi ô chứa 1 giá trị màu. Cho mình hỏi là có cách nào tô màu nhanh vùng dữ liệu này ngoài cách dùng vòng lặp For và tô màu từng ô không? Vì nếu kích thước dữ liệu là 1000 x 1000 thì tô từng ô rất lâu.
Code của mình đâyCode tô màu cũ của bạn đâu cho lên đây xem nào.
Sub ToMau()
Dim mCell As Range
For Each mCell In [A1].CurrentRegion
mCell.Interior.Color = mCell
Next mCell
End Sub
Lúc bạn lấy giá trị màu đặt xuống cell sao bạn không tô màu lúc đó luôn?Bài toán này thực ra là có 2 phần. Phần 1 là lấy giá trị màu của từng pixel vô từng ô (Mình đã làm được). Còn phần 2 là tô màu, mình cũng làm được nhưng không biết có cách nào để tô nhanh hơn không, tô từng ô thì gặp những bức hình lớn thì nó chạy rất lâu.
Làm sao biết những ô nào cùng màu để gom? (trong số 1 triệu ô?)Màu trong một bức tranh sẽ có nhiều chỗ giống nhau, nếu vậy thì tô màu tất cả các ô cùng màu một lúc thì chắc tốc độ sẽ tăng thêm khoảng 500%
Thì cứ hớn hở mả duyệt từng phần tử trong mảng thui. bạn nào cuồng đít sần sài cũng được, ai đam mê ado chắc cũng nghĩ ra một cái tuyệt chiêu nào nào đó.Làm sao biết những ô nào cùng màu để gom? (trong số 1 triệu ô?)
nhiều ô mà sợ không khỏe thì chắc chia nhỏ theo lô khoảng 10000 ô, sau đó làm trên 10000 ôtrong số 1 triệu ô?
Phải biết suy nghĩ 1 chút. Dù chỉ 100 ô màu ngẫu nhiên như đề bài cũng không có cách nào biết ô nào giống ô nào để mà gom, ngoại trừ việc chạy vòng lặp duyệt qua đủ 100 ô đó.Thì cứ hớn hở mả duyệt từng phần tử trong mảng thui. bạn nào cuồng đít sần sài cũng được, ai đam mê ado chắc cũng nghĩ ra một cái tuyệt chiêu nào nào đó.
nhiều ô mà sợ không khỏe thì chắc chia nhỏ theo lô khoảng 10000 ô, sau đó làm trên 10000 ô
Lúc bạn lấy giá trị màu đặt xuống cell sao bạn không tô màu lúc đó luôn?
Lúc lấy giá trị màu xuống Cell em cũng dùng vòng lặp For mà gán vô mảng 2 chiều trước nên tốc độ nhanh hơn. Có cách để code tô màu chạy nhanh hơn là tắt ScreenUpdate do lệnh Interior.Color thao tác lên màn hình nên làm chậm code, mà em thì lại muốn giữ ScreenUpdate (có vẻ hơi mâu thuẫn).Có cách không chạy luôn, đó là thay vì gán số xuống thì tô màu luôn trong phần 1 như @ndu96081631 nói
Chắc sẽ suy nghĩ theo cách này.Màu trong một bức tranh sẽ có nhiều chỗ giống nhau, nếu vậy thì tô màu tất cả các ô cùng màu một lúc thì chắc tốc độ sẽ tăng thêm khoảng 500%
Giữ screen update làm gì, nếu giữ thì chậm là chắcLúc lấy giá trị màu xuống Cell em cũng dùng vòng lặp For mà gán vô mảng 2 chiều trước nên tốc độ nhanh hơn. Có cách để code tô màu chạy nhanh hơn là tắt ScreenUpdate do lệnh Interior.Color thao tác lên màn hình nên làm chậm code, mà em thì lại muốn giữ ScreenUpdate (có vẻ hơi mâu thuẫn).
Một cách khác không cần làm gì cả, chỉ cần.. tốn tiền là phải có 1 máy tính mạnh. Như máy tôi: core i5 thế hệ 8 + ram 8GB ---> Code chạy trong tích tắcGiữ screen update làm gì, nếu giữ thì chậm là chắc
Còn không giữ thì cũng chậm, vì tranh nhiều cells
Tuy thế 1 bức tranh thì phải chấp nhận, có những cái phải chấp nhận mất thời gian vì nó là hiển thị, so với làm tay còn nhanh hơn nhiều
Muốn nhanh thì hợp lại thành BMP hay JPG rồi gán xuống (thế lại thành bài toán ngược lại, cần chi gỡ ra cells)
Anh có cách chẳng cần vòng lặp gì cả, nhưng bây giờ bận tiếp bạn bè rồi, mai rảnh anh em mình uống coffee bàn tiếp.Một cách khác không cần làm gì cả, chỉ cần.. tốn tiền là phải có 1 máy tính mạnh. Như máy tôi: core i5 thế hệ 8 + ram 8GB ---> Code chạy trong tích tắc
Lót dép hóng tổ sư phụ không dùng vòng lặpAnh có cách chẳng cần vòng lặp gì cả, nhưng bây giờ bận tiếp bạn bè rồi, mai rảnh anh em mình uống coffee bàn tiếp.
máy em chạy lần đầu nhanh, mà chạy lần nữa thì mất 40s, hjkMột cách khác không cần làm gì cả, chỉ cần.. tốn tiền là phải có 1 máy tính mạnh. Như máy tôi: core i5 thế hệ 8 + ram 8GB ---> Code chạy trong tích tắc
Bạn tham khảo file này xem!Mình có 1 vùng dữ liệu gồm 360 hàng và 480 cột, mỗi ô chứa 1 giá trị màu. Cho mình hỏi là có cách nào tô màu nhanh vùng dữ liệu này ngoài cách dùng vòng lặp For và tô màu từng ô không? Vì nếu kích thước dữ liệu là 1000 x 1000 thì tô từng ô rất lâu.
Một rừng code nhìn hoa mắt luôn. Mà mình thấy cách tô vẫn là theo từng Cell giống mình.Bạn tham khảo file này xem!
nguồn: https://ramblings.mcpher.com/download-complete-projects/downloads/
Bác cho hỏi làm sao để lấy mã màu và gán vào cell như file gốc bác gửi lên đấyBài toán này thực ra là có 2 phần. Phần 1 là lấy giá trị màu của từng pixel vô từng ô (Mình đã làm được). Còn phần 2 là tô màu, mình cũng làm được nhưng không biết có cách nào để tô nhanh hơn không, tô từng ô thì gặp những bức hình lớn thì nó chạy rất lâu.
Mấy hôm nay xỉn quá về ngủ luôn, hôm nay tỉnh táo làm thử chơi cho vui, như đã nếu ở bài 16 không dùng vòng lặp chỉ sử dụng code sau:Lúc bạn lấy giá trị màu đặt xuống cell sao bạn không tô màu lúc đó luôn?
Nếu áp dụng vô dữ liệu ở bài #1 thì có được không anh?Mấy hôm nay xỉn quá về ngủ luôn, hôm nay tỉnh táo làm thử chơi cho vui, như đã nếu ở bài 16 không dùng vòng lặp chỉ sử dụng code sau:
Private Sub Worksheet_Change(ByVal Target As Range)
Dùng hàm API GetPixel của Windows, bác thử nghiên cứu xem.Bác cho hỏi làm sao để lấy mã màu và gán vào cell như file gốc bác gửi lên đấy
Chuẩn chỉnh luôn nè và bác bị người ta "yểm bùa yêu" lúc nào mà không biết, chủ thớt dùng cái vòng gì gì đó, và không được, chủ thớt ra nhận định là dùng cái vòng này là không có được, thế là kêu gọi tẩy chay cái vòng đó. Dám cá bạc triệu với bác là nếu ai dùng cái vòng nào đó mà búng trìu một cái ra kết quả, là chủ thớt mừng rơi nước mắt luôn. không phân biệt vòng to vòng nhỏ, kể cả vòng của chị em.....Trong khi đề bài muốn hỏi cách không dùng vòng lặp
Bạn đang tự diễn giải theo cách của mình đối với tác giả và đặc biệt là với tôi, không yêu đương gì sất.Chuẩn chỉnh luôn nè và bác bị người ta "yểm bùa yêu" lúc nào mà không biết, chủ thớt dùng cái vòng gì gì đó, và không được, chủ thớt ra nhận định là dùng cái vòng này là không có được, thế là kêu gọi tẩy chay cái vòng đó. Dám cá bạc triệu với bác là nếu ai dùng cái vòng nào đó mà búng trìu một cái ra kết quả, là chủ thớt mừng rơi nước mắt luôn. không phân biệt vòng to vòng nhỏ, kể cả vòng của chị em.....
Cảm ơn bác đã chia sẻ, có gì nữa bác chia sẽ nhé, yêu bác nhiều nhiều, hihiBạn đang tự diễn giải theo cách của mình đối với tác giả và đặc biệt là với tôi, không yêu đương gì sất.
Mình chỉ hỏi là còn cách nào khác không thôi, chứ có kêu gọi tẩy chay gì đâu. Bạn cứ nói quá không hà. Dù sao thì cũng nhờ cái gợi ý của bạn mà tìm thêm được cách phủ từng lớp màu lên bức ảnh.[/QUOTE]Chuẩn chỉnh luôn nè và bác bị người ta "yểm bùa yêu" lúc nào mà không biết, chủ thớt dùng cái vòng gì gì đó, và không được, chủ thớt ra nhận định là dùng cái vòng này là không có được, thế là kêu gọi tẩy chay cái vòng đó. Dám cá bạc triệu với bác là nếu ai dùng cái vòng nào đó mà búng trìu một cái ra kết quả, là chủ thớt mừng rơi nước mắt luôn. không phân biệt vòng to vòng nhỏ, kể cả vòng của chị em.....