tuoigiyeuem
Thành viên chính thức


- Tham gia
- 19/12/08
- Bài viết
- 99
- Được thích
- 4


Bạn thử cái này xem saoEm có dữ liệu ở cột A, mỗi ô Cell gồm 2 - 3 dòng. Giờ em muốn tách các dòng đó ra các cột B, C, D.
Nhờ mọi người giúp em viết hàm hoặc code VBA để tách. Em cám ơn


Bạn dùng CT này ở C2:Em có dữ liệu ở cột A, mỗi ô Cell gồm 2 - 3 dòng. Giờ em muốn tách các dòng đó ra các cột B, C, D.
Nhờ mọi người giúp em viết hàm hoặc code VBA để tách. Em cám ơn
C2=TRIM(MID(SUBSTITUTE($B2,CHAR(10),REPT(" ",200)),(COLUMN(A1)-1)*200+1,200))
Sub TachCell()
Dim sArr, dArr, Tmp, I As Long, J As Long, K As Long
With Sheet1
sArr = .Range("B2", .Range("B65535").End(3)).Value
ReDim dArr(1 To UBound(sArr), 1 To 3)
For I = 1 To UBound(sArr)
K = K + 1
Tmp = Split(sArr(I, 1), Chr(10))
For J = 0 To UBound(Tmp)
dArr(K, J + 1) = Tmp(J)
Next J
Next I
.Range("C2:D1000").ClearContents
.Range("C2").Resize(K, 3) = dArr
End With
End Sub


Sub TachCell() Dim sArr, dArr, Tmp, I As Long, J As Long, K As Long With Sheet1 sArr = .Range("B2", .Range("B65535").End(3)).Value ReDim dArr(1 To UBound(sArr), 1 To 3) For I = 1 To UBound(sArr) K = K + 1 Tmp = Split(sArr(I, 1), Chr(10)) For J = 0 To UBound(Tmp) dArr(K, J + 1) = Tmp(J) Next J Next I .Range("C21000").ClearContents .Range("C2").Resize(K, 3) = dArr End With End Sub


Cám ơn anh. Kết quả ra đúng như em mong muốnBạn dùng CT này ở C2:
Fill sang phải, rồi fill xuống!!!!Mã:C2=TRIM(MID(SUBSTITUTE($B2,CHAR(10),REPT(" ",200)),(COLUMN(A1)-1)*200+1,200))
Có "trò chơi" này thấy cũng.. vui vui nè:Em có dữ liệu ở cột A, mỗi ô Cell gồm 2 - 3 dòng. Giờ em muốn tách các dòng đó ra các cột B, C, D.
Nhờ mọi người giúp em viết hàm hoặc code VBA để tách. Em cám ơn
Sub Test()
Dim sTmp As String
Sheet1.Range("B2:B17").Copy
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard: sTmp = .GetText
If Right(sTmp, 2) = vbCrLf Then sTmp = Left(sTmp, Len(sTmp) - 2)
sTmp = Replace(Replace(sTmp, vbCrLf, vbBack), vbLf, vbTab)
sTmp = Replace(Replace(sTmp, vbBack, vbCrLf), Chr(34), vbNullString)
.Clear: .SetText sTmp: .PutInClipboard
End With
Sheet1.Range("C2").PasteSpecial
End Sub