Nhờ mọi người giúp tách nhiều dòng trong 1 cell thành các cột (1 người xem)

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

tuoigiyeuem

Thành viên chính thức
Tham gia
19/12/08
Bài viết
99
Được thích
4
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
 

File đính kèm

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
Bạn dùng CT này ở C2:
Mã:
C2=TRIM(MID(SUBSTITUTE($B2,CHAR(10),REPT(" ",200)),(COLUMN(A1)-1)*200+1,200))
Fill sang phải, rồi fill xuống!!!!
 
Hình như em nhầm đề bài thì phải. Kết quả ra như file đính kèm bạn dử dụng cái Sub này nha
Mã:
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("C2:D1000").ClearContents .Range("C2").Resize(K, 3) = dArr End With End Sub

Đúng như này rồi anh. Cám ơn anh
 
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
Có "trò chơi" này thấy cũng.. vui vui nè:
Mã:
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
 

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

Back
Top Bottom