Xin hướng dẫn cách tách dữ liệu trong một ô thành nhiều dòng (7 người xem)

Liên hệ QC

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

mtnguyen9268

Thành viên mới
Tham gia
18/8/18
Bài viết
11
Được thích
0
Mình có một bảng số liệu ở ô A1 là ngành hàng, ô B1 là tất cả mã hàng của ngành hàng đó và mỗi mã cách nhau bằng dấu phẩy. Mình muốn tách các mã hàng thành 1 cột A, và cột B là ngành hàng tương ứng với mã hàng đó. Có cách nào dùng hàm Excell để xử lý không, mong mọi người giúp đỡ ạ!
 

File đính kèm

tớ làm thủ công nhưng thấy cũng nhanh. Coppy toàn bộ thả vào word, nhấn ctrl+H (Replace). ô find what gõ dấu phẩy (chỗ cách nhau của bạn), ô Replace witch: gõ ^p ( là mã của phím enter). chọn Replace all. thế là nó xuống dòng, rồi coppy lại sang excel thôi.
 
tớ làm thủ công nhưng thấy cũng nhanh. Coppy toàn bộ thả vào word, nhấn ctrl+H (Replace). ô find what gõ dấu phẩy (chỗ cách nhau của bạn), ô Replace witch: gõ ^p ( là mã của phím enter). chọn Replace all. thế là nó xuống dòng, rồi coppy lại sang excel thôi.

Đây là mình ví dụ nên đưa ra ít chứ bảng dữ liệu của mình có mấy trăm dòng, tổng mã hàng tới 2000 ngàn lận
Bài đã được tự động gộp:

Công thức chắc là có, nhưng mà nhức óc lắm và hơi nặng nữa. Viết code thì sẽ nhanh. :)
Viết code là dùng SQL hả bạn hay là dùng macro trên excell
 
Sử dụng ngôn ngữ VBA thôi bạn. Có thể sử dụng mảng để xử lý dữ liệu, sau đó gán kết quả lên sheet.
Sử dụng ngôn ngữ VBA thôi bạn. Có thể sử dụng mảng để xử lý dữ liệu, sau đó gán kết quả lên sheet.

Bạn có thể hướng dẫn mình làm cụ thể từng bước được không, cám ơn bạn.
 

Bạn có thể hướng dẫn mình sử dụng chi tiết từng bước hoặc bạn có link bài nào hướng dẫn làm gửi cho mình được không? Mình chưa bao giở sử dung VBA
 
Bạn có thể hướng dẫn mình làm cụ thể từng bước được không, cám ơn bạn.
Đại loại là thế này:
Mã:
Sub TachChuoi()
    Dim i As Long, j As Long, k As Long, Tmp, Tmp1, Arr()
    Tmp = Sheet1.Range("A3:B" & Sheet1.[A65000].End(xlUp).Row).Value
    ReDim Arr(1 To 10000, 1 To 2)
    k = 0
    For i = 1 To UBound(Tmp, 1)
        Tmp1 = Split(Tmp(i, 2), ",")
        For j = 0 To UBound(Tmp1)
            k = k + 1
            Arr(k, 1) = Tmp1(j)
            Arr(k, 2) = Tmp(i, 1)
        Next
    Next
    Sheet1.[G3:H3].Resize(k) = Arr
End Sub
 

File đính kèm

Bạn có thể hướng dẫn mình sử dụng chi tiết từng bước hoặc bạn có link bài nào hướng dẫn làm gửi cho mình được không? Mình chưa bao giở sử dung VBA
Tưởng mình chỉ muốn ấn một cái duy nhất vào một cái nút là xong.

Nếu muốn tìm hiểu thì ở đây hướng dẫn cụ tỉ nè. Ba bài đầu.
 
Tưởng mình chỉ muốn ấn một cái duy nhất vào một cái nút là xong.

Nếu muốn tìm hiểu thì ở đây hướng dẫn cụ tỉ nè. Ba bài đầu.

Mình bỏ dữ liệu vào chạy thử thì dữ liệu chỉ cho kết quả một vài dòng là bị gì vậy bạn, có thể chỉ mình sửa lại không?
Bài đã được tự động gộp:

Mình đã làm được cám ơn bạn giúp đỡ
Bài đã được tự động gộp:

Mình đã làm được cám ơn bạn giúp đỡ
Đại loại là thế này:
Mã:
Sub TachChuoi()
    Dim i As Long, j As Long, k As Long, Tmp, Tmp1, Arr()
    Tmp = Sheet1.Range("A3:B" & Sheet1.[A65000].End(xlUp).Row).Value
    ReDim Arr(1 To 10000, 1 To 2)
    k = 0
    For i = 1 To UBound(Tmp, 1)
        Tmp1 = Split(Tmp(i, 2), ",")
        For j = 0 To UBound(Tmp1)
            k = k + 1
            Arr(k, 1) = Tmp1(j)
            Arr(k, 2) = Tmp(i, 1)
        Next
    Next
    Sheet1.[G3:H3].Resize(k) = Arr
End Sub

Cám ơn bạn đã giúp mình, mình làm được rồi.
Bài đã được tự động gộp:

Đại loại là thế này:
Mã:
Sub TachChuoi()
    Dim i As Long, j As Long, k As Long, Tmp, Tmp1, Arr()
    Tmp = Sheet1.Range("A3:B" & Sheet1.[A65000].End(xlUp).Row).Value
    ReDim Arr(1 To 10000, 1 To 2)
    k = 0
    For i = 1 To UBound(Tmp, 1)
        Tmp1 = Split(Tmp(i, 2), ",")
        For j = 0 To UBound(Tmp1)
            k = k + 1
            Arr(k, 1) = Tmp1(j)
            Arr(k, 2) = Tmp(i, 1)
        Next
    Next
    Sheet1.[G3:H3].Resize(k) = Arr
End Sub

Cám ơn bạn, mình dựa trên file bạn gửi copy dữ liệu vào là có được kết quả
Bài đã được tự động gộp:

Cám ơn tất cả mọi người đã giúp đỡ ạ!
 

File đính kèm

Lần chỉnh sửa cuối:
Đại loại là thế này:
Mã:
Sub TachChuoi()
    Dim i As Long, j As Long, k As Long, Tmp, Tmp1, Arr()
    Tmp = Sheet1.Range("A3:B" & Sheet1.[A65000].End(xlUp).Row).Value
    ReDim Arr(1 To 10000, 1 To 2)
    k = 0
    For i = 1 To UBound(Tmp, 1)
        Tmp1 = Split(Tmp(i, 2), ",")
        For j = 0 To UBound(Tmp1)
            k = k + 1
            Arr(k, 1) = Tmp1(j)
            Arr(k, 2) = Tmp(i, 1)
        Next
    Next
    Sheet1.[G3:H3].Resize(k) = Arr
End Sub

Mình muốn làm ngược lại, bạn có thể giúp mình làm một file giống vậy không? cám ơn bạn.
 
Web KT

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

Back
Top Bottom