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

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
Web KT

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

Back
Top Bottom