Tách dữ liệu trong 01 ô (dòng) ra thành nhiều dòng! (1 người xem)

  • Thread starter Thread starter majoson
  • Ngày gửi Ngày gửi
Liên hệ QC

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

majoson

Thành viên chính thức
Tham gia
14/2/08
Bài viết
92
Được thích
2
Chào các anh chị,

Tôi đang có 01 sheet excel nhưng không biết cách nào để tách dữ liệu được nhập trong 1 ô (dòng) ra thành nhiều dòng. Xin giúp đỡ và cám ơn rất nhiều.
 

File đính kèm

Chào các anh chị,

Tôi đang có 01 sheet excel nhưng không biết cách nào để tách dữ liệu được nhập trong 1 ô (dòng) ra thành nhiều dòng. Xin giúp đỡ và cám ơn rất nhiều.
Gõ công thức này vào cell D4:
PHP:
=TRIM(MID(SUBSTITUTE($B$4,CHAR(10),REPT(" ",255)),(ROWS($1:1)-1)*255+1,255))
Kéo fill xuống
 
Em cám ơn thầy, nhưng format nó không chạy theo hàng mà chạy dồn về bên phải. Không có cách làm cho nó bình thường được thầy ơi.
 
Em cám ơn thầy, nhưng format nó không chạy theo hàng mà chạy dồn về bên phải. Không có cách làm cho nó bình thường được thầy ơi.
Tôi không hiểu bạn nói gì cả!
Có trục trặc gì cứ đưa file lên đây! Mô tả khó hiểu quá!
 
Chào các anh chị,

Tôi đang có 01 sheet excel nhưng không biết cách nào để tách dữ liệu được nhập trong 1 ô (dòng) ra thành nhiều dòng. Xin giúp đỡ và cám ơn rất nhiều.
Bạn đưa dữ liệu khiêm tốn quá khố mà đạt được như ý bạn
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn đưa dữ liệu khiêm tốn quá khố mà đạt được như ý bạn

Thật sự mình xin lỗi nhé, vì cũng không biết rằng nó dài dòng như vậy. Mình cần ra kết quả là một công thức kéo từ trên xuống dưới. Vì cột dữ liệu nguồn dài khoảng 1000 dòng nhưng khi đưa ví dụ mình chỉ đưa 3 dòng thôi. Nhờ anh giúp thêm nhé.
 
Thật sự mình xin lỗi nhé, vì cũng không biết rằng nó dài dòng như vậy. Mình cần ra kết quả là một công thức kéo từ trên xuống dưới. Vì cột dữ liệu nguồn dài khoảng 1000 dòng nhưng khi đưa ví dụ mình chỉ đưa 3 dòng thôi. Nhờ anh giúp thêm nhé.
Tốt nhất bạn đưa dữ liệu thật lên đi. Nếu dữ liệu như bạn nói rất có thể dùng VBA tốt hơn
 
Thầy ơi, công thức của thầy em thấy gần được rồi. Chỉ cần sao cho format lại kết quả đuwowcj. Thầy xem giùm em nhé.
 
Làm sao làm được như trong File này mà không cần VBA, tách dữ liệu từ 1 dòng ra nhiều dòng? rất mong được chỉ giáo, xin cảm ơn nhiều
 

File đính kèm

Làm sao làm được như trong File này mà không cần VBA, tách dữ liệu từ 1 dòng ra nhiều dòng? rất mong được chỉ giáo, xin cảm ơn nhiều

Tách ký tự dấu phẩy thế này có nhiều rồi,

ví dụ tách chuỗi tại D3, có công thức
PHP:
=--TRIM(MID(SUBSTITUTE(D3,",",REPT(" ",LEN(D3))),(ROW(1:1)-1)*LEN(D3)+1,LEN(D3)))

hay là có ý khác chăng???
 
Lần chỉnh sửa cuối:
Tách ký tự dấu phẩy thế này có nhiều rồi,

ví dụ tách chuỗi tại D3, có công thức
PHP:
=--TRIM(MID(SUBSTITUTE(D3,",",REPT(" ",LEN(D3))),(ROW(1:1)-1)*LEN(D3)+1,LEN(D3)))

hay là có ý khác chăng???
Anh Vodoi2x ơi, công thức của anh mới tách chuỗi phân cách bởi dấu "," được một dòng thôi, nếu chỉ tách như anh thì anh PHI đã không hỏi vì mấy bài trên đã đề cập rồi. Anh PHI muốn tách hết dòng D3 thì tách tiếp dòng D4, D5 (nếu có)...
Ngày tháng của dòng được tách cũng phải đi kèm theo dữ liệu đc tách đó. He he!
 
Anh Vodoi2x ơi, công thức của anh mới tách chuỗi phân cách bởi dấu "," được một dòng thôi, nếu chỉ tách như anh thì anh PHI đã không hỏi vì mấy bài trên đã đề cập rồi. Anh PHI muốn tách hết dòng D3 thì tách tiếp dòng D4, D5 (nếu có)...
Ngày tháng của dòng được tách cũng phải đi kèm theo dữ liệu đc tách đó. He he!

thì cũng công thức tương tự thế thôi giống như cho D3 đó , Công thức tổng quát mà cho bất cứ chuỗi nào

, Chờ đợi người hỏi xác nhận lại vậy, cứ đoán mò mệt lém
 
cảm ơn 2 bạn nhiều, tôi muốn tách 1 (ô) dòng ra thành nhiều dòng cơ mà bài thì có rất nhiều ô để tách ,(bài giống như anh viet hoai) nhưng bây giờ không dùng VBA tôi muốn dùng công thức(có được không?)
vì tôi thấy bài của anh ndu tách 1 ô(dòng ) ra nhiều dòng rất hay nhưng chỉ tách được 1 ô thôi nên tôi muốn mở rộng thêm thôi. xin cảm ơn
 
Lần chỉnh sửa cuối:
cảm ơn 2 bạn nhiều, tôi muốn tách 1 (ô) dòng ra thành nhiều dòng cơ mà bài thì có rất nhiều ô để tách ,(bài giống như anh viet hoai) nhưng bây giờ không dùng VBA tôi muốn dùng công thức(có được không?)
vì tôi thấy bài của anh ndu tách 1 ô(dòng ) ra nhiều dòng rất hay nhưng chỉ tách được 1 ô thôi nên tôi muốn mở rộng thêm thôi. xin cảm ơn

ah, thì ra thế, sao tự dưng nghĩ thêm việc vào người vậy?

tức là muốn kết quả là A7:E18 từ dữ liệu A2:E5,
Vậy thì công thức sẽ phụ thuộc vào cột A, và khó là lập công thức cho cột A

Bạn xem file gửi kèm
 

File đính kèm

Hình như tôi thấy đúng yêu cầu rồi đó, cảm ơn bạn nha để tôi có thời gian test thử xem còn sai chỗ nào không rồi chỉnh sửa tiếp.
 
Tách dữ liệu trong ô 1 ô thành nhiều dòng

Em nhờ các cao thủ tách giúp em file này. Dùng được VBA thì càng tốt. Nội dung:

Cần tách dữ liệu ở những ô cột C,D,E,G (Những ô cần tách em bôi vàng điển hình vài ô) trong sheet "Bang doc" các dữ liệu cách nhau bởi dấu "+"
Làm sao mà ta được đáp án như sheet "Bang doc 2"

Em xin chân thành cám ơn!
 
Lần chỉnh sửa cuối:
Em nhờ các cao thủ tách giúp em file này. Dùng được VBA thì càng tốt. Nội dung:

Cần tách dữ liệu ở những ô cột C,D (Những ô cần tách em bôi vàng điển hình vài ô) trong sheet "Bang doc" các dữ liệu cách nhau bởi dấu "+"
Làm sao mà ta được đáp án như sheet "Bang doc 2"

Em xin chân thành cám ơn!
PHP:
Sub abc()
Dim data(), Res(1 To 65536, 1 To 11), i, j, k, tam3, tam4
data = Sheet1.Range(Sheet1.[A7], Sheet1.[D65536].End(3).Offset(, 7)).Value
For i = 1 To UBound(data)
   If data(i, 3) = "" Then
      k = k + 1
      For j = 1 To 11
         Res(k, j) = data(i, j)
      Next
   Else
      tam3 = Split(data(i, 3), "+")
      tam4 = Split(data(i, 4), "+")
      For ii = 1 To UBound(tam3) + 1
         k = k + 1
         For j = 1 To 11
            Res(k, j) = data(i, j)
         Next
         Res(k, 3) = tam3(ii - 1)
         Res(k, 4) = tam4(ii - 1)
      Next
   End If
Next
Sheet2.[A7].Resize(k, 11) = Res
End Sub
 
Tách dữ liệu trong 01 ô (dòng) ra thành nhiều dòng!- Gấp mong mọi người giúp đỡ

Dear các anh chị,
Em đang cần tách dữ liệu ô của cột A sang các cột B,C,D,E,F, G như file đính kèm. Em đã đọc bài hướng dẫn và lập theo công thức ở trên thì được kết quả như cột B. Cho em hỏi, em có thể làm như vậy cho các cột còn lại không và công thức như thế nào?
Vì em đang cần gấp nên mong mọi người giúp đỡ em.

Em cảm ơn nhiều lắm!

Thanks,
Vi
 

File đính kèm

Dear các anh chị,
Em đang cần tách dữ liệu ô của cột A sang các cột B,C,D,E,F, G như file đính kèm. Em đã đọc bài hướng dẫn và lập theo công thức ở trên thì được kết quả như cột B. Cho em hỏi, em có thể làm như vậy cho các cột còn lại không và công thức như thế nào?
Vì em đang cần gấp nên mong mọi người giúp đỡ em.

Em cảm ơn nhiều lắm!

Thanks,
Vi
bạn thử làm theo cách sau:
- tại sheet1 chọn cột/ vùng cần tách (A2:A9)

- trên thanh Ribbon - chọn DATA- tại nhóm Data Tools click Text to Columns

- hộp thoại Convert Text ... - Step 1 of 3 - click Next

B1.jpg

- tiếp Step 2 of 3:
B2.jpg

- chọn các Checkbox như hình dưới và đặt chuột vào mục Other --> click Ctrl + J

B2_1.jpg

click Next

- tiếp Step 3 of 3: chọn vị trí Paste (Destination - đích đến) ví dụ chọn B2

B3.jpg

click Finish

'----------
nếu "làm ko ra" thì vào xem tiếp: Split Data into Several Columns Based on Carriage Returns
 
Lần chỉnh sửa cuối:
PHP:
Sub abc()
Dim data(), Res(1 To 65536, 1 To 11), i, j, k, tam3, tam4
data = Sheet1.Range(Sheet1.[A7], Sheet1.[D65536].End(3).Offset(, 7)).Value
For i = 1 To UBound(data)
   If data(i, 3) = "" Then
      k = k + 1
      For j = 1 To 11
         Res(k, j) = data(i, j)
      Next
   Else
      tam3 = Split(data(i, 3), "+")
      tam4 = Split(data(i, 4), "+")
      For ii = 1 To UBound(tam3) + 1
         k = k + 1
         For j = 1 To 11
            Res(k, j) = data(i, j)
         Next
         Res(k, 3) = tam3(ii - 1)
         Res(k, 4) = tam4(ii - 1)
      Next
   End If
Next
Sheet2.[A7].Resize(k, 11) = Res
End Sub


Trường hợp mình muốn tách thêm cột E và cột G nữa thì viết code như thế nào hả anh?
E cám ơn anh nhiều!
 
Trường hợp mình muốn tách thêm cột E và cột G nữa thì viết code như thế nào hả anh?
E cám ơn anh nhiều!
Sub B_tachdong()
Dim data(), Res(1 To 65536, 1 To 11), i, j, k, g, f, tam3, tam4, tam5, tam7
data = Sheet1.Range(Sheet1.[A7], Sheet1.[G65536].End(3).Offset(, 7)).Value
For i = 1 To UBound(data)
If data(i, 3) = "" Then
k = k + 1
For j = 1 To 11
Res(k, j) = data(i, j)
Next
Else
tam3 = Split(data(i, 3), "+")
tam4 = Split(data(i, 4), "+")
tam5 = Split(data(i, 5), "+")
tam7 = Split(data(i, 7), "+")

For ii = 1 To UBound(tam3) + 1
k = k + 1
For j = 1 To 11
Res(k, j) = data(i, j)
Next
Res(k, 3) = tam3(ii - 1)
Res(k, 4) = tam4(ii - 1)
Res(k, 5) = tam4(ii - 1)
Res(k, 7) = tam7(ii - 1)

Next

End If
Next
Sheet3.[A7].Resize(k, 11) = Res
End Sub

Các anh kieemrtra giúp em code trên xem nó bị lỗi ở chỗ nào mà không chạy được vậy anh
 
Sub B_tachdong()
Dim data(), Res(1 To 65536, 1 To 11), i, j, k, g, f, tam3, tam4, tam5, tam7
data = Sheet1.Range(Sheet1.[A7], Sheet1.[G65536].End(3).Offset(, 7)).Value
For i = 1 To UBound(data)
If data(i, 3) = "" Then
k = k + 1
For j = 1 To 11
Res(k, j) = data(i, j)
Next
Else
tam3 = Split(data(i, 3), "+")
tam4 = Split(data(i, 4), "+")
tam5 = Split(data(i, 5), "+")
tam7 = Split(data(i, 7), "+")

For ii = 1 To UBound(tam3) + 1
k = k + 1
For j = 1 To 11
Res(k, j) = data(i, j)
Next
Res(k, 3) = tam3(ii - 1)
Res(k, 4) = tam4(ii - 1)
Res(k, 5) = tam4(ii - 1)
Res(k, 7) = tam7(ii - 1)

Next

End If
Next
Sheet3.[A7].Resize(k, 11) = Res
End Sub

Các anh kieemrtra giúp em code trên xem nó bị lỗi ở chỗ nào mà không chạy được vậy anh

Đoán là sai câu này:
data = Sheet1.Range(Sheet1.[A7], Sheet1.[G65536].End(3).Offset(, 7)).Value
 

File đính kèm

Lần chỉnh sửa cuối:
Dear các anh chị,
Em dang can tach first name va last name cua file dinh kem thanh cac cot khac nhau. Em da thu tach bang cach tren nhung khong duoc. Moi nguoi giup em voi, khong hieu sao lan nay lai khong tach duoc nua.
Em dang can gap nen mong nhan duoc su giup do som tu cac anh chi trong dien dan.

Em cam on,

Vi
 

File đính kèm

Dear các anh chị,
Em dang can tach first name va last name cua file dinh kem thanh cac cot khac nhau. Em da thu tach bang cach tren nhung khong duoc. Moi nguoi giup em voi, khong hieu sao lan nay lai khong tach duoc nua.
Em dang can gap nen mong nhan duoc su giup do som tu cac anh chi trong dien dan.

Em cam on,

Vi

cái dấu cách trong file của bạn không phải là dấu cách của excel
thông thường thì tôi có thể dùng Find để thay cái dấu cách này, nhưng file của bạn ko làm đượcc (chẳng hiểu tại sao nữa)
thôi thì chịu khó làm dài một chút
1-tại B2
Mã:
B2=SUBSTITUTE(A2,CHAR(160)," ")
2- kéo xuống hết vùng dữ liệu
3- copy cột này, nhấp chuột phải==>chọn paste special==>chọn paste value
4- chọn toàn bộ vùng dữ liệu cột B,==>vào lớp data===trong group data tool chọn "text to column"
==>chọn "delimited"(thường thì nó đã chọn)==>next==>nhấp vào ô "Space"==>chọn "text" trong mục "column data format"==>chọn "Destimation" là C1==>ok, vậy là nó tách xong cho bạn
 
thống kê ngược

ah, thì ra thế, sao tự dưng nghĩ thêm việc vào người vậy?

tức là muốn kết quả là A7:E18 từ dữ liệu A2:E5,
Vậy thì công thức sẽ phụ thuộc vào cột A, và khó là lập công thức cho cột A

Bạn xem file gửi kèm

Bác vodoi2x ơi, em cũng đang cần 1 hàm để thống kê ngược từ 1 bảng dữ liệu nguồn (thống kê các mã sp theo sđt người mua) sang 1 bảng thống kê mới có dạng thống kê tất cả sđt các khách hàng theo từng sản phẩm)

Bác giúp em với.
Đây là file của em ạ:
Tks bác giúp đỡ.
 

File đính kèm

Chào cả nhà.
Tôi xin nhờ cả nhà chỉ giúp cách tách 1 ô của 1 dòng thành nhiều dòng.
Cụ thể: Như file đính kèm
Nội dung này tôi rất cấn và tôi cũng đã mò mẫn mãi vẫn chưa có cách giải quyết.
Rất mong cả nhà hỗ trợ giúp tôi.
 

File đính kèm

Chào cả nhà.
Tôi xin nhờ cả nhà chỉ giúp cách tách 1 ô của 1 dòng thành nhiều dòng.
Cụ thể: Như file đính kèm
Nội dung này tôi rất cấn và tôi cũng đã mò mẫn mãi vẫn chưa có cách giải quyết.
Rất mong cả nhà hỗ trợ giúp tôi.
Để chung một sheet vậy à hay cho sang sheet mới?
 

File đính kèm

Chào cả nhà.
Tôi xin nhờ cả nhà chỉ giúp cách tách 1 ô của 1 dòng thành nhiều dòng.
Cụ thể: Như file đính kèm
Nội dung này tôi rất cấn và tôi cũng đã mò mẫn mãi vẫn chưa có cách giải quyết.
Rất mong cả nhà hỗ trợ giúp tôi.
1 phút
 
Cách này hay đó anh. :)
Khai triển ở bài này à anh.
http://www.giaiphapexcel.com/diendan/threads/nhờ-gpe-giúp-tao-hàm-excel-tách-dữ-liệu-ra-nhiều-dòng-dựa-vào-cột-số-lượng.129115/
Thêm động tác chuyển cột số lượng =1 hết mất 2 giây nữa cho tròn 1phút.
-------
Trong video em thấy có nút "Xem mật khẩu wifi", tích hợp nhiều thứ ghê. :cool:
Topic đó bị khóa rồi mà. Mà tôi cũng có mô tả cách làm ở bài 2 rồi :)
Trong video em thấy có nút "Xem mật khẩu wifi", tích hợp nhiều thứ ghê. :cool:
Mấy cái linh tinh thôi :). Cái đó để xem lại mật khẩu wifi đã lưu trên máy thôi. Win10 không kết nối không xem mật khẩu bình thường được. Công ty tôi hay đi công tác nên nhiều lúc có người hỏi mình xem cho tiện thôi mà.
 
Chào diễn đàn, nhờ mọi người giúp cho,
giúp mình đoạn code để làm như trong file mình gửi lên nhé :
tự xuống dòng khi gặp "(" hoặc "-"
 

File đính kèm

Chào các anh, chị!
Em đang có 01 sheet excel nhưng không biết cách nào để tách dữ liệu được nhập trong 1 dòng ra thành nhiều dòng. Xin giúp đỡ và cám ơn rất nhiều.
Em đã dùng những hàm ở trên nhưng chưa có kết quả.
Em cảm ơn.
 

File đính kèm

Chào các anh, chị!
Em đang có 01 sheet excel nhưng không biết cách nào để tách dữ liệu được nhập trong 1 dòng ra thành nhiều dòng. Xin giúp đỡ và cám ơn rất nhiều.
Em đã dùng những hàm ở trên nhưng chưa có kết quả.
Em cảm ơn.
Công thức của bạn
Mã:
="- "&TRIM(MID(SUBSTITUTE($E$5,";",REPT(" ",255)),(ROW(A1)-1)*255+1,255))
 
Chào anh chị !

E là thành viên mới, anh chị giúp e tách file sau được không ạ?

E cảm ơn mọi người
 

File đính kèm

Dạ nhiều anh ạ, e chỉ đưa ví dụ để miêu tả mong muốn của mình thôi ạ! :) e muốn nhờ anh chị giúp e bằng VBA ạ

E cảm ơn ạ
 
Dạ nhiều anh ạ, e chỉ đưa ví dụ để miêu tả mong muốn của mình thôi ạ! :) e muốn nhờ anh chị giúp e bằng VBA ạ

E cảm ơn ạ
nếu nhiều thì bạn nên cho thêm vài dòng dữ liệu nữa, chắc chắn với bạn là chưa tới 1h bạn sẽ có bài trả lời như ý muốn
 
PHP:
Sub vidu()
    Const deli = ";"
    Const maxR = 65000
    Dim a, Res(), i, j, k, IDs, ID, maxC
    a = Sheet2.UsedRange.Value
    If IsArray(a) = False Then Exit Sub
    maxC = UBound(a, 2)
    ReDim Res(1 To maxR, 1 To maxC)
    For k = 1 To maxC
        Res(1, k) = a(1, k)
    Next k
    j = 1
    For i = 2 To UBound(a, 1)
        IDs = a(i, 1)
        If Len(IDs) > 0 Then
            For Each ID In Split(IDs, deli)
                If j > maxR Then MsgBox "nhieu ket qua >> " & maxR: Exit Sub
                j = j + 1
                Res(j, 1) = ID
                For k = 2 To maxC
                    Res(j, k) = a(i, k)
                Next k
            Next ID
        End If
    Next i
    If j > 1 Then
        Sheet1.UsedRange.ClearContents
        Sheet1.Range("A1").Resize(j, maxC) = Res
    End If
End Sub
 
Anh ơi, còn bị ở cột D nữa ạ, e muốn chỉ tách cột A, còn các cột còn lại sẽ theo cột đầu tiên ạ.
 

File đính kèm

giúp mình tách hàng file này với! Không phải dân chuyên nên mấy lệnh dài dài không hiểu....
Xin cảm ơn!
 

File đính kèm

giúp mình tách hàng file này với! Không phải dân chuyên nên mấy lệnh dài dài không hiểu....
Xin cảm ơn!
Nếu cột A có 2 loại như thế này 601; 602 với cỡ 1000 dòng dữ liệu thì làm thủ công chắc cỡ 1 phút, chẳng cần code kiết gì cả.
 

File đính kèm

Dạ,

Xin giúp em với trong file em chỉ cần tách lấy ra địa chỉ email trong dấu < >. Xin giúp em với

Em cám ơn nhiều !
Da, em cám ơn mọi người đọc comment em search google tìm được công thức rồi.

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")

em đã giải quyết được.
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi không hiểu bạn nói gì cả!
Có trục trặc gì cứ đưa file lên đây! Mô tả khó hiểu quá!
Bài đã được tự động gộp:

ah, thì ra thế, sao tự dưng nghĩ thêm việc vào người vậy?

tức là muốn kết quả là A7:E18 từ dữ liệu A2:E5,
Vậy thì công thức sẽ phụ thuộc vào cột A, và khó là lập công thức cho cột A

Bạn xem file gửi kèm
Anh ơi, nhờ anh gom hộ e hai sheet trong file trên vào 1 sheet được không ạ? :( E cảm ơn anh nhiều
 
Anh ơi, nhờ anh gom hộ e hai sheet trong file trên vào 1 sheet được không ạ? :( E cảm ơn anh nhiều
Thử code này:
Mã:
Option Explicit
Public Sub abc()
Dim tempArr As Variant, k As Long, i As Long, LastRow As Long
With Sheets("Source")
LastRow = .Range("A" & Rows.Count).End(xlUp).Row
For i = LastRow To 2 Step -1
        If InStr(.Range("A" & i).Value, ";") > 0 Then
                tempArr = Split(.Range("A" & i).Value, ";")
                k = UBound(tempArr)
                .Rows(i).Offset(1).Resize(k).Insert
                .Rows(i).Offset(1).Resize(k).Value = .Rows(i).Value
                .Range("A" & i).Resize(k + 1).Value = Application.WorksheetFunction.Transpose(tempArr)
        End If
Next i
End With
End Sub
 
Cầu các cao nhân giúp e tách dòng file này mới, em gà mờ nếu có công thức thì tốt. Em cảm ơn trước ạ
 

File đính kèm

1. Nếu có ai làm giúp bạn thì bạn cám ơn tiếp không?
2. Nếu không có ai làm giúp bạn thì bạn có rút lại không?
3. Hay như nào ngoài 1 và 2 ở trên?
Em đăng lên đây là muốn tìm cao nhân giúp vì kiến thức excel của e hạn hẹp, nhưng bác lại soi từng câu chữ thế này để làm gì nhỉ?
 
Em đăng lên đây là muốn tìm cao nhân giúp vì kiến thức excel của e hạn hẹp, nhưng bác lại soi từng câu chữ thế này để làm gì nhỉ?
Phải "soi" để đáp ứng yêu cầu của bạn chứ.
Bạn cầu "cao nhân" nên những người không phải "cao nhân" phải xem kỹ kẻo bị bảo là "ham hố" thành cao nhân.
Câu này là hỏi cho rõ nè:
1. Nếu có ai làm giúp bạn thì bạn cám ơn tiếp không?
 
Em đăng lên đây là muốn tìm cao nhân giúp vì kiến thức excel của e hạn hẹp, nhưng bác lại soi từng câu chữ thế này để làm gì nhỉ?
Nhờ bài soi đó mới biết bạn cũng không quan tâm đến câu trả lời. Anh em đỡ tốn công.
(Thường phản hồi sau 10 ngày :D)
 
Em đăng lên đây là muốn tìm cao nhân giúp vì kiến thức excel của e hạn hẹp, nhưng bác lại soi từng câu chữ thế này để làm gì nhỉ?
Hí hí, bạn bỏ mấy từ cao nhân gì gì đó đi. Nghe thấy ngại và nhột lắm.
Sửa đi thì sẽ có kết quả ngay, còn không thì chờ ... 2019 !
 
Nhờ các anh xem giúp!
Em cần xin VBA hoạt động như file mẫu đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào các anh chị trong group.Em có 1 file sửa hàng mà bjo bên nhà cung cấp yêu cầu tách các lỗi ở cột H ra từng dòng riêng biệt,Anh chị có cách nào chỉ giúp em với ak.Em cảm ơn rất rất nhiều ak.
 

File đính kèm

Em chào các anh chị trong group.Em có 1 file sửa hàng mà bjo bên nhà cung cấp yêu cầu tách các lỗi ở cột H ra từng dòng riêng biệt,Anh chị có cách nào chỉ giúp em với ak.Em cảm ơn rất rất nhiều ak.
Bạn chạy xem có đúng không nhé.
Mã:
Sub tachloi()
   Dim arr, arr1, lr As Long, i As Long, j As Long, a As Long, T
   With Sheets("Detail (2)")
        lr = .Range("H" & Rows.Count).End(xlUp).Row
        If lr < 6 Then Exit Sub
        arr = .Range("B6:K" & lr).Value
        ReDim arr1(1 To UBound(arr, 1) * 4, 1 To UBound(arr, 2))
   End With
        For i = 1 To UBound(arr, 1)
            For Each T In Split(arr(i, 7), ",")
                a = a + 1
                For j = 2 To UBound(arr, 2)
                    arr1(a, j) = arr(i, j)
                Next j
                    arr1(a, 8) = T
                    arr1(a, 1) = a
           Next
       Next
   With Sheets("ket qua")
        lr = .Range("H" & Rows.Count).End(xlUp).Row
        If lr > 5 Then .Range("B6:K" & lr).ClearContents
        .Range("b6").Resize(a, UBound(arr, 2)).Value = arr1
   End With
End Sub
 

File đính kèm

Em muốn tách mỗi lỗi ở cột G thành từng dòng 1 những dữ liệu còn lại vẫn giữ nguyên ý ad ak??
 
Nhờ các Anh/chị giúp em tách từ 1 dòng thành nhiều dòng như file đính kèm với ạ. Bài của em hoàn toàn khác với vấn đề mà mọi người đã giải đáp ở trên nên em không áp dụng được. Nếu có thể giúp em tách theo 2 cách em đã làm thủ công ở 2 sheet kế bên.
Xin cám ơn nhiều
 

File đính kèm

Nhờ các Anh/chị giúp em tách từ 1 dòng thành nhiều dòng như file đính kèm với ạ. Bài của em hoàn toàn khác với vấn đề mà mọi người đã giải đáp ở trên nên em không áp dụng được. Nếu có thể giúp em tách theo 2 cách em đã làm thủ công ở 2 sheet kế bên.
Xin cám ơn nhiều
Dữ liệu của bạn không đồng nhất 2 cột mà cũng không phải là chia theo xuống dòng.Bạn xem lại nhé.Còn code mình viết đây.
Mã:
Sub tach()
    Dim arr, i As Long, lr As Long, T, kq, a As Long, R As Long, L As Long, T1, k As Integer, j As Integer
    With Sheets("nguon")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("B5:O" & lr).Value
         R = UBound(arr)
         L = UBound(arr, 2)
         If R * 10 > Rows.Count Then a = Rows.Count Else a = R * 10
         ReDim kq(1 To a, 1 To L)
         a = 0
    End With
        For i = 1 To R
            T = Split(Chr(10) & arr(i, 9), Chr(10))
           ' T1 = Split(Chr(10) & arr(i, 10), Chr(10))
            For k = 1 To UBound(T)
                If Len(T(k)) > 0 Then
                   a = a + 1
                   For j = 1 To L
                       kq(a, j) = arr(i, j)
                   Next j
                        kq(a, 9) = T(k)
                        'kq(a, 10) = T1(k)
                End If
            Next k
       Next i
    With Sheets("cach2")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr > 4 Then .Range("B5:O" & lr).ClearContents
         If a Then .Range("B5:o5").Resize(a).Value = kq
    End With
End Sub
 

File đính kèm

Dữ liệu của bạn không đồng nhất 2 cột mà cũng không phải là chia theo xuống dòng.Bạn xem lại nhé.Còn code mình viết đây.
Mã:
Sub tach()
    Dim arr, i As Long, lr As Long, T, kq, a As Long, R As Long, L As Long, T1, k As Integer, j As Integer
    With Sheets("nguon")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("B5:O" & lr).Value
         R = UBound(arr)
         L = UBound(arr, 2)
         If R * 10 > Rows.Count Then a = Rows.Count Else a = R * 10
         ReDim kq(1 To a, 1 To L)
         a = 0
    End With
        For i = 1 To R
            T = Split(Chr(10) & arr(i, 9), Chr(10))
           ' T1 = Split(Chr(10) & arr(i, 10), Chr(10))
            For k = 1 To UBound(T)
                If Len(T(k)) > 0 Then
                   a = a + 1
                   For j = 1 To L
                       kq(a, j) = arr(i, j)
                   Next j
                        kq(a, 9) = T(k)
                        'kq(a, 10) = T1(k)
                End If
            Next k
       Next i
    With Sheets("cach2")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr > 4 Then .Range("B5:O" & lr).ClearContents
         If a Then .Range("B5:o5").Resize(a).Value = kq
    End With
End Sub

Cám ơn anh đã giúp em
Do em mới vào công ty và được bàn giao dữ liệu yêu cầu tách dòng ở 2 cột "tô xanh trong file", vì dữ liệu vài ngàn dòng nên em làm thủ công không được chưa kể là dễ gây sai số. Liệu có cách nào tách đồng thời cả 2 cột được không ạ? Ngoài ra đây là dữ liệu không chính thức nên anh có thể bôi vàng những chỗ nào cần thay đổi nếu áp dụng file khác được không anh?
 

File đính kèm

Cám ơn anh đã giúp em
Do em mới vào công ty và được bàn giao dữ liệu yêu cầu tách dòng ở 2 cột "tô xanh trong file", vì dữ liệu vài ngàn dòng nên em làm thủ công không được chưa kể là dễ gây sai số. Liệu có cách nào tách đồng thời cả 2 cột được không ạ? Ngoài ra đây là dữ liệu không chính thức nên anh có thể bôi vàng những chỗ nào cần thay đổi nếu áp dụng file khác được không anh?
Dữ liệu của bạn muốn tách theo 2 cột nhưng mà trong dữ liệu của bạn rất linh tinh.Bạn kéo cho nó rộng đủ cột cần tách xem nó như thế nào nhé.
 
Dữ liệu của bạn muốn tách theo 2 cột nhưng mà trong dữ liệu của bạn rất linh tinh.Bạn kéo cho nó rộng đủ cột cần tách xem nó như thế nào nhé.

Có phải ý anh là người trước không xuống dòng theo kiểu Wrap text (hay Alt + Enter)? vậy giờ em phải sửa lại từng dòng cho dữ liệu chuẩn rồi mới tính tiếp được ạ?
 
Có phải ý anh là người trước không xuống dòng theo kiểu Wrap text (hay Alt + Enter)? vậy giờ em phải sửa lại từng dòng cho dữ liệu chuẩn rồi mới tính tiếp được ạ?
Đúng rồi đó bạn.Phải chỉnh lại thì mới được.
 
Em đã chỉnh lại rồi, anh xem giúp nhé
Bạn chạy code này.Nó trả về ở sheets ketqua
Mã:
Sub tach()
    Dim arr, i As Long, lr As Long, T, kq, a As Long, R As Long, L As Long, T1, k As Integer, j As Integer, b As Integer
    With Sheets("Detail")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("B5:LW" & lr).Value
         R = UBound(arr)
         L = UBound(arr, 2)
         If R * 10 > Rows.Count Then a = Rows.Count Else a = R * 10
         ReDim kq(1 To a, 1 To L)
         a = 0
    End With
        For i = 1 To R
            T = Split(Chr(10) & arr(i, 13), Chr(10))
            T1 = Split(Chr(10) & arr(i, 14), Chr(10))
            b = UBound(T1)
            For k = 1 To UBound(T)
                If Len(T(k)) > 0 Then
                   a = a + 1
                   For j = 1 To L
                       kq(a, j) = arr(i, j)
                   Next j
                        kq(a, 13) = T(k)
                    If b >= k Then kq(a, 14) = T1(k) Else kq(a, 14) = Empty
                End If
            Next k
       Next i
    With Sheets("ketqua")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr > 4 Then .Range("B5:O" & lr).ClearContents
         If a Then .Range("B5:o5").Resize(a).Value = kq
    End With
End Sub
 

File đính kèm

Bạn chạy code này.Nó trả về ở sheets ketqua
Mã:
Sub tach()
    Dim arr, i As Long, lr As Long, T, kq, a As Long, R As Long, L As Long, T1, k As Integer, j As Integer, b As Integer
    With Sheets("Detail")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("B5:LW" & lr).Value
         R = UBound(arr)
         L = UBound(arr, 2)
         If R * 10 > Rows.Count Then a = Rows.Count Else a = R * 10
         ReDim kq(1 To a, 1 To L)
         a = 0
    End With
        For i = 1 To R
            T = Split(Chr(10) & arr(i, 13), Chr(10))
            T1 = Split(Chr(10) & arr(i, 14), Chr(10))
            b = UBound(T1)
            For k = 1 To UBound(T)
                If Len(T(k)) > 0 Then
                   a = a + 1
                   For j = 1 To L
                       kq(a, j) = arr(i, j)
                   Next j
                        kq(a, 13) = T(k)
                    If b >= k Then kq(a, 14) = T1(k) Else kq(a, 14) = Empty
                End If
            Next k
       Next i
    With Sheets("ketqua")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr > 4 Then .Range("B5:O" & lr).ClearContents
         If a Then .Range("B5:o5").Resize(a).Value = kq
    End With
End Sub
Em đã làm được rồi. Cảm ơn anh đã phản hồi thật nhanh. Chúc một ngày tốt lành
 

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

Back
Top Bottom