Ctrl + ↓ thì phải xác định nó đang ở cột nào? Nên cho cái dữ liệu lên để xem quy luật tổng quát sẽ chính xác hơn là bấm 5 lầnGửi ACE
Mình đang bí ở khâu code tính tổng. quy luật là cứ ấn ctrl + End(xlDown) 5 lần thì sẽ sum của dãy số phía trên. lặp lại cho đến khi kết thúc bảng
Rất mong nhận được tư vấn của các bạn
Mình nghĩ ra cách rồi, bạn có thể giúp mình cấu trúc viết code vòng lặp kiểu như vậy đến hết trang tính không?Ctrl + ↓ thì phải xác định nó đang ở cột nào? Nên cho cái dữ liệu lên để xem quy luật tổng quát sẽ chính xác hơn là bấm 5 lần
Nếu là mình thì mình cũng sẽ chia sẻ file lên để biết đâu người khác có cách hay hơn.Mình nghĩ ra cách rồi, bạn có thể giúp mình cấu trúc viết code vòng lặp kiểu như vậy đến hết trang tính không?
Cảm ơn bạn.
Đây bạn ơi. tính tổng ở các vùng bôi cam cho số tiền phía trên. File mình nhiều dữ liệu lắm nên sẽ lặp lại liên tục, mình để lại 1 số để ví dụ.Nếu là mình thì mình cũng sẽ chia sẻ file lên để biết đâu người khác có cách hay hơn.
Rồi nếu bạn chỉ muốn hỗ trợ theo ý này của bạn thì cũng phải giải thích rõ:
Nhưng chốt lại là vẫn phải đem dữ liệu mẫu lên đây để ngắm tình hình!
- Dữ liệu bắt đầu từ ô nào
- Hết bảng là từ cột nào đến cột nào? không lẽ hơn 16 ngàn cột? Hay code tự xác định cột cuối trong file, hay như thế nào đó...
- Có chính xác là ctrl + ↓ 5 lần không, 5 lần mà nhảy xuống cuối bảng (dòng hơn 1 triệu) thì có sum hay không?
À là cái file ở cái bài gì hôm qua hỏi hả?Đây bạn ơi. tính tổng ở các vùng bôi cam cho số tiền phía trên. File mình nhiều dữ liệu lắm nên sẽ lặp lại liên tục, mình để lại 1 số để ví dụ.
Mình cũng thử theo cách đó, tuy nhiên vùng tổng nó khác nhau nên không biết đặt như nào, mình còn làm phức tạp lên là đặt biến dòng trên và dòng dưới kết hợp thành vùng tính tổng lại càng lằng nhằng .À là cái file ở cái bài gì hôm qua hỏi hả?
Đấy cứ cố chấp ctrl end(xldown) 5 lần, tại sao không xét cột B là * và ** thì sum tại cột H? Có phải chính xác hơn cái bạn đang nói không? Vì file này xuất ra từ phần mềm thì chắc chắn dòng tổng nào nó cũng có ký tự * này thôi
Mình cũng thử theo cách đó, tuy nhiên vùng tổng nó khác nhau nên không biết đặt như nào, mình còn làm phức tạp lên là đặt biến dòng trên và dòng dưới kết hợp thành vùng tính tổng lại càng lằng nhằng .
Chạy code file đính kèmMình cũng thử theo cách đó, tuy nhiên vùng tổng nó khác nhau nên không biết đặt như nào, mình còn làm phức tạp lên là đặt biến dòng trên và dòng dưới kết hợp thành vùng tính tổng lại càng lằng nhằng .
Ôi cảm ơn bạn nhiều nhé, đang vò đầu bứt tai nãy giờ, để mình nghiên cứu code.Chạy code file đính kèm
Có lựa chọn đối chiếu tháng luôn cho bạn (theo yêu cầu cái bài cũ nào đó)
Đúng rồi bạn, nhưng ko hiểu sao mình đặt find *** mà nó trả kết quả * hay ** đều trả ) . Bác nhattanknn đã giúp mình rồi.Có thể dữ liệu bạn đưa lên chưa bao quát.
Dòng có *** là tổng các dòng ** (trong phạm vi toàn bộ)
Như vậy dòng có ** sẽ là tổng các dòng * (trong phạm vi 1 vendor)
Hiện mỗi vendor chỉ có 1 dòng * và 1 dòng ** , nên 2 tổng này bằng nhau.
Mình đoán vậy thôi. Nếu đúng thì bạn đưa dữ liệu thật lên.
Cảm ơn bạn, đúng là cái file này chiết xuất từ phần mềm ra, nhưng mình chạy code của bạn Nhattan thì đúng ko thấy saiNhư bài #11 mình đã đề cập, bên trong *** (vùng ông nội) tất có nhiều vùng con ** (vùng cha) và bên trong ** tất có nhiều vùng con *
Trong VD bạn đưa lên mà bạn nhattan viết code, không tính đến điều này. Và kết quả sẽ sai.
Mình đoan chắc dữ liệu thật của bạn sẽ như mình nói. Vì file này xuất từ phần mềm ra, nên chắc chắn chẳng ai viết code mà dư 1 cái tổng **, nếu bên trong không có ít nhất 2 cái *
Hình đính kèm là code chạy sai.
Chữ đỏ bên cạnh là kq đúng.
Vùng dữ liệu từ A1:Ux, với x là số dòng mà nếu làm thủ công thì bạn để chuột ở dòng cuối cùng của bảng tại cột B (tức B1048576) --> Bấm ctrl + mũi tên lên (là end(xlup))Bạn cho mình hỏi câu lệnh này nghĩa là gì nhỉ? Nhất là đoạn chữ B, có phải cột B ko bạn?
Set Rng = .Range("A1:U" & .Cells(Rows.Count, "B").End(xlUp).Row)
Theo yêu cầu và dữ liệu thực tế của chủ thớt thì kết quả không hề sai, nó sai là do bác thêm dữ liệu vào và nói sai đấy chứ? Chưa kể là không chắc dữ liệu thực tế đã có nhiều mục con (*) như vậy. Còn nếu muốn tính thì rõ ràng dữ liệu phải có chứ làm sao tự đoán là dữ liệu họ có như vậy rồi tự tính được bác, phải xem dữ liệu bố trí thế nào để có phương án code chứ!Trong VD bạn đưa lên mà bạn nhattan viết code, không tính đến điều này. Và kết quả sẽ sai.
Thank bạn. bạn cho mình hỏi khai báo như này nghĩa là gì nữa nhé (vì mình quen khi khai báo biến thì phải gán với định dạng biến nào đó. )Vùng dữ liệu từ A1:Ux, với x là số dòng mà nếu làm thủ công thì bạn để chuột ở dòng cuối cùng của bảng tại cột B (tức B1048576) --> Bấm ctrl + mũi tên lên (là end(xlup))
Vùng màu đỏ trên phần trích dẫn là trả về số x đấy
Theo yêu cầu và dữ liệu thực tế của chủ thớt thì kết quả không hề sai, nó sai là do bác thêm dữ liệu vào và nói sai đấy chứ? Chưa kể là không chắc dữ liệu thực tế đã có nhiều mục con (*) như vậy. Còn nếu muốn tính thì rõ ràng dữ liệu phải có chứ làm sao tự đoán là dữ liệu họ có như vậy rồi tự tính được bác, phải xem dữ liệu bố trí thế nào để có phương án code chứ!
& : long -> i& ~ i as longThank bạn. bạn cho mình hỏi khai báo như này nghĩa là gì nữa nhé (vì mình quen khi khai báo biến thì phải gán với định dạng biến nào đó. )
Dim I&, Msg&, M, CompareCol&, sM&, Total#(1 To 3)
cảm ơn bạn nhé, giờ thông suốt rồi . Không biết bao giờ mới đạt level như các bạn trên này . giờ mình mới đang tìm hiểu.& : long -> i& ~ i as long
# : double -> Total#(1 to 3) ~ total(1 to 3) as double. Total này là mảng 1 chiều có cận dưới 1, cận trên 3
Nói thêm: Trong code trên, chỗ * và ** có kết quả bằng nhau, vì dữ liệu của bạn nó thế!
Mình thì đọc hiểu là mình trả lời nhưng các bác trên đây không thích dùng ngôn ngữ pha trộn vậy đâu, lần sau đăng bài muốn được nhiều người giúp đỡ thì bạn nên hạn chế điều nàyOkie, thank bạn nhé, giờ thông suốt rồi . Không biết bao giờ mới đạt level như các bạn trên này . giờ mình mới đang tìm hiểu.
cảm ơn bác nhé. Nhưng sao lại thế nhỉMình thì đọc hiểu là mình trả lời nhưng các bác trên đây không thích dùng ngôn ngữ pha trộn vậy đâu, lần sau đăng bài muốn được nhiều người giúp đỡ thì bạn nên hạn chế điều này