Xin giúp đỡ công thức Excel tách các chuỗi được ngăn cách bởi dấu "," sau đó sắp xếp lại theo 1 cột

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

huevantran

Thành viên chính thức
Tham gia
27/4/22
Bài viết
55
Được thích
42
Em chào các Anh/Chị thành viên GPE,
Em có ví dụ mẫu như ở file đính kèm, hiện tại em đang sử dụng Text to columns và Transpose, sau đó nối các cột lại với nhau để có được kết quả mong muốn như bên dưới, nhờ các Anh/Chị xem giúp em có thể sử dụng công thức Excel để ra kết quả giống vậy không ạ.
Em cảm ơn.

Ví dụ mẫu:
Dữ liệu gốcKết quả mong muốn
1234ABC1234ABC
3455BVC, 1234AN3455BVC
12BVC, 1234AN, 56xyz1234AN
23-9961, 23-998512BVC
984651234AN
78998556xyz
45511a, ir45672, CDC4561, BOL56A23-9961
23-9985
98465
789985
45511a
ir45672
CDC4561
BOL56A
 

File đính kèm

  • GPE - Test.xlsx
    GPE - Test.xlsx
    9.1 KB · Đọc: 17
  • 1678076774563.png
    1678076774563.png
    16.6 KB · Đọc: 8
Em chào các Anh/Chị thành viên GPE,
Em có ví dụ mẫu như ở file đính kèm, hiện tại em đang sử dụng Text to columns và Transpose, sau đó nối các cột lại với nhau để có được kết quả mong muốn như bên dưới, nhờ các Anh/Chị xem giúp em có thể sử dụng công thức Excel để ra kết quả giống vậy không ạ.
Em cảm ơn.

Anh thử công thức này tại D2 nhé:
Mã:
=TRANSPOSE(TEXTSPLIT(TEXTJOIN(", ",,A2:A8),", "))
 
Cảm ơn bạn, hiện tại mình đang sử dụng bộ Office Standard 2021 nên không có hàm TEXTSPLIT
Anh có tiện dùng UDF không, nếu có thì đây:

Mã:
Function T_Tachchuoi(str As String, Optional txt As String)
Application.Volatile
Dim i As Integer, z As Integer, x As Integer, a As Integer
Name = Application.WorksheetFunction.Trim(Application.WorksheetFunction.Substitute(str, Chr(160), Chr(32)))
z = 0: a = 1: x = 1
For i = 1 To Len(Name)
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then z = z + 1
Next
ReDim Arr(0, 1 To z)
For i = 2 To Len(Name) + 1
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then
          Arr(0, x) = Replace(Mid(Name, a, i - a + Len(txt)), txt, "")
          a = i
          x = x + 1
     End If
Next
T_Tachchuoi = Arr
End Function
Còn không thì anh cứ lên diễn đàn tìm nhé, tách chuỗi bằng hàm thì đã có rất nhiều bài rồi.
 
Anh có tiện dùng UDF không, nếu có thì đây:

Mã:
Function T_Tachchuoi(str As String, Optional txt As String)
Application.Volatile
Dim i As Integer, z As Integer, x As Integer, a As Integer
Name = Application.WorksheetFunction.Trim(Application.WorksheetFunction.Substitute(str, Chr(160), Chr(32)))
z = 0: a = 1: x = 1
For i = 1 To Len(Name)
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then z = z + 1
Next
ReDim Arr(0, 1 To z)
For i = 2 To Len(Name) + 1
     If Mid(Name, i, Len(txt)) = txt Or i = Len(Name) Then
          Arr(0, x) = Replace(Mid(Name, a, i - a + Len(txt)), txt, "")
          a = i
          x = x + 1
     End If
Next
T_Tachchuoi = Arr
End Function
Còn không thì anh cứ lên diễn đàn tìm nhé, tách chuỗi bằng hàm thì đã có rất nhiều bài rồi.
Kết quả rất chính xác, cảm ơn bạn rất nhiều.
 
Góp vui tí
Mã:
=MID($B$8;FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)))+2;FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)+1))-FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)))-2)
Thay b8 bằng công thức này nhé bạn, tại đang dùng điện thoại nên ngại gõ
Mã:
=", "&CONCAT(A9:A15&", ")&", "
Với a9:a15 là vùng dữ liệu gốc
 
Góp vui tí
Mã:
=MID($B$8;FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)))+2;FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)+1))-FIND("@";SUBSTITUTE($B$8;", ";"@";ROW(A1)))-2)
Thay b8 bằng công thức này nhé bạn, tại đang dùng điện thoại nên ngại gõ
Mã:
=", "&CONCAT(A9:A15&", ")&", "
Với a9:a15 là vùng dữ liệu gốc

Cảm ơn bạn nhiều nhé, công thức cho kết quả cũng chính xác luôn.
 
Web KT

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

Back
Top Bottom