Xin giúp tách dữ liệu theo điều kiện (1 người xem)

Liên hệ QC

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

Tại M5:N10 nhập bảng tra
ONTĐất ở tại nông thôn
LNKĐất trồng cây lâu năm
BHKĐất bằng trồng cây hàng năm khác
TSNĐất nuôi trồng thủy sản
LUC
LUK

Chạy đoạn code dưới đây
Mã:
Sub TachBieuMau()
Dim SArr
Dim Arr0, Arr1, Arr2
Dim Res
Dim i, j, k, x, z, t, rws
SArr = Sheet1.Range("A5", Sheet1.Range("C5").End(xlDown))
rws = UBound(SArr)
ReDim Res(1 To rws, 1 To 8)
With CreateObject("Scripting.Dictionary")
    For i = 5 To 10
        .Item(Sheet1.Range("M" & i).Value) = Array(i - 4, Sheet1.Range("N" & i))
    Next i
    For i = 1 To rws
        Arr0 = Split(";" & SArr(i, 1), ";")
        Arr1 = Split(";" & SArr(i, 2), ";")
        Arr2 = Split(";" & SArr(i, 3), ";")
        For j = 1 To UBound(Arr0)
            k = .Item(Arr0(j))(0)
            t = .Item(Arr0(j))(1)
            Res(i, k) = Arr1(j)
            Res(i, 7) = Res(i, 7) & "; " & t & ": " & Arr1(j) & "m2"
            Res(i, 8) = Res(i, 8) & "; " & t & ": " & Arr2(j)
        Next j
        Res(i, 7) = Trim(Mid(Res(i, 7), 2))
        Res(i, 8) = Trim(Mid(Res(i, 8), 2))
    Next i
End With
With Sheet1
    .Range("D5", .Range("K" & rws + 4)).ClearContents
    .Range("D5").Resize(rws, 8) = Res
    .Range("J5", .Range("K5").End(xlDown)).WrapText = 1
    .UsedRange.Rows.AutoFit
End With
End Sub
 
Thanks.
Xin bạn giúp mình viết công thức hàm tách với, chứ VBA không rành lắm
 

File đính kèm

Cảm ơn.
Xin bạn giúp mình viết công thức hàm tách với, chứ VBA không rành lắm
Mã:
C5=IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),FIND(C$4,SUBSTITUTE($A5,";",REPT(" ",50)))-IF(LEFT($A5,3)=C$4,0,10),50))*1,"")
F4 có lẽ là "TSN" mới đúng
 
Lần chỉnh sửa cuối:
Cảm ơn.
Xin bạn giúp mình viết công thức hàm tách với, chứ VBA không rành lắm

Mã:
C5=IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),FIND(C$4,SUBSTITUTE($A5,";",REPT(" ",50)))-IF(C$4="ONT",0,10),50))*1,"")
F4 có lẽ là "TSN" mới đúng
Nâng cấp Excel đi, không xài .xls nữa.
Mã luôn 3 ký tự còn diện tích số ký tự có thể khác 3
Mã:
C5 =IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),INT(FIND(C$4,$A5,1)/4)*50+1,50)),"")
Copy ngang và xuống
 

File đính kèm

Mã luôn 3 ký tự còn diện tích số ký tự có thể khác 3
Mã:
C5 =IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),INT(FIND(C$4,$A5,1)/4)*50+1,50)),"")
Copy ngang và xuống
Cái phép trừ là phòng trường hợp này đó bác.
Mã:
-IF(C$4="ONT",0,10)
 
Cảm ơn.
Xin bạn giúp mình viết công thức hàm tách với, chứ VBA không rành lắm
Thử thêm cách:
Mã:
C5=IFERROR(MID(SUBSTITUTE($B5,";",REPT(" ",100)),INT(FIND(C$4,$A5)/4)*100+1,100)*1,"")
Enter, copy qua phải, rồi fill xuống.

Thân
p/s: chu choa chậm chân rồi
Khà khà khà
/-*+//-*+//-*+/
 

File đính kèm

Thanks mọi người nha. MÌnh không rành VBA lắm chỉ đọc được một số công thức hàm cơ bản.
Nhờ mọi người chỉ mình đã làm được, không phải ngồi nhập tay, rồi toét mắt đối soát nữa.
Thay mặt các em trong cơ quan đã không phải ngồi nhập xin cám ơn mọi người nhiều nha
 
Web KT

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

Back
Top Bottom