Nhờ mọi người viết hộ code tổng hợp số liệu, chân thành cảm ơn! (1 người xem)

Liên hệ QC

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

nguyen_thi_yen

Thành viên mới
Tham gia
1/11/15
Bài viết
15
Được thích
0
Nhờ mọi người trên diễn đàn có thể giúp mình code VBA trong Excel để tổng hợp số liệu theo từ SHEET_TONG tạo ra các sheet mới cho mỗi quận , mỗi quận là một sheet theo mẫu ở sheet bieu1. Quận tân bình em đã làm tay và đã tổng hợp xong theo mẫu ở biểu sheet bieu1, còn lại 2 quận nữa em chưa làm chưa mọi người viết giùm em , ở đây là em đưa lên 3 quận, để nhờ mọi người viết giùm, thật ra số liệu nó rất lớn, còn nhiều quận khác nữa, em chỉ đưa lên 3 quận, nhờ mọi người viết giùm em để tiện cho việc tổng hợp. Trong sheet SHEET_TONG còn có nhiều quận khác nữa.Hihi
Cảm ơn mọi người nhiều.
 

File đính kèm

Bạn chưa chú trọng đúng mức đế thiết kế CSDL, thể hiện ở các điểm sau:

(1) Khi xài VBA thì tên các trang tính không nên là tiếng Việt có dấu;

(2) Bạn thiếu tôn trọng tiếng Việt; Thể hiện ở những chổ: Đầu câu không viết hoa, danh từ riêng chưa viết hoa;

(3) Trật tự các trường trong trang tính 'Sheet_Tong' thể hiện tính tùy tiện của bạn:
Trường [Loại I] lại để ở cột trong khi đó loại II lại ở cột [D] & loại III ở cột [C]; Hay bạn muốn: Sinh con rồi mới sinh cha, sinh cháu giữ nhà rồi mới sinh ông?

(4) Bạn có 2 trường [Số lượng thùng] & [Số lượng hộp]; Tro9ng những trường hợp như vậy, người ta hay thiết lập 1 trường [Đơn vị tính] & trường kia sẽ là [Số lượng]
Bằng VBA hay bằng công thức đi chăng nữa, thiết kế của bạn sẽ hay trí não hơn để tìm & tổng hợp số liệu của bạn.

(*) Nếu là mình thì mình không dự định làm ra từng báo cáo số liệu từng quận huyện; m2 sẽ chì là 1 trang tính báo cáo số liệu của 1 đơn vị nào đó (quận/huyện) bất kì; Sau đó ta có thể chép đến nơi nào đó hay in ấn khi cần.
Làm như bạn là quá ư fí fạm tài nguyên của bạn & của quốc gia!

Mình bất nhẫn với những iêu cầu tạo ra nhiều trang tính hay nhiều file thế không biết!

Chúc cuối tuần bình an!
 
Upvote 0
Nhờ mọi người trên diễn đàn có thể giúp mình code VBA trong Excel để tổng hợp số liệu theo từ SHEET_TONG tạo ra các sheet mới cho mỗi quận , mỗi quận là một sheet theo mẫu ở sheet bieu1. Quận tân bình em đã làm tay và đã tổng hợp xong theo mẫu ở biểu sheet bieu1, còn lại 2 quận nữa em chưa làm chưa mọi người viết giùm em , ở đây là em đưa lên 3 quận, để nhờ mọi người viết giùm, thật ra số liệu nó rất lớn, còn nhiều quận khác nữa, em chỉ đưa lên 3 quận, nhờ mọi người viết giùm em để tiện cho việc tổng hợp. Trong sheet SHEET_TONG còn có nhiều quận khác nữa.Hihi
Cảm ơn mọi người nhiều.
Bạn có thể vào topic này để tham khảo thêm.
http://www.giaiphapexcel.com/forum/...m-code-tổng-hợp-từ-file-excel-tho-mẫu-cho-sẵn
 
Upvote 0
Cái này là yêu cầu mỗi quận một sheet mà anh, theo mẫu biểu ở sheet bieu1 mà. Viết thì không để ý chế không phải là không tôn trọng tiếng việt.
 
Upvote 0
(1) Khi xài VBA thì tên các trang tính không nên là tiếng Việt có dấu;

(2) Bạn thiếu tôn trọng tiếng Việt; Thể hiện ở những chổ: Đầu câu không viết hoa, danh từ riêng chưa viết hoa;

(3) Trật tự các trường trong trang tính 'Sheet_Tong' thể hiện tính tùy tiện của bạn:
Trường [Loại I] lại để ở cột trong khi đó loại II lại ở cột [D] & loại III ở cột [C]; Hay bạn muốn: Sinh con rồi mới sinh cha, sinh cháu giữ nhà rồi mới sinh ông?

(4) Bạn có 2 trường [Số lượng thùng] & [Số lượng hộp]; Tro9ng những trường hợp như vậy, người ta hay thiết lập 1 trường [Đơn vị tính] & trường kia sẽ là [Số lượng]
Bằng VBA hay bằng công thức đi chăng nữa, thiết kế của bạn sẽ hay trí não hơn để tìm & tổng hợp số liệu của bạn.

(*) Nếu là mình thì mình không dự định làm ra từng báo cáo số liệu từng quận huyện; m2 sẽ chì là 1 trang tính báo cáo số liệu của 1 đơn vị nào đó (quận/huyện) bất kì; Sau đó ta có thể chép đến nơi nào đó hay in ấn khi cần.
Làm như bạn là quá ư fí fạm tài nguyên của bạn & của quốc gia!

Mình bất nhẫn với những iêu cầu tạo ra nhiều trang tính hay nhiều file thế không biết!

Chúc cuối tuần bình an!

Em đã chỉnh sửa lại cấu trúc, mong nhận được sự giúp đỡ của các anh chị trên diễn đàn!
Xin chân thành cảm ơn!
 

File đính kèm

Upvote 0
Chào bạn nguyen_thi_yen,

Tôi đã phải xóa rất nhiều bài cùng nội dung của bạn post chen vào rất nhiều chủ đề khác nhau, bạn vui lòng chỉ post bài ở một topic và kiên nhẫn chờ đợi giải pháp. Theo kinh nghiệm của tôi, nếu bạn càng hối thúc người khác giúp bạn thì càng ít người muốn giúp bạn. Vì thế xin bạn hãy hãy kiên nhẫn chờ đợi câu trả lời của các thành viên và kiểm tra lại xem phần diễn đạt câu hỏi của bạn đã rõ ràng chưa?. Nếu bạn tiếp tục post đi post lại 1 bài ở nhiều topic tôi buộc phải xử lý nick của bạn theo quy định của diễn đàn.

Xin lỗi vì sự bất tiện này, vui lòng đọc quy định diễn đàn trước khi post bài.

Cảm ơn sự hợp tác của bạn.

HMT.
 
Upvote 0
Nhờ mọi người trên diễn đàn có thể giúp mình code VBA trong Excel để tổng hợp số liệu theo từ SHEET_TONG tạo ra các sheet mới cho mỗi quận , mỗi quận là một sheet theo mẫu ở sheet bieu1. Quận tân bình em đã làm tay và đã tổng hợp xong theo mẫu ở biểu sheet bieu1, còn lại 2 quận nữa em chưa làm chưa mọi người viết giùm em , ở đây là em đưa lên 3 quận, để nhờ mọi người viết giùm, thật ra số liệu nó rất lớn, còn nhiều quận khác nữa, em chỉ đưa lên 3 quận, nhờ mọi người viết giùm em để tiện cho việc tổng hợp. Trong sheet SHEET_TONG còn có nhiều quận khác nữa.Hihi
Cảm ơn mọi người nhiều.

Do bạn đăng bài nhiều nơi (vi phạm nội quy) giúp bạn cũng vi phạm nội quy luôn.

Cấu trúc dữ liệu của bạn cũng hơi kỳ cục nên việc giúp bạn cũng là 1 điều khó khăn, vì vậy tôi sửa lại cấu trúc 1 tí và dùng công cụ có sẳn là PivotTable để thực hiện việc tổng hợp, bạn xem File coi có đúng ý không?

Lưu ý:
- Để giảm dung lượng File nên tôi đã xóa sheet1 chứa dữ liệu, vì vậy muốn biết cấu trúc dữ liệu thì bạn click vào con số 1750 (tại AC21) và click đúp chuột nó sẽ xuất ra danh sách tổng.
- Để tính 1 quận thì tại B2 (có chữ All), bạn click vào chọn 1 quận bạn muốn tính và nhấn nút OK.
 

File đính kèm

Upvote 0
Góp í với bạn vài điều khó nghe, bạn chịu khó:

(1) CSDL cần có mã hàng;
Tuy trong trang 'Mau1' của bạn có mã mặt hàng, nhưng
Thứ nhất: Mã chả giống bình thường cho lắm & sẽ cực cho bạn & người khác khi xài mà thôi;
Mã nên có độ dài băng nhau (& với mình, mã luôn là chuỗi chứ không là số)
Thứ hai: Ở đó tuy có mã, nhưng ở trang CSDL thì không có tẹo mã nào, là sao?
Bạn cần thêm 1 cột & điền mã thích hợp cho đầy đủ.
(Nhưng trước đó bạn cần thực hiện mục (2):)

(2) Ở trang chứa dữ liệu (mà mình đã đổi tên thành 'CSDL') thỉ số lượng hàng hóa bạn ghi vô hoặc cột có tên [SL Thùng] & [SL Hộp]. Tuy nhiên rất nhiều dòng dữ liệu trong trang này ở cả 2 trường này đều không có số liệu;
Mình đã viết macro xóa hết các dòng này & như vậy từ 515 dòng dữ liệu còn lại 280 dòng thật chất mà thôi.

(*) Mình đã thêm trang tính 'FuTro' để nó trợ giúp chúng ta trong vấn đề lưu giữ các danh mục cần thiết trong quá trình vận hành CSDL.

Mình đề nghị bạn những điều như vậy, nếu bạn vẫn muốn xài VBA trong báo cáo sau này.

Nói điều cuối cùng với bạn:
Nếu không có mã duy nhất mặt hàng trong trang 'CSDL' thì sẽ là người rất tài VBA trên diễn đàn mới giúp được bạn; & mình cho rằng người đó chỉ hại bạn mà thôi, về lâu dài sau này!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem kĩ cấu trúc CSDL của mình & so sánh đi nha

Trong file chỉ tổng hợp theo 4 quận huyện

Vì đơn vị tính của bạn vừa có 'Thùng' lại có cả 'Hộp' trong 1 dòng dữ liệu, cho nên đang đưa ra khoảng 1 nữa số liệu cần tổng kết;
Bạn xem & kiểm tra về tính đúng đắn của số liệu & cho mình hay những điều chỉnh cần thiết.

Chúc tuần làm việc hiệu quả!
 

File đính kèm

Upvote 0
Cảm ơn bạn HYen17 đã giúp đỡ mình, cảm ơn bạn nhiều, bạn HYen17 có thể có mình email để mình liên hệ được không.
Xin cảm ơn!
 
Upvote 0
Thật cảm ơn bạn nhiều! do mình mới nên chưa biết nhiều, vâng mình cũng thấy cấu trúc rất kì, và cũng đã gửi rất nhiều bài này lên diễn đàn mong nhận được sự giúp đỡ. Mình biết rằng là không đúng, nhưng thật ra mình không biết gì về lập trình VBA nên khi sử lí bằng tay nó dễ bị sai và thiết sót, nên mình nhờ mấy bạn giúp đỡ, chế không biết làm sao nữa. Diễn đàn là nơi giao lưu học hỏi, mà mình thì tàn là nhờ không, z là sai không đúng, nhưng dù sao cũng cảm ơn bạn nhiều.
Xin cảm ơn HYen17
 
Upvote 0
Dạ, cảm ơn, nhưng không đúng theo quy định ạ.
ở đây là viết code VBA tổng hợp theo mẫu bieu1 ạ
Xin cảm ơn!
 
Upvote 0
Cảm ơn ChanhTQ@ nhiều nhen!
Hihi, để mình xem lại thử.
Chúc bạn ngày mới có nhiều niềm vui!
 
Upvote 0
Do bạn đăng bài nhiều nơi (vi phạm nội quy) giúp bạn cũng vi phạm nội quy luôn.

Cấu trúc dữ liệu của bạn cũng hơi kỳ cục nên việc giúp bạn cũng là 1 điều khó khăn, vì vậy tôi sửa lại cấu trúc 1 tí và dùng công cụ có sẳn là PivotTable để thực hiện việc tổng hợp, bạn xem File coi có đúng ý không?

Lưu ý:
- Để giảm dung lượng File nên tôi đã xóa sheet1 chứa dữ liệu, vì vậy muốn biết cấu trúc dữ liệu thì bạn click vào con số 1750 (tại AC21) và click đúp chuột nó sẽ xuất ra danh sách tổng.
- Để tính 1 quận thì tại B2 (có chữ All), bạn click vào chọn 1 quận bạn muốn tính và nhấn nút OK.
Dạ,cho mình xin lỗi.
 
Upvote 0
(1) CSDL cần có mã hàng;
Tuy trong trang 'Mau1' của bạn có mã mặt hàng, nhưng
Thứ nhất: Mã chả giống bình thường cho lắm & sẽ cực cho bạn & người khác khi xài mà thôi;
Mã nên có độ dài băng nhau (& với mình, mã luôn là chuỗi chứ không là số)
Thứ hai: Ở đó tuy có mã, nhưng ở trang CSDL thì không có tẹo mã nào, là sao?
Bạn cần thêm 1 cột & điền mã thích hợp cho đầy đủ.
(Nhưng trước đó bạn cần thực hiện mục (2):)

(2) Ở trang chứa dữ liệu (mà mình đã đổi tên thành 'CSDL') thỉ số lượng hàng hóa bạn ghi vô hoặc cột có tên [SL Thùng] & [SL Hộp]. Tuy nhiên rất nhiều dòng dữ liệu trong trang này ở cả 2 trường này đều không có số liệu;
Mình đã viết macro xóa hết các dòng này & như vậy từ 515 dòng dữ liệu còn lại 280 dòng thật chất mà thôi.

(*) Mình đã thêm trang tính 'FuTro' để nó trợ giúp chúng ta trong vấn đề lưu giữ các danh mục cần thiết trong quá trình vận hành CSDL.

Mình đề nghị bạn những điều như vậy, nếu bạn vẫn muốn xài VBA trong báo cáo sau này.

Nói điều cuối cùng với bạn:
Nếu không có mã duy nhất mặt hàng trong trang 'CSDL' thì sẽ là người rất tài VBA trên diễn đàn mới giúp được bạn; & mình cho rằng người đó chỉ hại bạn mà thôi, về lâu dài sau này!
Thật cảm ơn bạn nhiều! do mình mới nên chưa biết nhiều, vâng mình cũng thấy cấu trúc rất kì, và cũng đã gửi rất nhiều bài này lên diễn đàn mong nhận được sự giúp đỡ. Mình biết rằng là không đúng, nhưng thật ra mình không biết gì về lập trình VBA nên khi sử lí bằng tay nó dễ bị sai và thiết sót, nên mình nhờ mấy bạn giúp đỡ, chế không biết làm sao nữa. Diễn đàn là nơi giao lưu học hỏi, mà mình thì tàn là nhờ không, z là sai không đúng, nhưng dù sao cũng cảm ơn bạn nhiều.
 
Upvote 0
Trong file chỉ tổng hợp theo 4 quận huyện

Vì đơn vị tính của bạn vừa có 'Thùng' lại có cả 'Hộp' trong 1 dòng dữ liệu, cho nên đang đưa ra khoảng 1 nữa số liệu cần tổng kết;
Bạn xem & kiểm tra về tính đúng đắn của số liệu & cho mình hay những điều chỉnh cần thiết.

Chúc tuần làm việc hiệu quả!
Vâng, cảm ơn bạn nhiều nha, mình rất vui khi nhận được câu trả lời của các bạn, chúc bạn ngày mới có nhiều niềm vui. Mình sẽ xem lại và có gì có thể hỏi bạn nha! Cảm ơn bạn nhiều, nếu như bạn không trả lời chắc mình làm tay, nhưng thời gian dài, và độ chính xác nó thấp nữa. Cảm ơn bạn. Có gì mình sẽ hỏi bạn nha! Mình sẽ xem lại.
 
Upvote 0
Các ngày nghỉ thì iêm hơi, lặng tiếng; Hôm nay lên sổ 1 đống bài

Nhưng lần sau muốn trả lời cho ai thì trích dẩn 1 vài câu của người đó nha; Nói trống không ai biết mình muốn nói chuyện với ai trong cộng đồng!


Còn đây là 1 cách làm, bạn fát biểu cảm tưởng xem sao.
 

File đính kèm

Upvote 0
(1) CSDL cần có mã hàng;
Tuy trong trang 'Mau1' của bạn có mã mặt hàng, nhưng
Thứ nhất: Mã chả giống bình thường cho lắm & sẽ cực cho bạn & người khác khi xài mà thôi;
Mã nên có độ dài băng nhau (& với mình, mã luôn là chuỗi chứ không là số)
Thứ hai: Ở đó tuy có mã, nhưng ở trang CSDL thì không có tẹo mã nào, là sao?
Bạn cần thêm 1 cột & điền mã thích hợp cho đầy đủ.
(Nhưng trước đó bạn cần thực hiện mục (2):)

(2) Ở trang chứa dữ liệu (mà mình đã đổi tên thành 'CSDL') thỉ số lượng hàng hóa bạn ghi vô hoặc cột có tên [SL Thùng] & [SL Hộp]. Tuy nhiên rất nhiều dòng dữ liệu trong trang này ở cả 2 trường này đều không có số liệu;
Mình đã viết macro xóa hết các dòng này & như vậy từ 515 dòng dữ liệu còn lại 280 dòng thật chất mà thôi.

(*) Mình đã thêm trang tính 'FuTro' để nó trợ giúp chúng ta trong vấn đề lưu giữ các danh mục cần thiết trong quá trình vận hành CSDL.

Mình đề nghị bạn những điều như vậy, nếu bạn vẫn muốn xài VBA trong báo cáo sau này.

Nói điều cuối cùng với bạn:
Nếu không có mã duy nhất mặt hàng trong trang 'CSDL' thì sẽ là người rất tài VBA trên diễn đàn mới giúp được bạn; & mình cho rằng người đó chỉ hại bạn mà thôi, về lâu dài sau này!
Mình cũng mong Anh ChanhTQ@ giúp em viết code tổng hợp dữ liệu như bạn nguyen_thi_yen với.Mong nhận được sự giúp đỡ của Anh! Xin cảm ơn Anh ChanhTQ@.
 
Upvote 0
Mình cũng mong Anh ChanhTQ@ giúp em viết code tổng hợp dữ liệu như bạn nguyen_thi_yen với.Mong nhận được sự giúp đỡ của Anh! Xin cảm ơn Anh ChanhTQ@.

Vậy file mẫu của bạn có giống i xì như file trên không?

Nếu hầu như giống nhau thì xem file đó đi; Bằng ngược lại thì nên đưa file lên; Kèm theo ~ iêu cầu càng nhanh được trả lời đúng/chính xác.
 
Upvote 0
Dạ, file của em đây ạ. Nó khác với của bạn nguyen_thi_yen. Mong các bạn giúp đỡ ạ. Xin cảm ơn
file đây ạ
Mong Anh ChanhTQ@ giúp ạ.
Mong sớm nhận được câu trả lời của Anh ạ.
Cảm ơn Anh ChanhTQ@!
 

File đính kèm

Upvote 0
Dạ, file đây ạ. Mong các bạn giúp đỡ ạ. Xin cảm ơn
Mong Anh ChanhTQ@ giúp ạ.
Mong sớm nhận được câu trả lời của Anh ạ.
Cảm ơn Anh
Để nhận được câu trả lời nhanh, chúng ta cần làm rõ vấn đề sau:
(1) Trong biểu mẫu báo cáo bạn cần báo cáo đến 10 loại rừng; Trong đó gồm 4 loại đặc dụng, 4 loại fòng hộ, loại MDK & cuối cùng là loại ngoài qui hoạch
Nhưng trong trang 'CSDL' chỉ có 4+1 loại rừng là (BTTN, MDK, PHDN, SXGN & " ")
Vậy chỉ cần báo cáo số liệu 5 loại rừng sau thôi hay fải làm cho cả 10 loại rừng?
(& loại rừng để trống đó cho vô đâu?)
Nẫy giờ mình mất gần 1 giờ để chỉnh trang CSDL của bạn; Những mong là nó không uổng công!
 
Upvote 0
Chờ bạn lâu quá & mình đã mần đến cây cao su rồi đó;

Bạn kiểm tra số liệu thử xem sao.

Có điều này hỏi luôn bạn:
Chúng ta sẽ tổng hợp số liệu trên 2 trường [mgolo] & [mtnlo]
Nếu 1 khi cả 2 trường này trong 1 dòng đều bằng 0 ta nên xóa đi những đó, được chứ?
Nếu xóa đi thì CSDL của bạn sẽ về diêm vương cả ngàn dòng, bạn nghĩ sao về việc này?
 

File đính kèm

Upvote 0
Dạ, file của em đây ạ. Nó khác với của bạn í. Mong các bạn giúp đỡ ạ. Xin cảm ơn
file đây ạ
Mong Anh ChanhTQ@ giúp câu trả lời ạ.
Cảm ơn Anh ChanhTQ@!

Bạn này ít vô diễn đàn thật í!

Đến các liại cây rừng thì tắt tị; Đành chờ vậy thôi!

BS:
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn Anh ChanhTQ@ nhiều nha, em đã làm được rồi, xin lỗi Anh ChanhTQ@ vì đã không trả lời sớm được, đã làm phiền Anh nhiều.
Xin lỗi Anh nha.
 
Upvote 0
(1) CSDL cần có mã hàng;
Tuy trong trang 'Mau1' của bạn có mã mặt hàng, nhưng
Thứ nhất: Mã chả giống bình thường cho lắm & sẽ cực cho bạn & người khác khi xài mà thôi;
Mã nên có độ dài băng nhau (& với mình, mã luôn là chuỗi chứ không là số)
Thứ hai: Ở đó tuy có mã, nhưng ở trang CSDL thì không có tẹo mã nào, là sao?
Bạn cần thêm 1 cột & điền mã thích hợp cho đầy đủ.
(Nhưng trước đó bạn cần thực hiện mục (2):)

(2) Ở trang chứa dữ liệu (mà mình đã đổi tên thành 'CSDL') thỉ số lượng hàng hóa bạn ghi vô hoặc cột có tên [SL Thùng] & [SL Hộp]. Tuy nhiên rất nhiều dòng dữ liệu trong trang này ở cả 2 trường này đều không có số liệu;
Mình đã viết macro xóa hết các dòng này & như vậy từ 515 dòng dữ liệu còn lại 280 dòng thật chất mà thôi.

(*) Mình đã thêm trang tính 'FuTro' để nó trợ giúp chúng ta trong vấn đề lưu giữ các danh mục cần thiết trong quá trình vận hành CSDL.

Mình đề nghị bạn những điều như vậy, nếu bạn vẫn muốn xài VBA trong báo cáo sau này.

Nói điều cuối cùng với bạn:
Nếu không có mã duy nhất mặt hàng trong trang 'CSDL' thì sẽ là người rất tài VBA trên diễn đàn mới giúp được bạn; & mình cho rằng người đó chỉ hại bạn mà thôi, về lâu dài sau này!
Chào Anh ChanhTQ@! Em có đoạn code trong file work, em nhờ Anh giải thích giùm em đoạn code trong work này với, em đọc mà em không biểu, đoạn code này cũng dài lắm ạ. Anh giải thích giùm ý nghĩa của các dòng lệnh ạ. Mong sớm nhận được sự hồi âm của Anh ChanhTQ@ và mọi người trên diễn đàn ạ.
file đây Anh.
 

File đính kèm

Upvote 0
Em cảm ơn anh ChanhTQ@ nhiều, em thấy anh tận tình giúp đỡ mọi người trên diễn đàn, em thấy đấy là một hành động tốt mà ít có người làm. Xin lỗi anh ChanhTQ@ vì lần trước đã trả lời anh muộn. Một lần nữa xin lỗi anh!
 
Upvote 0
Chào Anh; Em có đoạn code trong file work, em nhờ Anh giải thích giùm em đoạn code trong work này với; đoạn code này cũng dài lắm ạ. Anh giải thích giùm ý nghĩa của các dòng lệnh ạ. Mong sớm nhận được sự hồi âm của Anh & mọi người trên diễn đàn ạ.
file đây Anh.

Rất tiếc là mình không thể đọc được file; Có lẽ do máy cà tèng quá đi rồi!
 
Upvote 0
Rất tiếc là mình không thể đọc được file; Có lẽ do máy cà tèng quá đi rồi!
Nội dung trong file đây ạ
Mong Anh ChanhTQ@ giải thích giùm em nha!
Module1:
Public Sub Lap_Nhieu_Xa()
Dim Tinh, Huyen, DSXa As Range, Ws As Worksheet, Cll As Range
CSDL = Sheet1.UsedRange
BangMa = Sheet3.UsedRange
Call LapThongSo
Call MaBieu1B

Tinh = Sheet2.Range("B2")
Huyen = Sheet2.Range("B3")
Set DSXa = Sheet2.Range("A6").CurrentRegion

Application.DisplayAlerts = False
For Each Ws In Worksheets
If Ws.Name <> "CSDL" And Ws.Name <> "TONG" And Ws.Name <> "MA1B" And Ws.Name <> "GOC1B" Then
Ws.Delete
End If
Next Ws

For Each Cll In DSXa
Sheets("GOC1B").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Visible = True
Sheets(Sheets.Count).Name = Cll.Value

With Sheets(Cll.Value).Activate
Call Tinh_Toan_1B(Tinh, Huyen, Cll.Value)
Call DienCongThuc
Sheets(Cll.Value).Tab.ThemeColor = xlThemeColorAccent6
End With
Next Cll
Application.DisplayAlerts = True
End Sub

Private Sub LapThongSo()
Dim CayDS, Tam, r As Long, rw As Integer

CayDS = Sheet3.Range("C113", Sheet3.Range("D113").End(xlDown))
ReDim ThongSo(1 To UBound(CSDL), 1 To 7)

'1-2 NgSinh-Trong,3SanXuat-Khac, 4 Lapdia, 5 LoaiCay, 6-8 TruLuong
For r = 2 To UBound(CSDL)
Tam = IIf(CSDL(r, 29) = "MDK", 0, IIf(Left(CSDL(r, 29), 2) = "SX", 3, CSDL(r, 29)))

If Tam <> "" Then
If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43) & " " Tam
If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21) & " " &Tam

If CSDL(r, 17) <> "" Then
For rw = 1 To UBound(CayDS)
If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
ThongSo(r, 3) = CayDS(rw, 2) & " " & Tam
End If
Next rw
If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17) & " " & Tam
End If

ThongSo(r, 4) = CSDL(r, 27) & " " & Tam
ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2)) & " " & Tam

If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K" & " " & Tam
If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N" & " " & Tam
If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB" & " " & Tam
If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G" & " " & Tam

If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K" & " " & Tam
If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N" & " " & Tam
If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB" & " " & Tam
If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G" & " " & Tam

Else
If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43)
If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21)

If CSDL(r, 17) <> "" Then
For rw = 1 To UBound(CayDS)
If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
ThongSo(r, 3) = CayDS(rw, 2)
End If
Next rw
If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17)
End If

ThongSo(r, 4) = CSDL(r, 27)
ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2))

If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K"
If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N"
If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB"
If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G"

If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K"
If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N"
If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB"
If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G"
End If

Next r
End Sub


Private Sub MaBieu1B()
Dim LoaiRung, HangMuc, r As Long, c As Long
Dim Tam, Chuoi()

With Sheet5
LoaiRung = .Range("A9", .Range("A1000000").End(xlUp))
HangMuc = .Range("D8:P8")
ReDim Chuoi(1 To UBound(LoaiRung), 1 To 1)
End With

For r = 1 To UBound(LoaiRung)
If IsNumeric(Left(LoaiRung(r, 1), 1)) = True Then
Tam = Tim(LoaiRung(r, 1), BangMa, 6, 4)
Chuoi(r, 1) = Tam
Else
If Left(LoaiRung(r, 1), 1) = " " Then Chuoi(r, 1) = Trim(Tam & " " & Tim(LoaiRung(r, 1), BangMa, 6, 4))
End If
Next r

For r = 1 To UBound(LoaiRung) - 1
If IsNumeric(Left(LoaiRung(r, 1), 1)) = True And Left(LoaiRung(r + 1, 1), 1) = " " Then
Chuoi(r, 1) = ""
End If
Next r

For c = 1 To UBound(HangMuc, 2)
If Tim(HangMuc(1, c), BangMa, 6, 4) <> "" Then

Tam = Tim(HangMuc(1, c), BangMa, 6, 4)
For r = 1 To UBound(Bieu1B)
If Chuoi(r, 1) <> "" Then
Bieu1B(r, c) = Chuoi(r, 1) & " " & Tam
End If
Next r

End If
Next c
End Sub


Public Sub Tinh_Toan_1B(Tinh, Huyen, Xa)
Dim TenXa, Tam, Dau, Cuoi, DonVi, BaoCao(), r As Long, c As Long, cl As Long

Range("C3") = Tinh
Range("B3") = Huyen
Range("A3") = Xa
Range("A3:C3").Font.Size = 10
Range("A3:C3").Font.Bold = 1
TenXa = Range("A3")

DonVi = Range("C9:C49")
ReDim BaoCao(1 To UBound(Bieu1B), 1 To UBound(Bieu1B, 2))

For r = 2 To UBound(CSDL)
If TenXa = CSDL(r, 6) Then
Dau = r
Exit For
End If
Next r

For r = UBound(CSDL) To Dau + 1 Step -1
If TenXa = CSDL(r, 6) Then
Cuoi = r
Exit For
End If
Next r

For r = 1 To UBound(Bieu1B)
For c = 1 To UBound(Bieu1B, 2)
If Bieu1B(r, c) <> "" Then
Tam = Dong(Bieu1B(r, c), ThongSo, Dau, Cuoi)
Tam = Split(Tam)
If IsArray(Tam) = True Then
For cl = 0 To UBound(Tam)
BaoCao(r, c) = BaoCao(r, c) + CSDL(Tam(cl), IIf(Len(DonVi(r, 1)) < 4, 25, 26))
Next cl
End If
End If
Next c
Next r

Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)).ClearContents
Range("D9").Resize(UBound(Bieu1B), UBound(Bieu1B, 2)) = BaoCao
End Sub

Private Sub DienCongThuc()
Dim DL, Dau, Cuoi, Dong, r As Long, rw As Long, c As Long
Application.ScreenUpdating = False

Dong = Range("A1000000").End(xlUp).Row
DL = Range(Cells(1, 1), Cells(Dong + 1, 16))

For r = 9 To Dong
If IsNumeric(Left(DL(r, 1), 1)) = True Then
If Left(DL(r + 1, 1), 1) = " " Then
Dau = r + 1
For rw = Dau To Dong
If Left(DL(rw, 1), 1) <> " " Then Exit For
Next rw
Cuoi = rw - Dau

For c = 5 To 16
If c <> 10 And c <> 5 Then
Cells(r, c) = "=sum(R[1]C:R[" & Cuoi & "]C)"
End If
Next c
End If
End If

For c = 5 To 16
If c <> 10 And c <> 5 Then
Cells(9, c) = "=R[1]C+R[4]C+R[8]C"
Cells(20, c) = "=R[1]C+R[2]C+R[3]C+R[7]C"
Cells(44, c) = "=R[1]C+R[2]C+R[3]C+R[4]C"
End If
Next c

If UCase(Left(Cells(r, 1), 3)) <> "III" Then
Cells(r, 4) = "=RC[1]+RC[6]+RC[11]+RC[12]"
Cells(r, 5) = "=RC[1]+RC[2]+RC[3]+RC[4]"
Cells(r, 10) = "=RC[1]+RC[2]+RC[3]+RC[4]"
End If
If Range("A" & r).Font.Bold = True Then
Range("C" & r, "P" & r).Font.Bold = True
End If
Next r

Range("D8", "P" & Dong).Style = "comma"
Range("A1", "P" & Dong).Font.Size = 9
Range("A1", "P" & Dong).Font.Name = "Times New Roman"
Range("D8", "P" & Dong).Columns.AutoFit
Range("D8").RowHeight = 0
Range("A5", "P" & Range("A1000000").End(xlUp).Row).Borders.LineStyle = 1
Application.ScreenUpdating = True
End Sub
Module2:
Public CSDL, ThongSo, BangMa, Bieu1B(1 To 40, 1 To 13), MTinh, CTinh, CHuyen, MHuyen, CXa

Public Sub CapNhat()
Call SapXepCSDL
Call Lap_DanhSach
End Sub

Private Sub Lap_DanhSach()
Dim r, Nguon
Nguon = Sheet1.UsedRange

Set DicDd1 = New Scripting.Dictionary
Set DicDd2 = New Scripting.Dictionary
For r = 2 To UBound(Nguon)
If InStr(DicDd1.Item(Nguon(r, 50)), Nguon(r, 51)) = 0 Then
DicDd1.Item(Nguon(r, 50)) = DicDd1.Item(Nguon(r, 50)) & IIf(DicDd1.Item(Nguon(r, 50)) = "", "", ",") & Nguon(r, 51)
End If

If InStr(DicDd2.Item(Nguon(r, 51)), Nguon(r, 6)) = 0 Then
DicDd2.Item(Nguon(r, 51)) = DicDd2.Item(Nguon(r, 51)) & IIf(DicDd2.Item(Nguon(r, 51)) = "", "", ",") & Nguon(r, 6)
End If
Next r

MTinh = DicDd1.keys
CTinh = Join(DicDd1.keys, ",")
CHuyen = DicDd1.items
MHuyen = DicDd2.keys
CXa = DicDd2.items

With Sheet2
.Range("B2").Interior.ColorIndex = 6
.Range("B2").Validation.Delete
.Range("B2").Validation.Add xlValidateList, , , CTinh
.Range("B2") = Split(CTinh, ",")(0)
End With

Set DicDd1 = Nothing
Set DicDd2 = Nothing
End Sub

Private Sub SapXepCSDL()
With Sheet1
.Range("A1", .Range("AY1000000").End(xlUp)).Sort key1:=.Range("F1"), Header:=xlYes
End With
End Sub

Public Function Tim(GiaTri, Mang, CotTim, Cotkq)
Dim i, j
For i = 1 To UBound(Mang)
If GiaTri = Mang(i, CotTim) Then
j = j + 1
Tim = Mang(i, Cotkq)
Exit For
End If
Next i

If j = "" Then Tim = ""
End Function

Public Function Dong(Chuoi, Mang, Dau, Cuoi)
Dim r, c

For r = Dau To Cuoi
For c = 1 To UBound(Mang, 2)
If Mang(r, c) = Chuoi Then
Dong = Dong & " " & r
End If
Next c
Next r
Dong = Trim(Dong)
End Function
Sheet2(TONG)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Tam, c

If Target.Address = "$B$2" Then
Range("B3").Validation.Delete

For c = 0 To UBound(MTinh)
If Range("B2") = MTinh(c) Then Exit For
Next c

Range("B3").Validation.Add xlValidateList, , , CHuyen(c)
Range("B3") = Split(CHuyen(c), ",")(0)
Range("B3").Interior.ColorIndex = 6
End If


If Target.Address = "$B$3" Then
For c = 0 To UBound(MHuyen)
If Range("B3") = MHuyen(c) Then Exit For
Next c
Range("B4").Validation.Delete
Range("B4").Validation.Add xlValidateList, , , CXa(c)
Range("B4") = Split(CXa(c), ",")(0)
Range("B4").Interior.ColorIndex = 6

Tam = Split(CXa(c), ",")
Range("A6", Range("A6").End(xlDown)).ClearContents
Range("A6").Resize(UBound(Tam) + 1, 1) = Application.Transpose(Tam)
End If

End Sub
 
Upvote 0
PHP:
Option Explicit

Public Sub Lap_Nhieu_Xa()
 Dim Tinh, Huyen, DSXa As Range, Ws As Worksheet, Cll As Range
 
2 CSDL = Sheet1.UsedRange
 BangMa = Sheet3.UsedRange
4 Call LapThongSo
 Call MaBieu1B
6 Tinh = Sheet2.Range("B2")
 Huyen = Sheet2.Range("B3")
8 Set DSXa = Sheet2.Range("A6").CurrentRegion
 Application.DisplayAlerts = False
10 For Each Ws In Worksheets
    If Ws.Name <> "CSDL" And Ws.Name <> "TONG" And Ws.Name <> "MA1B" And Ws.Name <> "GOC1B" Then
12        Ws.Delete
    End If
14 Next Ws
 For Each Cll In DSXa
16    Sheets("GOC1B").Copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Visible = True
18    Sheets(Sheets.Count).Name = Cll.Value
    With Sheets(Cll.Value).Activate
20        Call Tinh_Toan_1B(Tinh, Huyen, Cll.Value)
        Call DienCongThuc
22        Sheets(Cll.Value).Tab.ThemeColor = xlThemeColorAccent6
    End With
24 Next Cll
 Application.DisplayAlerts = True
End Sub

Private Sub LapThongSo()
 Dim CayDS, Tam, r As Long, rw As Integer

26 CayDS = Sheet3.Range("C113", Sheet3.Range("D113").End(xlDown))
 ReDim ThongSo(1 To UBound(CSDL), 1 To 7)
'1-2 NgSinh-Trong,3SanXuat-Khac, 4 Lapdia, 5 LoaiCay, 6-8 TruLuong  '
28 For r = 2 To UBound(CSDL)
    Tam = IIf(CSDL(r, 29) = "MDK", 0, IIf(Left(CSDL(r, 29), 2) = "SX", 3, CSDL(r, 29)))
30    If Tam <> "" Then
        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43) & " " & Tam
32        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21) & " " & Tam
        If CSDL(r, 17) <> "" Then
34            For rw = 1 To UBound(CayDS)
                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
36                    ThongSo(r, 3) = CayDS(rw, 2) & " " & Tam
                End If
38            Next rw
            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17) & " " & Tam
40        End If
        ThongSo(r, 4) = CSDL(r, 27) & " " & Tam
42        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2)) & " " & Tam
        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K" & " " & Tam
44        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N" & " " & Tam
        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB" & " " & Tam
46        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G" & " " & Tam
        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K" & " " & Tam
48        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N" & " " & Tam
        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB" & " " & Tam
50        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G" & " " & Tam
    Else
52        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43)
        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21)
54        If CSDL(r, 17) <> "" Then
            For rw = 1 To UBound(CayDS)
56                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
                    ThongSo(r, 3) = CayDS(rw, 2)
58                End If
            Next rw
60            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17)
        End If
62        ThongSo(r, 4) = CSDL(r, 27)
        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2))
64        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K"
        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N"
66        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB"
        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G"
68        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K"
        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N"
70        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB"
        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G"
72    End If
 Next r
End Sub

Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1: Khai báo các biến cần dùng;
D2: Đem dữ liệu vùng đã dùng ở trang Sheet1 gán vô biến CSDL đã khai báo; Ở dòng 27 ta mới biết đây là 1 biến mảng dùng chung. Biến này mang tính toàn cục để xài được chí ít trong 2 macro ta đang khảo sát.
D3: Tương tự đem vùng đã dùng của trang Sheet3 gán vô biến BangMa đã khai báo
D4: Triệu gọi macro ‘LapThongSo’

Diễn dịch macro ‘LapThongSo’
D25: Khai báo các biến cần xài
D26: Đem vùng ô bắt đầu từ ô [C113] cho tới ô có dữ liệu liên tục kể từ [D113] trở xuống dưới gán vô biến đối tượng ‘CayDS’
D27: Khai báo 1 mảng có số dòng bằng với số dòng trong mảng CSDL, & 7 cột
D28: Tạo vòng lặp để duyệt dữ liệu chứa trong mảng CSDL, bắt đầu từ dòng 2 cho đến cuối;
Vòng lặp này kết thúc tại dòng lệnh D73 (Dòng cuối macro này)
D29: Bién ‘Tam’ được gán trị theo 3 điều kiện:
a./ Trị 0, nếu trị trong mảng CSDL thuộc dòng đang duyệt & cột 29 là “MDK”
b./ Trị 3, nếu 2 kí tự đầu của trị tại dòng đang duyệt & cột 29 là “SX”;
c./ Trị chính bằng trị đang ở dòng đang duyệt, cột 29 của mảng CSDL
D30: Điều kiện (Đ/K) trị trong biến ‘Tam’ khác rỗng thì thực hiện các lệnh từ dòng kế tiếp đến dòng D51
Ngược lại sẽ thực hiện các lệnh từ dòng 52 đến dòng 71
D31: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =1 thì trị tại cùng dòng & cột 1 của mảng ‘ThongSo’ sẽ nhận giá trị “1” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D32: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =2 thì trị tại cùng dòng & cột 2 của mảng ‘ThongSo’ sẽ nhận giá trị “2” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D33: Thiết lập Đ/K khi trị tại dòng đang khảo sát cột 17 khác rỗng thì thực hiện các lệnh kế tiếp cho đến D40
D34: Thiết lập vòng lặp từ 1 đến dòng cuối của mảng ‘CayDS’
Vòng lặp này kết thúc tại D38
D35: Thiết lập Đ/K: Nếu trị thuộc dòng rw cột 1 trong mảng ‘CayDS’ có trong trị thuộc dòng đang khảo sát (KS), cột 17 thì thực hiện lệnh D36
D37: Kết thúc Đ/K
D39: Nếu trị tại dòng đang KS, cột 3 của mảng ‘ThongSo’ là rỗng thì trị tại tọa độ này của mảng sẽ nhận giá trị là giá trị mảng tại dòng KS, cột 17 nối với 1 khoảng trắng & trị của biến ‘Tam’
D40: Kết thúc Đ/K từ dòng của D35
D41: Trị của mảng ‘ThongSo’ tại dòng KS & cột 4 nhận giá trị từ mảng ‘CSDL’ (dòng KS,cột 27) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D42: Tri trong mảng ‘ThongSo’ thuộc dòng KS, cột 5 sẽ nhận 1 trong Đ/K sau:
a./ Nếu độ dài của trị thuộc dòng đang KS, cột 12 của mảng ‘CSDL’ là 2 thì nhận trị của mảng ‘CSDL’ tại đúng tọa độ đó
b./ Nếu độ dài khác 2 thì chỉ lấy 2 kí tự đầu này đem nội với 1 khoảng trắng & trị trong biến ‘Tam’
D43: Nếu trị trong mảng ‘CSDL’ thuộc tọa độ (dòng KS,25) bé hơn 50 thì trị trong mảng ‘ThongSo’ tại tọa độ (dòng KS, 6) sẽ nhận trị là “K” nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’

. . . . . . .

Mình nghỉ đến đây thì bạn có thể tự lần mò đọc tiếp cho đến hết macro đẫn ra này
Chúc thành công.
 
Upvote 0
PHP:
Option Explicit

Public Sub Lap_Nhieu_Xa()
 Dim Tinh, Huyen, DSXa As Range, Ws As Worksheet, Cll As Range
 
2 CSDL = Sheet1.UsedRange
 BangMa = Sheet3.UsedRange
4 Call LapThongSo
 Call MaBieu1B
6 Tinh = Sheet2.Range("B2")
 Huyen = Sheet2.Range("B3")
8 Set DSXa = Sheet2.Range("A6").CurrentRegion
 Application.DisplayAlerts = False
10 For Each Ws In Worksheets
    If Ws.Name <> "CSDL" And Ws.Name <> "TONG" And Ws.Name <> "MA1B" And Ws.Name <> "GOC1B" Then
12        Ws.Delete
    End If
14 Next Ws
 For Each Cll In DSXa
16    Sheets("GOC1B").Copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Visible = True
18    Sheets(Sheets.Count).Name = Cll.Value
    With Sheets(Cll.Value).Activate
20        Call Tinh_Toan_1B(Tinh, Huyen, Cll.Value)
        Call DienCongThuc
22        Sheets(Cll.Value).Tab.ThemeColor = xlThemeColorAccent6
    End With
24 Next Cll
 Application.DisplayAlerts = True
End Sub

Private Sub LapThongSo()
 Dim CayDS, Tam, r As Long, rw As Integer

26 CayDS = Sheet3.Range("C113", Sheet3.Range("D113").End(xlDown))
 ReDim ThongSo(1 To UBound(CSDL), 1 To 7)
'1-2 NgSinh-Trong,3SanXuat-Khac, 4 Lapdia, 5 LoaiCay, 6-8 TruLuong  '
28 For r = 2 To UBound(CSDL)
    Tam = IIf(CSDL(r, 29) = "MDK", 0, IIf(Left(CSDL(r, 29), 2) = "SX", 3, CSDL(r, 29)))
30    If Tam <> "" Then
        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43) & " " & Tam
32        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21) & " " & Tam
        If CSDL(r, 17) <> "" Then
34            For rw = 1 To UBound(CayDS)
                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
36                    ThongSo(r, 3) = CayDS(rw, 2) & " " & Tam
                End If
38            Next rw
            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17) & " " & Tam
40        End If
        ThongSo(r, 4) = CSDL(r, 27) & " " & Tam
42        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2)) & " " & Tam
        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K" & " " & Tam
44        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N" & " " & Tam
        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB" & " " & Tam
46        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G" & " " & Tam
        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K" & " " & Tam
48        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N" & " " & Tam
        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB" & " " & Tam
50        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G" & " " & Tam
    Else
52        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43)
        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21)
54        If CSDL(r, 17) <> "" Then
            For rw = 1 To UBound(CayDS)
56                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
                    ThongSo(r, 3) = CayDS(rw, 2)
58                End If
            Next rw
60            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17)
        End If
62        ThongSo(r, 4) = CSDL(r, 27)
        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2))
64        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K"
        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N"
66        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB"
        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G"
68        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K"
        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N"
70        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB"
        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G"
72    End If
 Next r
End Sub

Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1: Khai báo các biến cần dùng;
D2: Đem dữ liệu vùng đã dùng ở trang Sheet1 gán vô biến CSDL đã khai báo; Ở dòng 27 ta mới biết đây là 1 biến mảng dùng chung. Biến này mang tính toàn cục để xài được chí ít trong 2 macro ta đang khảo sát.
D3: Tương tự đem vùng đã dùng của trang Sheet3 gán vô biến BangMa đã khai báo
D4: Triệu gọi macro ‘LapThongSo’

Diễn dịch macro ‘LapThongSo’
D25: Khai báo các biến cần xài
D26: Đem vùng ô bắt đầu từ ô [C113] cho tới ô có dữ liệu liên tục kể từ [D113] trở xuống dưới gán vô biến đối tượng ‘CayDS’
D27: Khai báo 1 mảng có số dòng bằng với số dòng trong mảng CSDL, & 7 cột
D28: Tạo vòng lặp để duyệt dữ liệu chứa trong mảng CSDL, bắt đầu từ dòng 2 cho đến cuối;
Vòng lặp này kết thúc tại dòng lệnh D73 (Dòng cuối macro này)
D29: Bién ‘Tam’ được gán trị theo 3 điều kiện:
a./ Trị 0, nếu trị trong mảng CSDL thuộc dòng đang duyệt & cột 29 là “MDK”
b./ Trị 3, nếu 2 kí tự đầu của trị tại dòng đang duyệt & cột 29 là “SX”;
c./ Trị chính bằng trị đang ở dòng đang duyệt, cột 29 của mảng CSDL
D30: Điều kiện (Đ/K) trị trong biến ‘Tam’ khác rỗng thì thực hiện các lệnh từ dòng kế tiếp đến dòng D51
Ngược lại sẽ thực hiện các lệnh từ dòng 52 đến dòng 71
D31: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =1 thì trị tại cùng dòng & cột 1 của mảng ‘ThongSo’ sẽ nhận giá trị “1” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D32: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =2 thì trị tại cùng dòng & cột 2 của mảng ‘ThongSo’ sẽ nhận giá trị “2” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D33: Thiết lập Đ/K khi trị tại dòng đang khảo sát cột 17 khác rỗng thì thực hiện các lệnh kế tiếp cho đến D40
D34: Thiết lập vòng lặp từ 1 đến dòng cuối của mảng ‘CayDS’
Vòng lặp này kết thúc tại D38
D35: Thiết lập Đ/K: Nếu trị thuộc dòng rw cột 1 trong mảng ‘CayDS’ có trong trị thuộc dòng đang khảo sát (KS), cột 17 thì thực hiện lệnh D36
D37: Kết thúc Đ/K
D39: Nếu trị tại dòng đang KS, cột 3 của mảng ‘ThongSo’ là rỗng thì trị tại tọa độ này của mảng sẽ nhận giá trị là giá trị mảng tại dòng KS, cột 17 nối với 1 khoảng trắng & trị của biến ‘Tam’
D40: Kết thúc Đ/K từ dòng của D35
D41: Trị của mảng ‘ThongSo’ tại dòng KS & cột 4 nhận giá trị từ mảng ‘CSDL’ (dòng KS,cột 27) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D42: Tri trong mảng ‘ThongSo’ thuộc dòng KS, cột 5 sẽ nhận 1 trong Đ/K sau:
a./ Nếu độ dài của trị thuộc dòng đang KS, cột 12 của mảng ‘CSDL’ là 2 thì nhận trị của mảng ‘CSDL’ tại đúng tọa độ đó
b./ Nếu độ dài khác 2 thì chỉ lấy 2 kí tự đầu này đem nội với 1 khoảng trắng & trị trong biến ‘Tam’
D43: Nếu trị trong mảng ‘CSDL’ thuộc tọa độ (dòng KS,25) bé hơn 50 thì trị trong mảng ‘ThongSo’ tại tọa độ (dòng KS, 6) sẽ nhận trị là “K” nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’

. . . . . . .

Mình nghỉ đến đây thì bạn có thể tự lần mò đọc tiếp cho đến hết macro đẫn ra này
Chúc thành công.
Dạ, Em cảm ơn Anh ChanhTQ@ nhiều nha! Không có anh giúp chắc em không biết làm sao, chúc Anh ChanhTQ@ có nhiều niềm vui trong cuộc sống ạ.
 
Upvote 0
PHP:
Option Explicit

Public Sub Lap_Nhieu_Xa()
 Dim Tinh, Huyen, DSXa As Range, Ws As Worksheet, Cll As Range
 
2 CSDL = Sheet1.UsedRange
 BangMa = Sheet3.UsedRange
4 Call LapThongSo
 Call MaBieu1B
6 Tinh = Sheet2.Range("B2")
 Huyen = Sheet2.Range("B3")
8 Set DSXa = Sheet2.Range("A6").CurrentRegion
 Application.DisplayAlerts = False
10 For Each Ws In Worksheets
    If Ws.Name <> "CSDL" And Ws.Name <> "TONG" And Ws.Name <> "MA1B" And Ws.Name <> "GOC1B" Then
12        Ws.Delete
    End If
14 Next Ws
 For Each Cll In DSXa
16    Sheets("GOC1B").Copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Visible = True
18    Sheets(Sheets.Count).Name = Cll.Value
    With Sheets(Cll.Value).Activate
20        Call Tinh_Toan_1B(Tinh, Huyen, Cll.Value)
        Call DienCongThuc
22        Sheets(Cll.Value).Tab.ThemeColor = xlThemeColorAccent6
    End With
24 Next Cll
 Application.DisplayAlerts = True
End Sub

Private Sub LapThongSo()
 Dim CayDS, Tam, r As Long, rw As Integer

26 CayDS = Sheet3.Range("C113", Sheet3.Range("D113").End(xlDown))
 ReDim ThongSo(1 To UBound(CSDL), 1 To 7)
'1-2 NgSinh-Trong,3SanXuat-Khac, 4 Lapdia, 5 LoaiCay, 6-8 TruLuong  '
28 For r = 2 To UBound(CSDL)
    Tam = IIf(CSDL(r, 29) = "MDK", 0, IIf(Left(CSDL(r, 29), 2) = "SX", 3, CSDL(r, 29)))
30    If Tam <> "" Then
        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43) & " " & Tam
32        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21) & " " & Tam
        If CSDL(r, 17) <> "" Then
34            For rw = 1 To UBound(CayDS)
                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
36                    ThongSo(r, 3) = CayDS(rw, 2) & " " & Tam
                End If
38            Next rw
            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17) & " " & Tam
40        End If
        ThongSo(r, 4) = CSDL(r, 27) & " " & Tam
42        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2)) & " " & Tam
        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K" & " " & Tam
44        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N" & " " & Tam
        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB" & " " & Tam
46        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G" & " " & Tam
        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K" & " " & Tam
48        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N" & " " & Tam
        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB" & " " & Tam
50        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G" & " " & Tam
    Else
52        If CSDL(r, 14) = 1 Then ThongSo(r, 1) = CSDL(r, 14) & " " & CSDL(r, 43)
        If CSDL(r, 14) = 2 Then ThongSo(r, 2) = CSDL(r, 14) & " " & CSDL(r, 21)
54        If CSDL(r, 17) <> "" Then
            For rw = 1 To UBound(CayDS)
56                If InStr(CSDL(r, 17), CayDS(rw, 1)) Then
                    ThongSo(r, 3) = CayDS(rw, 2)
58                End If
            Next rw
60            If ThongSo(r, 3) = "" Then ThongSo(r, 3) = CSDL(r, 17)
        End If
62        ThongSo(r, 4) = CSDL(r, 27)
        ThongSo(r, 5) = IIf(Len(CSDL(r, 15)) = 2, CSDL(r, 15), Left(CSDL(r, 15), 2))
64        If CSDL(r, 25) < 50 Then ThongSo(r, 6) = "K"
        If CSDL(r, 25) >= 50 And CSDL(r, 25) <= 100 Then ThongSo(r, 6) = "N"
66        If CSDL(r, 25) > 100 And CSDL(r, 25) <= 200 Then ThongSo(r, 6) = "TB"
        If CSDL(r, 25) > 200 Then ThongSo(r, 6) = "G"
68        If CSDL(r, 26) < 50 Then ThongSo(r, 7) = "K"
        If CSDL(r, 26) >= 50 And CSDL(r, 26) <= 100 Then ThongSo(r, 7) = "N"
70        If CSDL(r, 26) > 100 And CSDL(r, 26) <= 200 Then ThongSo(r, 7) = "TB"
        If CSDL(r, 26) > 200 Then ThongSo(r, 7) = "G"
72    End If
 Next r
End Sub

Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1: Khai báo các biến cần dùng;
D2: Đem dữ liệu vùng đã dùng ở trang Sheet1 gán vô biến CSDL đã khai báo; Ở dòng 27 ta mới biết đây là 1 biến mảng dùng chung. Biến này mang tính toàn cục để xài được chí ít trong 2 macro ta đang khảo sát.
D3: Tương tự đem vùng đã dùng của trang Sheet3 gán vô biến BangMa đã khai báo
D4: Triệu gọi macro ‘LapThongSo’

Diễn dịch macro ‘LapThongSo’
D25: Khai báo các biến cần xài
D26: Đem vùng ô bắt đầu từ ô [C113] cho tới ô có dữ liệu liên tục kể từ [D113] trở xuống dưới gán vô biến đối tượng ‘CayDS’
D27: Khai báo 1 mảng có số dòng bằng với số dòng trong mảng CSDL, & 7 cột
D28: Tạo vòng lặp để duyệt dữ liệu chứa trong mảng CSDL, bắt đầu từ dòng 2 cho đến cuối;
Vòng lặp này kết thúc tại dòng lệnh D73 (Dòng cuối macro này)
D29: Bién ‘Tam’ được gán trị theo 3 điều kiện:
a./ Trị 0, nếu trị trong mảng CSDL thuộc dòng đang duyệt & cột 29 là “MDK”
b./ Trị 3, nếu 2 kí tự đầu của trị tại dòng đang duyệt & cột 29 là “SX”;
c./ Trị chính bằng trị đang ở dòng đang duyệt, cột 29 của mảng CSDL
D30: Điều kiện (Đ/K) trị trong biến ‘Tam’ khác rỗng thì thực hiện các lệnh từ dòng kế tiếp đến dòng D51
Ngược lại sẽ thực hiện các lệnh từ dòng 52 đến dòng 71
D31: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =1 thì trị tại cùng dòng & cột 1 của mảng ‘ThongSo’ sẽ nhận giá trị “1” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D32: Nếu trị tại dòng đang khảo sát & cột 14 của mảng ‘CSDL’ =2 thì trị tại cùng dòng & cột 2 của mảng ‘ThongSo’ sẽ nhận giá trị “2” nối chuỗi với trị cùng dòng, cột 43 của mảng ‘CSDL’ & nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’
D33: Thiết lập Đ/K khi trị tại dòng đang khảo sát cột 17 khác rỗng thì thực hiện các lệnh kế tiếp cho đến D40
D34: Thiết lập vòng lặp từ 1 đến dòng cuối của mảng ‘CayDS’
Vòng lặp này kết thúc tại D38
D35: Thiết lập Đ/K: Nếu trị thuộc dòng rw cột 1 trong mảng ‘CayDS’ có trong trị thuộc dòng đang khảo sát (KS), cột 17 thì thực hiện lệnh D36
D37: Kết thúc Đ/K
D39: Nếu trị tại dòng đang KS, cột 3 của mảng ‘ThongSo’ là rỗng thì trị tại tọa độ này của mảng sẽ nhận giá trị là giá trị mảng tại dòng KS, cột 17 nối với 1 khoảng trắng & trị của biến ‘Tam’
D40: Kết thúc Đ/K từ dòng của D35
D41: Trị của mảng ‘ThongSo’ tại dòng KS & cột 4 nhận giá trị từ mảng ‘CSDL’ (dòng KS,cột 27) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D42: Tri trong mảng ‘ThongSo’ thuộc dòng KS, cột 5 sẽ nhận 1 trong Đ/K sau:
a./ Nếu độ dài của trị thuộc dòng đang KS, cột 12 của mảng ‘CSDL’ là 2 thì nhận trị của mảng ‘CSDL’ tại đúng tọa độ đó
b./ Nếu độ dài khác 2 thì chỉ lấy 2 kí tự đầu này đem nội với 1 khoảng trắng & trị trong biến ‘Tam’
D43: Nếu trị trong mảng ‘CSDL’ thuộc tọa độ (dòng KS,25) bé hơn 50 thì trị trong mảng ‘ThongSo’ tại tọa độ (dòng KS, 6) sẽ nhận trị là “K” nối với 1 khoảng trắng & nối với trị trong biến ‘Tam’

. . . . . . .

Mình nghỉ đến đây thì bạn có thể tự lần mò đọc tiếp cho đến hết macro đẫn ra này
Chúc thành công.
Anh ơi! Anh giải thích giùm em đoạn đây nữa với, em thấy anh ChanhTQ@ giỏi, mong anh dịch giùm em với, chúc anh buổi tối vui ạ!
Private Sub MaBieu1B()
Dim LoaiRung, HangMuc, r As Long, c As Long
Dim Tam, Chuoi()

With Sheet5
LoaiRung = .Range("A9", .Range("A1000000").End(xlUp))
HangMuc = .Range("D8:P8")
ReDim Chuoi(1 To UBound(LoaiRung), 1 To 1)
End With

For r = 1 To UBound(LoaiRung)
If IsNumeric(Left(LoaiRung(r, 1), 1)) = True Then
Tam = Tim(LoaiRung(r, 1), BangMa, 6, 4)
Chuoi(r, 1) = Tam
Else
If Left(LoaiRung(r, 1), 1) = " " Then Chuoi(r, 1) = Trim(Tam & " " & Tim(LoaiRung(r, 1), BangMa, 6, 4))
End If
Next r

For r = 1 To UBound(LoaiRung) - 1
If IsNumeric(Left(LoaiRung(r, 1), 1)) = True And Left(LoaiRung(r + 1, 1), 1) = " " Then
Chuoi(r, 1) = ""
End If
Next r

For c = 1 To UBound(HangMuc, 2)
If Tim(HangMuc(1, c), BangMa, 6, 4) <> "" Then

Tam = Tim(HangMuc(1, c), BangMa, 6, 4)
For r = 1 To UBound(Bieu1B)
If Chuoi(r, 1) <> "" Then
Bieu1B(r, c) = Chuoi(r, 1) & " " & Tam
End If
Next r

End If
Next c
End Sub
 
Upvote 0
Do em không học bên đấy nên em không hiểu gì hết, mong Anh ChanhTQ@ giúp em với!
Xin cảm ơn Anh ạ!
 
Upvote 0
Sẵn lòng thôi & xin mời:

PHP:
Private Sub MaBieu1B()
 Dim LoaiRung, HangMuc, r As Long, c As Long
75 Dim Tam, Chuoi()
 With Sheet5
77    LoaiRung = .Range("A9", .Range("A1000000").End(xlUp))
    HangMuc = .Range("D8:P8")
79    ReDim Chuoi(1 To UBound(LoaiRung), 1 To 1)
 End With
81 For r = 1 To UBound(LoaiRung)
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True Then
83        Tam = Tim(LoaiRung(r, 1), BangMa, 6, 4)
        Chuoi(r, 1) = Tam
85    Else
        If Left(LoaiRung(r, 1), 1) = " " Then Chuoi(r, 1) = Trim(Tam & " " & Tim(LoaiRung(r, 1), BangMa, 6, 4))
87    End If
 Next r
89 For r = 1 To UBound(LoaiRung) - 1
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True And Left(LoaiRung(r + 1, 1), 1) = " " Then
91        Chuoi(r, 1) = ""
    End If
93 Next r
 For c = 1 To UBound(HangMuc, 2)
95    If Tim(HangMuc(1, c), BangMa, 6, 4) <> "" Then
        Tam = Tim(HangMuc(1, c), BangMa, 6, 4)
97        For r = 1 To UBound(Bieu1B)
            If Chuoi(r, 1) <> "" Then
99                Bieu1B(r, c) = Chuoi(r, 1) & " " & Tam
            End If
101        Next r
    End If
103 Next c
End Sub


Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1..D4: Đã dịch ở bài trên
D5: Triệu gọi macro ‘MaBieu1B’

Diễn dịch macro ‘MaBieu1B’
D74: & D75: Khai báo các biến cần xài
D76: Tuyên cáo (TC) sẽ làm việc với trang ‘Sheet5’
D77: Lấy dữ liệu cột [A] của trang tính TC , bắt đầu từ [A9] cho đến dòng cuối của cột này nạp vô mảng ‘LoaiRung’
D78: Mảng ‘HangMuc’ được nạp dữ liệu từ vùng [D8:P8] của trang TC
D79: Khai báo 1 biến mảng có tên là ‘Chuoi’ có số hàng bằng với số hàng của mảng ‘LoaiRung’ & 1 cột.
D80: Kết thúc TC
D81: Thiết lập vòng lặp từ 1 cho đến dòng cuối của mảng ‘LoaiRung’
D82: Đề điều kiện (Đ/K): Nếu chữ cái đầu tiên trong mảng có tọa độ (Dòng đang duyệt, cột 1) là kí số thì thực hiện 2 lệnh kế tiếp đến trước D85;
D83: Lấy trị trả về của hàm tự tạo Tim() gán vô biến ‘Tam’
Hàm tự tạo cần được cung cấp 4 tham biến
D84: Lấy trị trong biến lại gán vô biến mảng có tên là ‘Chuoi’ (Xem lại D79)
D85: Nếu không thỏa Đ/K tại D82 thì thực hiện D86
D86: Nếu kí tự đầu tiên trong fần tử mảng có (X= dòng đang khảo sát (KS),Y=1) là rỗng thì fần tử (X= dòng KS,1) của mảng ‘Chuoi’ sẽ nhận trị gốm trị trong biến ‘Tam’ nối với 1 khoảng trắng & nối tiếp trị trả về của hàm tự tạo Tim()
D87: Kết thúc Đ/K
D88: Kết thúc vòng lặp
D89: Tạo tiếp 1 vòng lặp duyệt theo các hàng trong mảng ‘LoaiRung’; Vòng lặp này kết thúc tại D93
D90: Thiết lập Đ/K : Nếu kí tự đầu tiên trong fần tử của mảng ‘LoaiRung’ có (X= dòng đang khảo sát (KS),Y=1) là 1 kí số & fần tử kế tiếp fía dưới của mảng là kí tự rỗng ở đầu thì thực hiện 01 lệnh kế tiếp
D91: Fần tử của mảng ‘Chuoi’ tọa độ (X=dòng KS,Y=1) sẽ là rỗng
D92: Kết thúc Đ/K
D93: Kết thúc vòng lặp (thứ 2)
D94: Thiết lập vòng lặp duyết theo cột của mảng ‘HangMuc’
D95: Lấy trị trả về của hàm tự tạo Tim() làm Đ/K khác rỗng thì thực hiện các lệnh đến trước D102, gồm:
D96: Biếm ‘Tam’ được gán là trị trả về của hàm tự tạo Tim()
D97: Thiết lập vòng lặp duyệt theo dòng của mảng ‘Bieu1B’
D98: Đ/K: Nếu fần tử có tọa độ (X=Dòng KS,Y=1) của mảng ‘Chuoi’ khác rỗng thì thực hiện lệnh kế tiếp, đó là:
D99:: Trị trong mảng ‘Bieu1B’ có tọa độ (X= dòng KS,1) được gán từ trị trong mảng ‘Chuoi’ với (X=dòng KS,1) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D100-103: Kết thúc các Đ/K, Vòng lặp theo dòng của ‘HangMuc’, kết thúc Đ/K & kết thúc vòng lặp đầu của macro
. . . . . . . Chúc vui!
 
Upvote 0
PHP:
Private Sub MaBieu1B()
 Dim LoaiRung, HangMuc, r As Long, c As Long
75 Dim Tam, Chuoi()
 With Sheet5
77    LoaiRung = .Range("A9", .Range("A1000000").End(xlUp))
    HangMuc = .Range("D8:P8")
79    ReDim Chuoi(1 To UBound(LoaiRung), 1 To 1)
 End With
81 For r = 1 To UBound(LoaiRung)
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True Then
83        Tam = Tim(LoaiRung(r, 1), BangMa, 6, 4)
        Chuoi(r, 1) = Tam
85    Else
        If Left(LoaiRung(r, 1), 1) = " " Then Chuoi(r, 1) = Trim(Tam & " " & Tim(LoaiRung(r, 1), BangMa, 6, 4))
87    End If
 Next r
89 For r = 1 To UBound(LoaiRung) - 1
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True And Left(LoaiRung(r + 1, 1), 1) = " " Then
91        Chuoi(r, 1) = ""
    End If
93 Next r
 For c = 1 To UBound(HangMuc, 2)
95    If Tim(HangMuc(1, c), BangMa, 6, 4) <> "" Then
        Tam = Tim(HangMuc(1, c), BangMa, 6, 4)
97        For r = 1 To UBound(Bieu1B)
            If Chuoi(r, 1) <> "" Then
99                Bieu1B(r, c) = Chuoi(r, 1) & " " & Tam
            End If
101        Next r
    End If
103 Next c
End Sub


Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1..D4: Đã dịch ở bài trên
D5: Triệu gọi macro ‘MaBieu1B’

Diễn dịch macro ‘MaBieu1B’
D74: & D75: Khai báo các biến cần xài
D76: Tuyên cáo (TC) sẽ làm việc với trang ‘Sheet5’
D77: Lấy dữ liệu cột [A] của trang tính TC , bắt đầu từ [A9] cho đến dòng cuối của cột này nạp vô mảng ‘LoaiRung’
D78: Mảng ‘HangMuc’ được nạp dữ liệu từ vùng [D8:P8] của trang TC
D79: Khai báo 1 biến mảng có tên là ‘Chuoi’ có số hàng bằng với số hàng của mảng ‘LoaiRung’ & 1 cột.
D80: Kết thúc TC
D81: Thiết lập vòng lặp từ 1 cho đến dòng cuối của mảng ‘LoaiRung’
D82: Đề điều kiện (Đ/K): Nếu chữ cái đầu tiên trong mảng có tọa độ (Dòng đang duyệt, cột 1) là kí số thì thực hiện 2 lệnh kế tiếp đến trước D85;
D83: Lấy trị trả về của hàm tự tạo Tim() gán vô biến ‘Tam’
Hàm tự tạo cần được cung cấp 4 tham biến
D84: Lấy trị trong biến lại gán vô biến mảng có tên là ‘Chuoi’ (Xem lại D79)
D85: Nếu không thỏa Đ/K tại D82 thì thực hiện D86
D86: Nếu kí tự đầu tiên trong fần tử mảng có (X= dòng đang khảo sát (KS),Y=1) là rỗng thì fần tử (X= dòng KS,1) của mảng ‘Chuoi’ sẽ nhận trị gốm trị trong biến ‘Tam’ nối với 1 khoảng trắng & nối tiếp trị trả về của hàm tự tạo Tim()
D87: Kết thúc Đ/K
D88: Kết thúc vòng lặp
D89: Tạo tiếp 1 vòng lặp duyệt theo các hàng trong mảng ‘LoaiRung’; Vòng lặp này kết thúc tại D93
D90: Thiết lập Đ/K : Nếu kí tự đầu tiên trong fần tử của mảng ‘LoaiRung’ có (X= dòng đang khảo sát (KS),Y=1) là 1 kí số & fần tử kế tiếp fía dưới của mảng là kí tự rỗng ở đầu thì thực hiện 01 lệnh kế tiếp
D91: Fần tử của mảng ‘Chuoi’ tọa độ (X=dòng KS,Y=1) sẽ là rỗng
D92: Kết thúc Đ/K
D93: Kết thúc vòng lặp (thứ 2)
D94: Thiết lập vòng lặp duyết theo cột của mảng ‘HangMuc’
D95: Lấy trị trả về của hàm tự tạo Tim() làm Đ/K khác rỗng thì thực hiện các lệnh đến trước D102, gồm:
D96: Biếm ‘Tam’ được gán là trị trả về của hàm tự tạo Tim()
D97: Thiết lập vòng lặp duyệt theo dòng của mảng ‘Bieu1B’
D98: Đ/K: Nếu fần tử có tọa độ (X=Dòng KS,Y=1) của mảng ‘Chuoi’ khác rỗng thì thực hiện lệnh kế tiếp, đó là:
D99:: Trị trong mảng ‘Bieu1B’ có tọa độ (X= dòng KS,1) được gán từ trị trong mảng ‘Chuoi’ với (X=dòng KS,1) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D100-103: Kết thúc các Đ/K, Vòng lặp theo dòng của ‘HangMuc’, kết thúc Đ/K & kết thúc vòng lặp đầu của macro
. . . . . . . Chúc vui!
Xin cảm ơn anh ChanhTQ@ nhiều!
 
Upvote 0
PHP:
Private Sub MaBieu1B()
 Dim LoaiRung, HangMuc, r As Long, c As Long
75 Dim Tam, Chuoi()
 With Sheet5
77    LoaiRung = .Range("A9", .Range("A1000000").End(xlUp))
    HangMuc = .Range("D8:P8")
79    ReDim Chuoi(1 To UBound(LoaiRung), 1 To 1)
 End With
81 For r = 1 To UBound(LoaiRung)
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True Then
83        Tam = Tim(LoaiRung(r, 1), BangMa, 6, 4)
        Chuoi(r, 1) = Tam
85    Else
        If Left(LoaiRung(r, 1), 1) = " " Then Chuoi(r, 1) = Trim(Tam & " " & Tim(LoaiRung(r, 1), BangMa, 6, 4))
87    End If
 Next r
89 For r = 1 To UBound(LoaiRung) - 1
    If IsNumeric(Left(LoaiRung(r, 1), 1)) = True And Left(LoaiRung(r + 1, 1), 1) = " " Then
91        Chuoi(r, 1) = ""
    End If
93 Next r
 For c = 1 To UBound(HangMuc, 2)
95    If Tim(HangMuc(1, c), BangMa, 6, 4) <> "" Then
        Tam = Tim(HangMuc(1, c), BangMa, 6, 4)
97        For r = 1 To UBound(Bieu1B)
            If Chuoi(r, 1) <> "" Then
99                Bieu1B(r, c) = Chuoi(r, 1) & " " & Tam
            End If
101        Next r
    End If
103 Next c
End Sub


Diễn dịch macro có tên là ‘Lap_Nhieu_Xa:

D1..D4: Đã dịch ở bài trên
D5: Triệu gọi macro ‘MaBieu1B’

Diễn dịch macro ‘MaBieu1B’
D74: & D75: Khai báo các biến cần xài
D76: Tuyên cáo (TC) sẽ làm việc với trang ‘Sheet5’
D77: Lấy dữ liệu cột [A] của trang tính TC , bắt đầu từ [A9] cho đến dòng cuối của cột này nạp vô mảng ‘LoaiRung’
D78: Mảng ‘HangMuc’ được nạp dữ liệu từ vùng [D8:P8] của trang TC
D79: Khai báo 1 biến mảng có tên là ‘Chuoi’ có số hàng bằng với số hàng của mảng ‘LoaiRung’ & 1 cột.
D80: Kết thúc TC
D81: Thiết lập vòng lặp từ 1 cho đến dòng cuối của mảng ‘LoaiRung’
D82: Đề điều kiện (Đ/K): Nếu chữ cái đầu tiên trong mảng có tọa độ (Dòng đang duyệt, cột 1) là kí số thì thực hiện 2 lệnh kế tiếp đến trước D85;
D83: Lấy trị trả về của hàm tự tạo Tim() gán vô biến ‘Tam’
Hàm tự tạo cần được cung cấp 4 tham biến
D84: Lấy trị trong biến lại gán vô biến mảng có tên là ‘Chuoi’ (Xem lại D79)
D85: Nếu không thỏa Đ/K tại D82 thì thực hiện D86
D86: Nếu kí tự đầu tiên trong fần tử mảng có (X= dòng đang khảo sát (KS),Y=1) là rỗng thì fần tử (X= dòng KS,1) của mảng ‘Chuoi’ sẽ nhận trị gốm trị trong biến ‘Tam’ nối với 1 khoảng trắng & nối tiếp trị trả về của hàm tự tạo Tim()
D87: Kết thúc Đ/K
D88: Kết thúc vòng lặp
D89: Tạo tiếp 1 vòng lặp duyệt theo các hàng trong mảng ‘LoaiRung’; Vòng lặp này kết thúc tại D93
D90: Thiết lập Đ/K : Nếu kí tự đầu tiên trong fần tử của mảng ‘LoaiRung’ có (X= dòng đang khảo sát (KS),Y=1) là 1 kí số & fần tử kế tiếp fía dưới của mảng là kí tự rỗng ở đầu thì thực hiện 01 lệnh kế tiếp
D91: Fần tử của mảng ‘Chuoi’ tọa độ (X=dòng KS,Y=1) sẽ là rỗng
D92: Kết thúc Đ/K
D93: Kết thúc vòng lặp (thứ 2)
D94: Thiết lập vòng lặp duyết theo cột của mảng ‘HangMuc’
D95: Lấy trị trả về của hàm tự tạo Tim() làm Đ/K khác rỗng thì thực hiện các lệnh đến trước D102, gồm:
D96: Biếm ‘Tam’ được gán là trị trả về của hàm tự tạo Tim()
D97: Thiết lập vòng lặp duyệt theo dòng của mảng ‘Bieu1B’
D98: Đ/K: Nếu fần tử có tọa độ (X=Dòng KS,Y=1) của mảng ‘Chuoi’ khác rỗng thì thực hiện lệnh kế tiếp, đó là:
D99:: Trị trong mảng ‘Bieu1B’ có tọa độ (X= dòng KS,1) được gán từ trị trong mảng ‘Chuoi’ với (X=dòng KS,1) nối vớ 1 khoảng trắng & nối tiếp với trị trong biến ‘Tam’
D100-103: Kết thúc các Đ/K, Vòng lặp theo dòng của ‘HangMuc’, kết thúc Đ/K & kết thúc vòng lặp đầu của macro
. . . . . . . Chúc vui!
Cảm ơn anh ChanhTQ@ nhiều nha, vì những lời giải thích code của anh không chỉ giúp em hiểu được ý nghĩa của đoạn code này mà còn giúp cho các bạn trên diễn đàn cũng được hiểu thêm về ý nghĩa của đoạn code này.
Có những người nhưng anh ChanhTQ@ sẽ giúp cho những bạn như em sẽ hiểu rõ hơn được ý nghĩa của các câu lệnh code trong excel ạ.
Em thấy ít có người giúp đỡ tận tình như anh.
Xin cảm ơn anh ChanhTQ@!
 
Upvote 0
Để nhận được câu trả lời nhanh, chúng ta cần làm rõ vấn đề sau:
(1) Trong biểu mẫu báo cáo bạn cần báo cáo đến 10 loại rừng; Trong đó gồm 4 loại đặc dụng, 4 loại fòng hộ, loại MDK & cuối cùng là loại ngoài qui hoạch
Nhưng trong trang 'CSDL' chỉ có 4+1 loại rừng là (BTTN, MDK, PHDN, SXGN & " ")
Vậy chỉ cần báo cáo số liệu 5 loại rừng sau thôi hay fải làm cho cả 10 loại rừng?
(& loại rừng để trống đó cho vô đâu?)
Nẫy giờ mình mất gần 1 giờ để chỉnh trang CSDL của bạn; Những mong là nó không uổng công!
Dạ, File đây chuẩn nè Anh và có giải thích rõ ràng và cách tính nữa. Nó cũng giống file trước thôi Anh.
Mong Anh giúp cho.
Xin cảm ơn!
 

File đính kèm

Upvote 0
Chờ bạn lâu quá & mình đã mần đến cây cao su rồi đó;

Bạn kiểm tra số liệu thử xem sao.

Có điều này hỏi luôn bạn:
Chúng ta sẽ tổng hợp số liệu trên 2 trường [mgolo] & [mtnlo]
Nếu 1 khi cả 2 trường này trong 1 dòng đều bằng 0 ta nên xóa đi những đó, được chứ?
Nếu xóa đi thì CSDL của bạn sẽ về diêm vương cả ngàn dòng, bạn nghĩ sao về việc này?
Dạ, không xóa gì hết ạ, nếu nó bằng không thì vẫn để đấy ạ, không có xóa hàng nào trong sheeet CSDL hết ạ.
Tổng hợp số liệu dựa vào hai trường, nếu ở bieu1b mà đơn vị là m3 thì lấy cột mgolo, còn đơn vị mà 1000 cây thì lấy cột mtnlo ạ.
 
Upvote 0
Để nhận được câu trả lời nhanh, chúng ta cần làm rõ vấn đề sau:
(1) Trong biểu mẫu báo cáo bạn cần báo cáo đến 10 loại rừng; Trong đó gồm 4 loại đặc dụng, 4 loại fòng hộ, loại MDK & cuối cùng là loại ngoài qui hoạch
Nhưng trong trang 'CSDL' chỉ có 4+1 loại rừng là (BTTN, MDK, PHDN, SXGN & " ")
Vậy chỉ cần báo cáo số liệu 5 loại rừng sau thôi hay fải làm cho cả 10 loại rừng?
(& loại rừng để trống đó cho vô đâu?)
Nẫy giờ mình mất gần 1 giờ để chỉnh trang CSDL của bạn; Những mong là nó không uổng công!
Không phải vậy đâu ạ
Chỉ có 4 loại Rừng thôi anh, đó là Rừng Phòng Hộ, Rừng Đặc Dụng, Rừng Sản Xuất, và Rừng Ngoài Quy Hoạch Cho Đất Lâm nghiệp ạ
Để biết là loại Rừng nào thì ta đựa vào bảng mã sau đấy qua sheet CSDL tra ở cột malr3 là biết loại rừng nào, dưới đây là bảng mã quy định, ví dụ kí hiệu số 1 trong cột malr3 ở sheet CSDL là Rừng Phòng Hộ,....

[TABLE="width: 1428"]
[TR]
[TD]TT[/TD]
[TD]Loại rừng[/TD]
[TD]Kí hiệu loại rừng trong cột malr3 ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Rừng Phòng hộ[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Rừng Đặc dụng[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Rừng Sản xuất[/TD]
[TD]3[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Rừng ngoài đất quy hoạch cho lâm nghiệp[/TD]
[TD]0
[/TD]
[/TR]
[/TABLE]
Sau đấy trong Rừng Phòng Hộ và Rừng Đặc Dụng thì nó có các chức năng hay còn gọi là mục dích sử dụng (mdsd) được miêu tả ở đưới bảng đây
[TABLE="width: 1428"]
[TR]
[TD]mdsd[/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Đầu nguồn[/TD]
[TD]PHDN[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Chắn sóng[/TD]
[TD]PHCS[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Chắn gió, cát[/TD]
[TD]PHCC[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Bảo vệ môi trường[/TD]
[TD]PHMT[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD]Vườn quốc gia[/TD]
[TD]VQG[/TD]
[/TR]
[TR]
[TD="align: right"]6[/TD]
[TD]Khu b.tồn thiên nhiên[/TD]
[TD]BTTN[/TD]
[/TR]
[TR]
[TD="align: right"]7[/TD]
[TD]Khu rừng nghiên cứu[/TD]
[TD]NCKH[/TD]
[/TR]
[TR]
[TD="align: right"]8[/TD]
[TD]Khu bảo vệ cảnh quan[/TD]
[TD]VHCQ[/TD]
[/TR]
[/TABLE]
 
Upvote 0
Không phải vậy đâu ạ
Chỉ có 4 loại Rừng thôi anh, đó là Rừng Phòng Hộ, Rừng Đặc Dụng, Rừng Sản Xuất, và Rừng Ngoài Quy Hoạch Cho Đất Lâm nghiệp ạ
Để biết là loại Rừng nào thì ta đựa vào bảng mã sau đấy qua sheet CSDL tra ở cột malr3 là biết loại rừng nào, dưới đây là bảng mã quy định, ví dụ kí hiệu số 1 trong cột malr3 ở sheet CSDL là Rừng Phòng Hộ,....

[TABLE="width: 1428"]
[TR]
[TD]TT[/TD]
[TD]Loại rừng[/TD]
[TD]Kí hiệu loại rừng trong cột malr3 ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Rừng Phòng hộ[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Rừng Đặc dụng[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Rừng Sản xuất[/TD]
[TD]3[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Rừng ngoài đất quy hoạch cho lâm nghiệp[/TD]
[TD]0[/TD]
[/TR]
[/TABLE]
Sau đấy trong Rừng Phòng Hộ và Rừng Đặc Dụng thì nó có các chức năng hay còn gọi là mục dích sử dụng (mdsd) được miêu tả ở đưới bảng đây
[TABLE="width: 1428"]
[TR]
[TD]mdsd[/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Đầu nguồn[/TD]
[TD]PHDN[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Chắn sóng[/TD]
[TD]PHCS[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Chắn gió, cát[/TD]
[TD]PHCC[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Bảo vệ môi trường[/TD]
[TD]PHMT[/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD]Vườn quốc gia[/TD]
[TD]VQG[/TD]
[/TR]
[TR]
[TD="align: right"]6[/TD]
[TD]Khu b.tồn thiên nhiên[/TD]
[TD]BTTN[/TD]
[/TR]
[TR]
[TD="align: right"]7[/TD]
[TD]Khu rừng nghiên cứu[/TD]
[TD]NCKH[/TD]
[/TR]
[TR]
[TD="align: right"]8[/TD]
[TD]Khu bảo vệ cảnh quan[/TD]
[TD]VHCQ[/TD]
[/TR]
[/TABLE]
Rừng Phòng Hộ thì nó có chức năng hay gọi là mục đích sử dụng đấy gồm
[TABLE="width: 1428"]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Đầu nguồn[/TD]
[TD]PHDN[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Chắn sóng[/TD]
[TD]PHCS[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Chắn gió, cát[/TD]
[TD]PHCC[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Bảo vệ môi trường[/TD]
[TD]PHMT[/TD]
[/TR]
[/TABLE]
Còn Rừng Đặc Dụng thì nó có các mục đích sử dụng gồm:
[TABLE="width: 1350"]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD] [/TD]
[TD] [/TD]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[TD] [/TD]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[TD] [/TD]
[TD] [/TD]
[/TR]
[TR]
[TD] [/TD]
[TD] [/TD]
[TD] [/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD]Vườn quốc gia[/TD]
[TD]VQG[/TD]
[/TR]
[TR]
[TD="align: right"]6[/TD]
[TD]Khu b.tồn thiên nhiên[/TD]
[TD]BTTN[/TD]
[/TR]
[TR]
[TD="align: right"]7[/TD]
[TD]Khu rừng nghiên cứu[/TD]
[TD]NCKH[/TD]
[/TR]
[TR]
[TD="align: right"]8[/TD]
[TD]Khu bảo vệ cảnh quan[/TD]
[TD]VHCQ


[/TD]
[/TR]
[/TABLE]
 
Upvote 0
Rừng Phòng Hộ thì nó có chức năng hay gọi là mục đích sử dụng đấy gồm
[TABLE="width: 1428"]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD="align: right"]1[/TD]
[TD]Đầu nguồn[/TD]
[TD]PHDN[/TD]
[/TR]
[TR]
[TD="align: right"]2[/TD]
[TD]Chắn sóng[/TD]
[TD]PHCS[/TD]
[/TR]
[TR]
[TD="align: right"]3[/TD]
[TD]Chắn gió, cát[/TD]
[TD]PHCC[/TD]
[/TR]
[TR]
[TD="align: right"]4[/TD]
[TD]Bảo vệ môi trường[/TD]
[TD]PHMT[/TD]
[/TR]
[/TABLE]
Còn Rừng Đặc Dụng thì nó có các mục đích sử dụng gồm:
[TABLE="width: 1350"]
[TR]
[TD]TT[/TD]
[TD]Mục đích sử dụng[/TD]
[TD]Kí hiệu mục đích sử dụng của cột mdsd ở sheet CSDL[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD="align: right"]5[/TD]
[TD]Vườn quốc gia[/TD]
[TD]VQG[/TD]
[/TR]
[TR]
[TD="align: right"]6[/TD]
[TD]Khu b.tồn thiên nhiên[/TD]
[TD]BTTN[/TD]
[/TR]
[TR]
[TD="align: right"]7[/TD]
[TD]Khu rừng nghiên cứu[/TD]
[TD]NCKH[/TD]
[/TR]
[TR]
[TD="align: right"]8[/TD]
[TD]Khu bảo vệ cảnh quan[/TD]
[TD]VHCQ

[/TD]
[/TR]
[/TABLE]
Đê làm được thì cần phải dựa vào sheet Bảng mã sau đấy mới xem kí hiệu của chúng để biết được cái này kí hiệu là số nào, để mới có thể tra được, sau đấy mới tổng hợp được.
Em cảm ơn
Chúc mọi người buổi sáng làm việc thật vui!
 
Upvote 0
Chúc mọi người buổi sáng làm việc thật vui!

Chắc chúng ta fải quay lại từ đầu với những iêu cầu khắc khe hơn với bạn!

Trong trang 'Bieu1B', ô a7 bạn có viết câu

"1. Rừng tự nhiên(nggocr) (nghĩa là vào cột nggr lấy lọc đối tượng rừng tự nhiên)"

Tuy nhiên bên trang CSDL không có cột nào mang tên 'nggr' cả là sao?

Hãy viết cho người khác hiểu; Đừng nên viết những gì mình hiểu!

Tất niên chúng tôi trước đây tự lần mò ra được; Nhưng giờ thì không!

Yêu cầu là bạn fải tự xây dựng lại CSDL của mình thật đúng chuẩn!

& chính bạn chứ không ai khác!
 
Upvote 0
Chắc chúng ta fải quay lại từ đầu với những iêu cầu khắc khe hơn với bạn!

Trong trang 'Bieu1B', ô a7 bạn có viết câu

"1. Rừng tự nhiên(nggocr) (nghĩa là vào cột nggr lấy lọc đối tượng rừng tự nhiên)"

Tuy nhiên bên trang CSDL không có cột nào mang tên 'nggr' cả là sao?

Hãy viết cho người khác hiểu; Đừng nên viết những gì mình hiểu!

Tất niên chúng tôi trước đây tự lần mò ra được; Nhưng giờ thì không!

Yêu cầu là bạn fải tự xây dựng lại CSDL của mình thật đúng chuẩn!

& chính bạn chứ không ai khác!
Em xin lỗi, do em viết nhanh qua nên mất chữ, chữ đấy là chữ nggocr ạ, là kí hiệu của nguồn gốc rừng ạ
Em sửa lại rồi!
Cảm ơn!
Về dữ liệu là chuẩn rồi ạ
 

File đính kèm

Upvote 0
Em sửa lại rồi!
Cảm ơn! Về dữ liệu là chuẩn rồi ạ
Mới là chuẩn với những gì mình nêu ra thôi; Còn nữa nè:
Trong trường/cột [mdsd] bạn đang có 07 danh mục khác nhau; Trong đó có 4+1 danh mục mình đã hiểu, đó là [VQG], [BTTT], [NCKH], [VHCQ] cũng như [PHDN] - Phòng hộ đầu nguồn; đã hiểu.
Vậy thì, còn 02 loại [MDK] & [SXGN] thuộc loại nào trong danh mục 'Loại rừng'? ([PHCS], [PHCC] & [PHMT])
Trong khi đó báo cáo iêu cầu 'Rừng SX...' & 'Rừng ngoài đất 2ui hoạch. . .' sẽ lấy từ đâu?
 
Upvote 0
Mới là chuẩn với những gì mình nêu ra thôi; Còn nữa nè:
Trong trường/cột [mdsd] bạn đang có 07 danh mục khác nhau; Trong đó có 4+1 danh mục mình đã hiểu, đó là [VQG], [BTTT], [NCKH], [VHCQ] cũng như [PHDN] - Phòng hộ đầu nguồn; đã hiểu.
Vậy thì, còn 02 loại [MDK] & [SXGN] thuộc loại nào trong danh mục 'Loại rừng'? ([PHCS], [PHCC] & [PHMT])
Trong khi đó báo cáo iêu cầu 'Rừng SX...' & 'Rừng ngoài đất 2ui hoạch. . .' sẽ lấy từ đâu?
Dạ, MDK là kí hiệu của chữ mục đích khác, còn chữ SXGN là kí hiệu của từ sản xuất gỗ nhỏ, ta không quan tâm nó thuộc loại rừng nào.
Rừng Sản Xuất là mình vào cột malr3 sort lấy số 3 là Rừng Sản Xuất, và Rừng Ngoài quy hoạch đất Lâm Nghiệp là số 0 ở cột malr3 đấy.
Còn Rừng Phòng Hộ sau khi sort lấy số 1 ở cột malr3 xong, sau đấy lại vào mục đích sử dụng(mdsd) để sort lấy là Rừng Phòng Hộ dùng để làm gì, ví dụ như Rừng Phòng Hộ Đầu Nguồn thì là vào mdsd sort lấy chữ PHDN, là như vậy.
 
Upvote 0
Mới là chuẩn với những gì mình nêu ra thôi; Còn nữa nè:
Trong trường/cột [mdsd] bạn đang có 07 danh mục khác nhau; Trong đó có 4+1 danh mục mình đã hiểu, đó là [VQG], [BTTT], [NCKH], [VHCQ] cũng như [PHDN] - Phòng hộ đầu nguồn; đã hiểu.
Vậy thì, còn 02 loại [MDK] & [SXGN] thuộc loại nào trong danh mục 'Loại rừng'? ([PHCS], [PHCC] & [PHMT])
Trong khi đó báo cáo iêu cầu 'Rừng SX...' & 'Rừng ngoài đất 2ui hoạch. . .' sẽ lấy từ đâu?
Nhìn vào Bieu1B là Rừng Sản Xuất và Rừng Ngoài Quy Hoạch Cho Đất Lâm Nghiệp thì vào cột malr3 sort rồi lấy tính là song, không có yêu cầu là mục đích sử dụng là gì nữa. còn Rừng Phòng Hộ và Rừng Đặc Dụng thì sau khi sort xong ở cột malr3 xong, phải vào cột mục đích sử dụng(mdsd) để sort tiếp nữa, là nó mục đích sử dụng là gì.
 
Upvote 0
Nhìn vào Bieu1B là ta thấy rõ ràng, để làm được thì ta phải vào sheet Bảng mã để xem kí hiệu của chúng ở cột D, sau đấy mới vào sheet CSDL để mới biết nó là cái nào để ta dò tìm nó mới đúng.
Cảm ơn mọi người!
 
Upvote 0
Cái chìa khóa tôi đã đưa cho ở bài #2 của Link sau:

http://www.giaiphapexcel.com/forum/...ùm-code-tổng-hợp-dữ-liệu-mong-mọi-người-giúp!

Các biểu đều phải có mã loại đất và mã (số) thì dựa vào đó làm thì có vấn đề gì sảy ra đâu.

Có nghĩa là các biểu với CSDL phải thống nhất về mã loại đất và mã (số) thì dựa vào đó để thực hiện, còn không thống nhất thì bó tay chẳng ai cho kết quả chính xác được.
 
Upvote 0
Tóm lại là trong biểu mẫu 1B ta chỉ sẽ báo cáo 7 cột số liệu, đó là
[F] - Vườn QG
[G] - Khu bảo tồn TN
[H] - Rừng NC
- Khu BV cảnh quan
[K] - Đầu nguồn
[o] - Rừng SX
[P] - Rừng ngoài QH

Bạn nhấn 'OK', ta sẽ bắt đầu tổng hợp số liệu các dòng:
d8: Nguyên sinh
d9: Thứ sinh
D11: Trồng mới trên đất 0 rừng
D12: Trồng lại
D13: Tái sinh tự nhiên

Hình như mình đang tập tính kiên nhẫn thì fải!
 
Upvote 0
Cái chìa khóa tôi đã đưa cho ở bài #2 của Link sau:

http://www.giaiphapexcel.com/forum/...ùm-code-tổng-hợp-dữ-liệu-mong-mọi-người-giúp!

Các biểu đều phải có mã loại đất và mã (số) thì dựa vào đó làm thì có vấn đề gì sảy ra đâu.

Có nghĩa là các biểu với CSDL phải thống nhất về mã loại đất và mã (số) thì dựa vào đó để thực hiện, còn không thống nhất thì bó tay chẳng ai cho kết quả chính xác được.
Vâng, ở đây chỉ có 1 biểu sản phẩm duy nhất là KetQuaBieu1B ở sheet KetQuaBieu1B, còn sheet Bieu1B và sheet Bảng mã là để giải thích làm sao và lấy cái gì ở đâu, còn sheet CSDL là sheet nó chứa dữ liệu mình đưa vào để lập ra bảng tổng hợp theo KetQuaBieu1B đấy.
Vâng nó thống nhất hết, nếu nó nhảy tung lung thì làm sao mà có thể làm được.
 
Upvote 0
Tóm lại là trong biểu mẫu 1B ta chỉ sẽ báo cáo 7 cột số liệu, đó là
[F] - Vườn QG
[G] - Khu bảo tồn TN
[H] - Rừng NC
- Khu BV cảnh quan
[K] - Đầu nguồn
[o] - Rừng SX
[P] - Rừng ngoài QH

Bạn nhấn 'OK', ta sẽ bắt đầu tổng hợp số liệu các dòng:
d8: Nguyên sinh
d9: Thứ sinh
D11: Trồng mới trên đất 0 rừng
D12: Trồng lại
D13: Tái sinh tự nhiên

Hình như mình đang tập tính kiên nhẫn thì fải!

Dựa vào sheet Bảng mã nhìn vào cột D ở sheet bảng mã là kí hiệu của chúng, sau đấy mới vào sheet CSDL lọc chúng ra theo mẫu biểu Bieu1B
Em có ghi rõ trong sheet Bảng mã mà.
 
Upvote 0
Tóm lại là trong biểu mẫu 1B ta chỉ sẽ báo cáo 7 cột số liệu, đó là
[F] - Vườn QG
[G] - Khu bảo tồn TN
[H] - Rừng NC
- Khu BV cảnh quan
[K] - Đầu nguồn
[o] - Rừng SX
[P] - Rừng ngoài QH

Bạn nhấn 'OK', ta sẽ bắt đầu tổng hợp số liệu các dòng:
d8: Nguyên sinh
d9: Thứ sinh
D11: Trồng mới trên đất 0 rừng
D12: Trồng lại
D13: Tái sinh tự nhiên

Hình như mình đang tập tính kiên nhẫn thì fải!

Đúng rồi đấy HYen17
Cảm ơn HYen17!
 
Upvote 0
Được 2 dòng số liệu rồi đây! Nhưng . . . . .

Tổng kết theo số liệu cột 'mgolo' thôi (Theo CSDL trước của bạn)

Bạn kiểm tra các số liệu xem đúng hết chưa.

Mà sao bạn xài tên trường/cột trong CSDL chứng mắt thế không biết;

Thay vì 'nggocrt' sao không là 'NgGocRT'

Nhắc bạn: Việc tổng kết này chỉ có thể là VBA; Do vậy tên các trang tính không được là tiếng Việt có dấu.
 
Lần chỉnh sửa cuối:
Upvote 0
Tổng kết theo số liệu cột 'mgolo' thôi (Theo CSDL trước của bạn)

Bạn kiểm tra các số liệu xem đúng hết chưa.

Mà sao bạn xài tên trường/cột trong CSDL chứng mắt thế không biết;

Thay vì 'nggocrt' sao không là 'NgGocRT'

Nhắc bạn: Việc tổng kết này chỉ có thể là VBA; Do vậy tên các trang tính không được là tiếng Việt có dấu.
Dạ, Anh ChanhTQ@ xem lại nó bị nhầm rồi ạ, kết quả chưa đúng ạ. Không phải nggocrt do cái này là quy định nó xuất ra từ phần mềm khác ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Tổng kết theo số liệu cột 'mgolo' thôi (Theo CSDL trước của bạn)

Bạn kiểm tra các số liệu xem đúng hết chưa.

Mà sao bạn xài tên trường/cột trong CSDL chứng mắt thế không biết;

Thay vì 'nggocrt' sao không là 'NgGocRT'

Nhắc bạn: Việc tổng kết này chỉ có thể là VBA; Do vậy tên các trang tính không được là tiếng Việt có dấu.
Đây là Bảng kết quả thống kê của xã Ia Pia, Anh xem kết quả để viết cho chính xác ạ
Em xin cảm ơn!
 
Upvote 0
Tổng kết theo số liệu cột 'mgolo' thôi (Theo CSDL trước của bạn)

Bạn kiểm tra các số liệu xem đúng hết chưa.

Mà sao bạn xài tên trường/cột trong CSDL chứng mắt thế không biết;

Thay vì 'nggocrt' sao không là 'NgGocRT'

Nhắc bạn: Việc tổng kết này chỉ có thể là VBA; Do vậy tên các trang tính không được là tiếng Việt có dấu.
Dạ, đây là Bảng kết quả thống kê của xã Ia Pia, Anh xem kết quả để viết cho chính xác ạ
Em xin cảm ơn!
 
Upvote 0
Anh ChanhTQ đây là kết quả của xã Ia Pia ạ
do mạng nó sao nên nó bị lỗi
Cảm ơn anh
 
Upvote 0
Dạ, đây là Bảng kết quả thống kê của xã Ia Pia, Anh xem kết quả để viết cho chính xác ạ
Em xin cảm ơn!
Thứ nhất số liệu do macro đem lại đã trùng khớp với hàng/dòng 10 của bạn; Ở đây cần khẵng định với nhau rằng:
Số liệu dòng 10 này sẽ là tổng của 2 dòng dưới nó liền kề; Ví dụ ở ô [G10] của bạn đang là 212.9 sẽ fải bằng với [G10]+[G12]

Mình đinh ninh rằng công thức của bạn tại [G11] có nội dung là =SUM(G12:G14) là sai lầm trầm trọng.
Không thể nào lấy râu ông cắm cằm bà như vậy được!
 
Upvote 0
Thứ nhất số liệu do macro đem lại đã trùng khớp với hàng/dòng 10 của bạn; Ở đây cần khẵng định với nhau rằng:
Số liệu dòng 10 này sẽ là tổng của 2 dòng dưới nó liền kề; Ví dụ ở ô [G10] của bạn đang là 212.9 sẽ fải bằng với [G10]+[G12]

Mình đinh ninh rằng công thức của bạn tại [G11] có nội dung là =SUM(G12:G14) là sai lầm trầm trọng.
Không thể nào lấy râu ông cắm cằm bà như vậy được!
Anh nói vậy không đúng rồi, vì G11=Sum(G12:G14) vì Trừng Trồng nó chia làm thành 3 mục nhỏ ở đưới, vì vậy lấy 3 mục nhỏ ở dưới cộng lại là ra Rừng Trồng
Anh không thấy dưới mục 2.Rừng Trồng nó có 3 ngạch đấy.
Còn như Anh nói G10 mà sao lại chính bằng G10+G12 được, cái đấy là sai
Em có gửi kết quả, anh có thể nhìn vào là thấy rõ
Em xin cảm ơn!
 
Upvote 0
& đây có thêm số liệu rừng trồng; Xin gởi bạn kiểm tra

Trước khi tiếp về vấn đề tổng hợp rừng cây cao su & đặc sản, xin hỏi bạn cho rõ như sau:

Ở trang 'Bieu1B' iêu cầu tổng hợp (TH) (dòng 15): sản lượng cây cao su; Chuyện này đã rõ hơn ban ngày!
Tại dòng 16 iêu cầu TH cây đặc sản (điều, xoài)
Nhưng ở trang CSDL, tại trường/cột này còn có Keo & bạch đàn;
Vậy 2 loại sau này sẽ TH vô dòng nào: Ở dòng 16 hay gộp chung trong dòng 14?

Bạn cho biết thông tin này mới tiếp tục được.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trước khi tiếp về vấn đề tổng hợp rừng cây cao su & đặc sản, xin hỏi bạn cho rõ như sau:

Ở trang 'Bieu1B' iêu cầu tổng hợp (TH) (dòng 15): sản lượng cây cao su; Chuyện này đã rõ hơn ban ngày!
Tại dòng 16 iêu cầu TH cây đặc sản (điều, xoài)
Nhưng ở trang CSDL, tại trường/cột này còn có Keo & bạch đàn;
Vậy 2 loại sau này sẽ TH vô dòng nào: Ở dòng 16 hay gộp chung trong dòng 14?

Bạn cho biết thông tin này mới tiếp tục được.
Dạ, dòng 16 là mình tìm lọc lấy cây Đặc Sản thôi là lọc lấy cây Điều và cây Xoài cộng lại ra dòng 16.
Còn Dòng 15 loc lấy cây Cao Su
Còn dòng 14 tức là mục 3. Rừng Trồng cây Cao Su và cây Đặc Sản( Điều và Xoài) nên nên nó bằng dòng 16 cộng với dòng 15, còn các cây Keo Bạch Đàn không có tính đến. Kệ nó.
Cảm ơn!
 
Upvote 0
Trước khi tiếp về vấn đề tổng hợp rừng cây cao su & đặc sản, xin hỏi bạn cho rõ như sau:

Ở trang 'Bieu1B' iêu cầu tổng hợp (TH) (dòng 15): sản lượng cây cao su; Chuyện này đã rõ hơn ban ngày!
Tại dòng 16 iêu cầu TH cây đặc sản (điều, xoài)
Nhưng ở trang CSDL, tại trường/cột này còn có Keo & bạch đàn;
Vậy 2 loại sau này sẽ TH vô dòng nào: Ở dòng 16 hay gộp chung trong dòng 14?

Bạn cho biết thông tin này mới tiếp tục được.
Kết quả của Hyen17 chưa đúngạ, có thể bị nhầm chỗ Bảng mã nên kết quả chưa được chính xác
ở đây chỉ có Rừng Thứ Sinh, Rừng Nguyên Sinh thì không còn nữa.
Cảm ơn ạ
 
Upvote 0
Kết quả chưa đúng ạ, có thể bị nhầm chỗ Bảng mã nên kết quả chưa được chính xác
ở đây chỉ có Rừng Thứ Sinh, Rừng Nguyên Sinh thì không còn nữa.
Cảm ơn ạ

Bạn cần chỉ rõ dòng nào chưa đúng; Nếu đúng sẽ là bao nhiêu.

File dưới có làm thêm 2 dòng đặc sản rồi đó.
 

File đính kèm

Upvote 0
Rừng nguyên sinh ở đây không có, chỉ có Rừng thứ sinh thôi, nên sai dòng 10 và dòng 11
Dạ; Em cảm ơn!

Đúng là đã sai chổ này; Đã sửa chữa lỗi lầm & tổng hợp số liệu theo 'Lập địa'
 

File đính kèm

Upvote 0
@Nguyen_Thi_Dieu:
Gửi bạn file thống kê rừng. Tính cho tất cả các hạng mục
Đã kiểm tra, đúng yêu cầu của bạn.
Tải theo đường dẫn hoặc file đính kèm.
Trong file có ví dụ của tỉnh Bình phước và tỉnh Gia Lai
Nếu 1 huyện có nhiều xã, code sẽ lập biểu mỗi xã 1 sheet.
http://upfile.vn/TgGQKVZCNqBt/thong-ke-rung-xlsm.htm
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Đúng là đã sai chổ này; Đã sửa chữa lỗi lầm & tổng hợp số liệu the
Cảm ơn HYen17 khi nào rảnh thì viết giùm, em cũng đã đưa một bảng kết quả rồi mà, HYen17 viết còn thiếu và sai.
Chắc có lẽ sẽ không làm phiền mọi người nữa.
Nhưng xin cho em hỏi một xíu
ở sheet CSDL đấy nó có nhiều xã và bây giờ em muốn lọc từng xã ra để tính, khi em lọc xã A nào đấy ở sheet CSDL thì ở sheet KetQua chỉ tính cho xã A thôi, sau đấy ta copy KetQua của xã A đấy qua một sheet mới tên là xã A, sau đấy lại tiếp tục lọc ra xã B ở sheet CSDL sau đấy vào sheet KetQua copy ra một sheet mới tên là xã B có chứa kết quả xã B, làm cho đến khi nào hết xã luôn, có bao nhiều xã sẽ là bao nhiêu sheet kết quả.
ở đât là em đã lập công thức tính cho sheet KetQua rồi, giờ chỉ qua sheet CDSL để lọc xã nào thì nó sẽ tính cho xã đấy sau đấy copy ra sheet mới đặt tên cho kết quả xã đấy.
 
Lần chỉnh sửa cuối:
Upvote 0
Chuyện này không gian nan lắm!

Trong file: Dữ liệu trong toàn huyện sẽ ở trang 'DuLieu'

Bạn vô trang 'KetQua' chọn 1 tên xã cụ thể nào đó tại [B3]
Lúc đó dữ liệu ở trang 'CSDL' sẽ chỉ là ở xã mà bạn đã chọn;

Việc lắp công thức vô 'KetQua' là việc tiếp theo của bạn.
 

File đính kèm

Upvote 0
Trong file: Dữ liệu trong toàn huyện sẽ ở trang 'DuLieu'

Bạn vô trang 'KetQua' chọn 1 tên xã cụ thể nào đó tại [B3]
Lúc đó dữ liệu ở trang 'CSDL' sẽ chỉ là ở xã mà bạn đã chọn;

Việc lắp công thức vô 'KetQua' là việc tiếp theo của bạn.
Vâng, Em cảm ơn Anh nhiều!
 
Upvote 0
Trong file: Dữ liệu trong toàn huyện sẽ ở trang 'DuLieu'

Bạn vô trang 'KetQua' chọn 1 tên xã cụ thể nào đó tại [B3]
Lúc đó dữ liệu ở trang 'CSDL' sẽ chỉ là ở xã mà bạn đã chọn;

Việc lắp công thức vô 'KetQua' là việc tiếp theo của bạn.
Anh SA_DQ có thể viết giùm em code nó tự lọc các xã ra thành mỗi sheet sau khi nó tỉnh toán xong ở sheet kết quả không?
Em ví dụ: sheet kết quả là sheet chung em đã lập hàm tính toán ở đây em sử dụng hàm sumifs để tính trong các thứ mục cho sheet kết quả, em muốn nhờ mọi người viết giùm code mình vào sheet CSDL lọc ra từng xã, ví dụ mình vào lọc xã A ra thì cái sheet kết quả nó chỉ tính cho xã A xong, sau đấy copy kết quả của xã A ở sheet kết quả ra, đưa kết quả xã A qua một sheet mới đặt tên là kết quả xã A, sau đấy tiếp tục vào sheet CSDL lọc ra xã B, thì sheet kết quả nó chỉ tính cho xã B, sau đấy copy kết quả của Xã B ra một một sheet mới đặt tên sheet mới là kết quả xã B, cứ cho đến hết xã trong sheet CSDL.
và một code cập nhật để khi mình bỏ dữ liệu vào sheet CSDL thì nó sẽ cập nhật lại dữ liệu mới, xóa đi dữ liệu cũ.
Xin Cảm ơn.
 
Upvote 0
(1) Anh có thể viết giùm em code nó tự lọc các xã ra thành mỗi sheet sau khi nó tỉnh toán xong ở sheet kết quả không?

(2) và một code cập nhật để khi mình bỏ dữ liệu vào sheet CSDL thì nó sẽ cập nhật lại dữ liệu mới, xóa đi dữ liệu cũ.
Xin Cảm ơn.

(1) Xem trong file, chỉ mới có 4 trang có số liệu thôi.
Với bạn fải vô hiệu hóa dòng lệnh
Mã:
13    gpe_ThKe   ''
trong macro sự kiện tại trang 'KetQua'
Thực hiện các công thức tính toán số liệu trên trang này tại vài dòng cần thiết, như tại dòng 10 & 11 hay dòng nào khác bạn muốn

Sau đó chọn xã nào đó có số liệu & tên trang tính tương ứng thử xem

(2) Bạn cần bỏ số liệu toàn huyện vô trang 'DuLieu'
Fần còn lại macro sự kiện sẽ làm hầu hết, riêng chuyện tạo trang tính ứng với 19 xã trong huyện của bạn

Chúc thành công!
 

File đính kèm

Upvote 0
(1) Xem trong file, chỉ mới có 4 trang có số liệu thôi.
Với bạn fải vô hiệu hóa dòng lệnh
Mã:
13    gpe_ThKe   ''
trong macro sự kiện tại trang 'KetQua'
Thực hiện các công thức tính toán số liệu trên trang này tại vài dòng cần thiết, như tại dòng 10 & 11 hay dòng nào khác bạn muốn

Sau đó chọn xã nào đó có số liệu & tên trang tính tương ứng thử xem

(2) Bạn cần bỏ số liệu toàn huyện vô trang 'DuLieu'
Fần còn lại macro sự kiện sẽ làm hầu hết, riêng chuyện tạo trang tính ứng với 19 xã trong huyện của bạn

Chúc thành công!
Dạ, do em không biết viết nên, em viết công thức tính ở trang sheet kết quả không à, em không có viết code, nên em muốn nhờ mọi người viết code để nó tự lọc tấc cả các xã trong sheet CSDL để nó tính vã ở sheet kết quả cho từng xã, sau khi tính xong cho xã nào thì nó sẽ copy ra sheet khác và đặt tên là kết quả xã đấy.
 
Upvote 0
(1) Xem trong file, chỉ mới có 4 trang có số liệu thôi.
Với bạn fải vô hiệu hóa dòng lệnh
Mã:
13    gpe_ThKe   ''
trong macro sự kiện tại trang 'KetQua'
Thực hiện các công thức tính toán số liệu trên trang này tại vài dòng cần thiết, như tại dòng 10 & 11 hay dòng nào khác bạn muốn

Sau đó chọn xã nào đó có số liệu & tên trang tính tương ứng thử xem

(2) Bạn cần bỏ số liệu toàn huyện vô trang 'DuLieu'
Fần còn lại macro sự kiện sẽ làm hầu hết, riêng chuyện tạo trang tính ứng với 19 xã trong huyện của bạn

Chúc thành công!
Còn em cũng đã sưu tầm trên mạng cách lọc ra từng xã ở trong sheet CSDL thành mỗi xã một sheet rồi, nhưng sau đấy tính cho từng sheet ứng với từng xã bằng công thức ở sheet kết quả được, đấy là thủ công không cần code.
ý em là cần một nút code cập nhật dữ liệu khi dữ liệu ở sheet CSDL thay đổi, thứ hai là code Biểu 1 như trên, chỉ cần bấm code biểu 1 là nó sẽ tự lọc dữ liệu từng xã ở sheet CSDL ra, sau đấy nó đưa từng xã vào sheet kết quả để tổng hợp, sau khi tổng hợp xong nó copy kết quả ra 1 sheet mới đặt tên kết quả xã đấy.
Em xin cảm ơn.
 
Upvote 0
Dạ, em viết công thức tính ở trang sheet kết quả không à, nên em muốn nhờ mọi người viết code để nó tự lọc tấc cả các xã trong sheet CSDL để nó tính vã ở sheet kết quả cho từng xã, sau khi tính xong cho xã nào thì nó sẽ copy ra sheet khác và đặt tên là kết quả xã đấy.

Thế này đi:
Bạn đưa 1 file gồm các trang như thế này:

'DuLieu' có chí ít số liệu của 2 xã trong 19 xã nơi bạn;
Trang 'KetQua' gồm vài công thức thống kê đặc trưng có đủ đầy số liệu nhất

Bạn sẽ nhận được kết quả theo í muốn, chắc vầy là bước đi ngắn nhất!
 
Upvote 0
Thế này đi:
Bạn đưa 1 file gồm các trang như thế này:

'DuLieu' có chí ít số liệu của 2 xã trong 19 xã nơi bạn;
Trang 'KetQua' gồm vài công thức thống kê đặc trưng có đủ đầy số liệu nhất

Bạn sẽ nhận được kết quả theo í muốn, chắc vầy là bước đi ngắn nhất!
Em gửi Anh file đây ạ
 

File đính kèm

Upvote 0
Thế này đi:
Bạn đưa 1 file gồm các trang như thế này:

'DuLieu' có chí ít số liệu của 2 xã trong 19 xã nơi bạn;
Trang 'KetQua' gồm vài công thức thống kê đặc trưng có đủ đầy số liệu nhất

Bạn sẽ nhận được kết quả theo í muốn, chắc vầy là bước đi ngắn nhất!
Em đã tính toán thủ công cho hai hàng hàng 10 và hàng 11 ở sheet kết quả rồi và giống như code các Anh viết giùm em.
Mong sớm nhận được sự hồi âm của Anh.
Xin cảm ơn!
 
Upvote 0
Thế này đi:
Bạn đưa 1 file gồm các trang như thế này:

'DuLieu' có chí ít số liệu của 2 xã trong 19 xã nơi bạn;
Trang 'KetQua' gồm vài công thức thống kê đặc trưng có đủ đầy số liệu nhất

Bạn sẽ nhận được kết quả theo í muốn, chắc vầy là bước đi ngắn nhất!
Em ví cái sheet Kết Qủa giống như là một cái khuôn, cứ mỗi lần lọc ra từng xã thì các công thức của cái khuôn này chỉ tính cho xã này ở trong sheet Dữ liệu, sau khi tính toán xong cái khuôn này nó sẽ cho ra một cái sản phẩn là xã đang lọc, sau đấy tiếp tục lọc xã tiếp nữa, cái khuôn này lại tính cho xã kế tiếp, sau đấy nó cho ra kết quả của xã kết tiếp, cho đến khi nào hết xã thì thôi.
Mục đích là tao 1 code tự lọc các xã trong sheet dữ liệu và nó sẽ được tính toán trong sheet kết quả, sau đấy cho ra kết quả của từng xã.
Và 1 code cập nhật khi dữ liệu ở sheet dữ liệu thay đổi.
Em cảm ơn!
 
Upvote 0
Em đã tính toán thủ công cho hai hàng hàng 10 và hàng 11 ở sheet kết quả rồi và giống như code các Anh viết giùm em.
Mong sớm nhận được sự hồi âm của Anh; Xin cảm ơn!
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
 

File đính kèm

Upvote 0
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
Dạ, cảm ơn HYen17 ạ, ở trong quy định nó có tới 7 phụ biểu, nhiều lắm ạ, vì vậy nên em muốn nó lọc tự động các xã ra để nó ính ở trang kết quả, sau khi tính xong cho xã nào thì nó copy xã đấy qua sheet mới và đặt tên là kết quả xã đấy ví dụ như nó có 2 xã thì có 2 sheet kết quả, sheet kết quả xã Ia Pia, sheet kết quả xã Ia K, em ví dụ như vậy.
Em cảm ơn ạ.
 
Upvote 0
Dạ, cảm ơn HYen17 ạ, ở trong quy định nó có tới 7 phụ biểu, nhiều lắm ạ, vì vậy nên em muốn nó lọc tự động các xã ra để nó ính ở trang kết quả, sau khi tính xong cho xã nào thì nó copy xã đấy qua sheet mới và đặt tên là kết quả xã đấy ví dụ như nó có 2 xã thì có 2 sheet kết quả, sheet kết quả xã Ia Pia, sheet kết quả xã Ia K, em ví dụ như vậy.
Em cảm ơn ạ.
Còn làm thủ công thì lâu lắm, làm thủ công thì em vào sheet CSDL em sort từng xã sau đấy em bỏ vô một sheet tên là sheet xã cần tính, sheet xã cần tính này em đặt name cho nó, và em cũng đã lập công thức cho sheet kết quả, là nó chỉ tính cho 1 xã đấy, sau khi tính xong, em copy kết quả của xã đấy ra sheet mới tên là kết quả xã Ia Pia, sau đấy em tiếp tục vào sheet CSDL em lọc tiếp xã nào đấy vào bỏ vào sheet xã cần tính, thì sheet kết quả nó lại tiếp tục tính cho xã đó, tính xong em copy ra nữa, cho đến khi nào hết thì thôi.
Em cảm ơn ạ.
 
Upvote 0
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
Em làm ở Gia Lai, làm phiếu biểu kiểm kê nó rất nhiều ạ.
 
Upvote 0
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
HYen17 đọc trong file work em gửi nè, nó có rất nhiều biểu ạ.
File đây ạ
Vì vậy làm thủ công nó cũng lâu lắm!
Hihi
Cảm ơn ạ
 

File đính kèm

Upvote 0
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
Em thấy Excel hay quá, đặc biệt là có nhiều người giỏi bên code Excel như anh ChanhTQ@, HYen17, HungQuoc49, anh SA_DQ rất giỏi về viết code.
Chúc tấc cả mọi người trên diễn đàn ngày cuối tuần có nhiều niềm vui!
Nên em cũng muốn mọi người trên diễn đàn có thể giúp em, xin cảm ơn!
 
Upvote 0
HYen17 đọc trong file work em gửi nè, nó có rất nhiều biểu ạ.
File đây ạ
Vì vậy làm thủ công nó cũng lâu lắm!
Hihi
Cảm ơn ạ

Góp ý cho bạn về cách kiểm kê rừng:

- Để làm tốt công tác này bạn có thể dùng Link giữa cơ sở dữ liệu với các biểu ở cấp xã.
- Tiếp theo Link các xã lên cấp huyện.
- Sau đó Link cấp huyện lên cấp tỉnh.

Bạn chỉ cần thay đổi nội dung bất kỳ ở cấp xã thì toàn bộ các biểu từ huyện lên tỉnh sẽ thay đổi theo.

Nếu bạn có quen 1 người nào làm ở bộ phận Thống kê đất đai của huyện (nơi của bạn) để xin 1 File liên kết ở dạng này để tham khảo.
 
Upvote 0
Hai dòng thủ công của bạn mình không xài được, do mình chỉ có E2003.
Mình đã thế bằng 1 hàm DSUM() để kiểm tra kết quả;

Đến thời điểm này, dữ liệu các xã bạn cần đổ vô 'CSDL'
Đến trang 'Ket Qua' chọn lấy 1 trong 2 xã hiện đã có các trang tính tương ứng của nó tại ô [B3]
Macro sẽ làm các việc sau (viết để bạn nắm qui trình & thực hiện các bước cho chuẩn):

(*) Chép dữ liệu của xã mà bạn đã chọn từ 'CSDL' sang 'Du Lieu'
Nhờ bạn đã áp sẵn công thức tại trang 'Ket qua' cho nên nó tiếp tục chép số liệu trang tính này sang trang ứng với tên xã của bạn;
Lưu í với bạn 1 số điều sau:
1./ Tên trang tính không dùng dấu tiếng Việt, nhất là Ô, Ă, Ơ, dấu nặng, hỏi ngã
Các thanh sắc & huyền xài trong 1 số trường hợp hẵn hữu

2./Tên trang tính không nên quá dài, vì kiểu mà chúng ta đang chọn sẽ fát sinh 19 trang tính của mỗi xã.

(3) Như mình thì mình không cần đến 19 trang tính này & thay vô đó chỉ là 1 trang tính tên là 'Report' & trang này sẽ nhận mọi kết quả sau mỗi lần chạy macro sự kiện tại [B3] của 'Ket Qua'

Chúc ngày cuối tuần vui vẻ!
Em cũng đã gửi một video xử lí số liệu vào tin nhắn của HYen17, hướng của em là làm như video vậy
Em cảm ơn!
 
Upvote 0
HYen17 đọc trong file work em gửi nè, nó có rất nhiều biểu ạ.
File đây ạ Vì vậy làm thủ công nó cũng lâu lắm!
Hihi Cảm ơn ạ

Có nhiều loại biểu thì sẽ fải có nhiều loại Form ứng với nó;

Nhưng mình muốn hỏi bạn, các báo cáo về rừng của các xã đó bạn sẽ fải làm gì với chúng?
Câu hỏi này rất quan trọng với bọn này, xin đề nghị bạn trả lời thiệt đầy đủ!
 
Upvote 0
Có nhiều loại biểu thì sẽ fải có nhiều loại Form ứng với nó;

Nhưng mình muốn hỏi bạn, các báo cáo về rừng của các xã đó bạn sẽ fải làm gì với chúng?
Câu hỏi này rất quan trọng với bọn này, xin đề nghị bạn trả lời thiệt đầy đủ!
Dạ, để báo ra ạ, ví dụ như biểu 1B là báo cáo về trữ lượng rừng ở cấp xã, 1A biểu cáo trữ lượng rừng về diện tích cấp xã,........ cấp huyện, cấp tỉnh. Còn nhiều mẫu nữa.
Em sẽ gửi anh một video nó xử lí số liệu ạ
Anh có thể xem là rõ tấc cả
Em gửi trong tin nhắn đấy
Xin cảm ơn!
 
Upvote 0
Góp ý cho bạn về cách kiểm kê rừng:

- Để làm tốt công tác này bạn có thể dùng Link giữa cơ sở dữ liệu với các biểu ở cấp xã.
- Tiếp theo Link các xã lên cấp huyện.
- Sau đó Link cấp huyện lên cấp tỉnh.

Bạn chỉ cần thay đổi nội dung bất kỳ ở cấp xã thì toàn bộ các biểu từ huyện lên tỉnh sẽ thay đổi theo.

Nếu bạn có quen 1 người nào làm ở bộ phận Thống kê đất đai của huyện (nơi của bạn) để xin 1 File liên kết ở dạng này để tham khảo.
Dạ, không quen ai hết Anh.
em có một video dạng nó làm theo giống như video này
Do video của người ta nên em không đưa lên diễn đàn được
Em gửi qua tin nhắn anh nha
Để anh xem mẫu thôi!
 
Upvote 0
Em gửi video mẫu cho mọi người xem tham khảo, đây là một video em tìm thấy trên mạng ạ
và đây là link trên youtube ạ
https://www.youtube.com/watch?v=yVgJc2XMU6o
Xin cảm ơn!
Chúc mọi người cuối tuần có nhiều niềm vui bên gia đình và người thân!
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ, để báo ra ạ, ví dụ như biểu 1B là báo cáo về trữ lượng rừng ở cấp xã, 1A biểu cáo trữ lượng rừng về diện tích cấp xã,........ cấp huyện, cấp tỉnh. Còn nhiều mẫu nữa.
Xin cảm ơn!

'báo ra' là gì vậy bạn? Là không 'báo vô' hở?

Nếu là để báo cáo thì hiển nhiên cần báo cáo ngang cấp hay cấp trên, đành rồi!

Nhưng muốn biết bạn báo cáo bằng văn bản hay bằng file?

Nói luôn đỡ tốn thời giờ: Nếu báo bằng việc in ra văn bản thì không cần 19 trang tính B/cáo cho 19 xã; mà chỉ cần đưa ra trang (gọi tạm nó là 'Report') để in & nộp B/cáo thôi.
Còn báo bằng file, thì nên nói với mấy ngài ngu excel cấp trên rằng nên bấm vô đâu đó để xem kết quả. hiện trên màn hình.
 
Upvote 0
'báo ra' là gì vậy bạn? Là không 'báo vô' hở?

Nếu là để báo cáo thì hiển nhiên cần báo cáo ngang cấp hay cấp trên, đành rồi!

Nhưng muốn biết bạn báo cáo bằng văn bản hay bằng file?

Nói luôn đỡ tốn thời giờ: Nếu báo bằng việc in ra văn bản thì không cần 19 trang tính B/cáo cho 19 xã; mà chỉ cần đưa ra trang (gọi tạm nó là 'Report') để in & nộp B/cáo thôi.
Còn báo bằng file, thì nên nói với mấy ngài ngu excel cấp trên rằng nên bấm vô đâu đó để xem kết quả. hiện trên màn hình.
Em viết nhầm để báo cáo, báo cáo bằng file nợp, sau khi tổng kết xong cho các sheet ở file Excel xong chuyển các file đấy sang file PDF mỗi xã là một file riêng.
Mà em nói anh ChanhTQ@ như thế này, thực ra em muốn ứng dụng code excel này để giúp cho công việc nhanh hơn. Em thì không biết anh ChanhTQ@ làm gì và làm ở đâu và học cao đến đâu, nhưng em nghe cái từ " NGU " của anh đấy nói nhẹ thì có gì đấy không được hay lắm.
 
Upvote 0

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

Back
Top Bottom