vohoangtung
Thành viên mới

- Tham gia
- 19/3/10
- Bài viết
- 31
- Được thích
- 0
Ký hiệu "LUC","LUK" nghĩa là gì vậy bạnCần chuyển đổi cấu trúc dữ liệu nhập vào cơ sở dữ liệu xin cao nhân giúp với ạ
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 |
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
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
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,"")
Nâng cấp Excel đi, không xài .xls nữa.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
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
F4 có lẽ là "TSN" mới đúngMã:C5=IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),FIND(C$4,SUBSTITUTE($A5,";",REPT(" ",50)))-IF(C$4="ONT",0,10),50))*1,"")
Mã luôn 3 ký tự còn diện tích số ký tự có thể khác 3Nâng cấp Excel đi, không xài .xls nữa.
C5 =IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),INT(FIND(C$4,$A5,1)/4)*50+1,50)),"")
Cái phép trừ là phòng trường hợp này đó bác.Mã luôn 3 ký tự còn diện tích số ký tự có thể khác 3
Copy ngang và xuốngMã:C5 =IFERROR(TRIM(MID(SUBSTITUTE($B5,";",REPT(" ",50)),INT(FIND(C$4,$A5,1)/4)*50+1,50)),"")
-IF(C$4="ONT",0,10)
Nếu cột A không có "ONT" , ví dụ A6=LNK;BHK;TSN, kết quả sẽ không đúngCái phép trừ là phòng trường hợp này đó bác.
Mã:-IF(C$4="ONT",0,10)
Chỗ này không hiểu lắm, bác có thể nói rõ hơn tí nữa.Nếu cột A không có "ONT" , ví dụ A6=LNK;BHK;TSN, kết quả sẽ không đúng
Bạn xem kết quả trong file chỗ màu camChỗ này không hiểu lắm, bác có thể nói rõ hơn tí nữa.
Thử thêm cách: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
C5=IFERROR(MID(SUBSTITUTE($B5,";",REPT(" ",100)),INT(FIND(C$4,$A5)/4)*100+1,100)*1,"")
Cái điều kiện trừ lùi bị sai.Bạn xem kết quả trong file chỗ màu cam
Theo tôi thì nên sử dụng VBA, dựa vào dấu ; tách mỗi nội dung 1 dòng rồi sử dụng Pivottable là nhanh lẹ nhất.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