Hỏi về hàm sâu chuỗi ký tự

Liên hệ QC
Yêu cầu như trong file đính kèm. Các bác giúp em với.

Chỉ có thể dùng VBA, chẳng hạn là hàm JoinText
Mã:
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aTmp, arr(), Item, tmp As String
  Dim i As Long, n As Long
  'On Error Resume Next
  For i = LBound(Arrays) To UBound(Arrays)
    aTmp = Arrays(i)
    If Not IsArray(aTmp) Then aTmp = Array(aTmp)
    For Each Item In aTmp
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        n = n + 1
        ReDim Preserve arr(1 To n)
        arr(n) = tmp
      End If
    Next
  Next
  If n Then JoinText = Join(arr, Delimiter)
End Function
Code trên đặt trong module
Công thức tại C11:
Mã:
=JoinText(", ",IF(L11:S11="",1/0,L11:S11))
Bấm Ctrl + Shift + Enter để kết thúc rồi kéo fill xuống
 
Yêu cầu như trong file đính kèm. Các bác giúp em với.
Hoặc bạn thử dùng hàm tự tạo đơn giản này
=Concet(L11:S11) rồi fill down xuống
PHP:
Function Concet(Rng As Range) As String
Dim Cll As Range
    For Each Cll In Rng
        If Cll.Value <> "" Then
            Concet = Concet & "," & Cll.Value
        End If
    Next Cll
    If Left(Concet, 1) = "," Then
        Concet = Mid(Concet, 2, Len(Concet) - 1)
    End If
End Function
 
Ngoài ra, nếu chỉ nối có 8 cell thì có thể "chịu cực" nối từng cell thế này tại ô C11
Mã:
=SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(L11 & CHAR(1)&M11&CHAR(1)&N11&CHAR(1)&O11&CHAR(1)&P11&CHAR(1)&Q11&CHAR(1)&R11&CHAR(1)&S11," ",CHAR(2)),CHAR(1)," ")),CHAR(2), " ")
Công thức thường, Enter bình thường
 
Hoặc bạn thử dùng hàm tự tạo đơn giản này
=Concet(L11:S11) rồi fill down xuống
PHP:
Function Concet(Rng As Range) As String
Dim Cll As Range
    For Each Cll In Rng
        If Cll.Value <> "" Then
            Concet = Concet & "," & Cll.Value
        End If
    Next Cll
    If Left(Concet, 1) = "," Then
        Concet = Mid(Concet, 2, Len(Concet) - 1)
    End If
End Function
bác hướng dẫn em cụ thể chút. cai PHP là gì vậy ?
 
Ngoài ra, nếu chỉ nối có 8 cell thì có thể "chịu cực" nối từng cell thế này tại ô C11
Mã:
=SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(L11 & CHAR(1)&M11&CHAR(1)&N11&CHAR(1)&O11&CHAR(1)&P11&CHAR(1)&Q11&CHAR(1)&R11&CHAR(1)&S11," ",CHAR(2)),CHAR(1)," ")),CHAR(2), " ")
Công thức thường, Enter bình thường
công thức của bác cho kế quả không có dấu phẩy
 
Chỉnh sửa lần cuối bởi điều hành viên:
bác hướng dẫn em cụ thể chút. cai PHP là gì vậy ?
bạn Alt+F11 ( chưa quen thì tắt workbook khác, chỉ mở workbook đang cần thôi nhé, vào Tab Insert/Module, chép đoạn code trên vào. PHP code là code có màu mẽ chút, bạn ko cần quan tâm cái này)
Bạn enable macro theo link dưới tủy office nhé
rồi
=concet(L11:S11) tại ô cần lấy kết quả
http://www.giaiphapexcel.com/forum/...ẫn-Enable-Macros-trong-Excel-(2003-2007-2010)
 
công thức của bác cho kế quả không có dấu phẩy

Xin lỗi! Quên vụ dấu phẩy! Phải thế này:
Mã:
==SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(L11 &  CHAR(1)&M11&CHAR(1)&N11&CHAR(1)&O11&CHAR(1)&P11&CHAR(1)&Q11&CHAR(1)&R11&CHAR(1)&S11,"  ",CHAR(2)),CHAR(1)," ")), " ",", "),CHAR(2), " ")
 
bạn Alt+F11 ( chưa quen thì tắt workbook khác, chỉ mở workbook đang cần thôi nhé, vào Tab Insert/Module, chép đoạn code trên vào. PHP code là code có màu mẽ chút, bạn ko cần quan tâm cái này)
Bạn enable macro theo link dưới tủy office nhé
rồi
=concet(L11:S11) tại ô cần lấy kết quả
http://www.giaiphapexcel.com/forum/...ẫn-Enable-Macros-trong-Excel-(2003-2007-2010)
Tuyệt vời. Cảm ơn bạn nhiều. Mình làm được rồi.
 
bạn Alt+F11 ( chưa quen thì tắt workbook khác, chỉ mở workbook đang cần thôi nhé, vào Tab Insert/Module, chép đoạn code trên vào. PHP code là code có màu mẽ chút, bạn ko cần quan tâm cái này)
Bạn enable macro theo link dưới tủy office nhé
rồi
=concet(L11:S11) tại ô cần lấy kết quả
http://www.giaiphapexcel.com/forum/...ẫn-Enable-Macros-trong-Excel-(2003-2007-2010)
Mà làm thể nào để sau dấy phẩy có dấu cách vậy bạn.
 
Xin lỗi! Quên vụ dấu phẩy! Phải thế này:
Mã:
==SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(L11 &  CHAR(1)&M11&CHAR(1)&N11&CHAR(1)&O11&CHAR(1)&P11&CHAR(1)&Q11&CHAR(1)&R11&CHAR(1)&S11,"  ",CHAR(2)),CHAR(1)," ")), " ",", "),CHAR(2), " ")
Cảm ơn bác nhiều. Nhưng không đúng rồi.
 
Mà làm thể nào để sau dấy phẩy có dấu cách vậy bạn.
PHP:
Function Concet(Rng As Range) As String
Dim Cll As Range
    For Each Cll In Rng
        If Cll.Value <> "" Then
            Concet = Concet & ", " & Cll.Value
        End If
    Next Cll
    If Left(Concet, 1) = "," Then
        Concet = Mid(Concet, 2, Len(Concet) - 1)
    End If
End Function
giữa "," thành ", " thêm 1 khoảng trắng nữa thôi( dấu space trên bàn phím đó)
 
PHP:
Function Concet(Rng As Range) As String
Dim Cll As Range
    For Each Cll In Rng
        If Cll.Value <> "" Then
            Concet = Concet & ", " & Cll.Value
        End If
    Next Cll
    If Left(Concet, 1) = "," Then
        Concet = Mid(Concet, 2, Len(Concet) - 1)
    End If
End Function
giữa "," thành ", " thêm 1 khoảng trắng nữa thôi( dấu space trên bàn phím đó)

Hàm này lại không hiệu lực bác ạ
 
Cảm ơn bác nhiều. Nhưng không đúng rồi.

Không đúng là thế nào chứ? Xem file
--------------------------------
giữa "," thành ", " thêm 1 khoảng trắng nữa thôi( dấu space trên bàn phím đó)
Cái vụ dấu phân cách phải nên để người dùng tự lựa chọn ---> Có thế hàm mới mang tính tổng quát
 

File đính kèm

Web KT

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

Back
Top Bottom