Nối các cell thành chuỗi
Xin các anh chị giúp đỡ nối các text trong nhiều cell lại thành một chuỗi như file mẫu đính kèm. Xin cảm ơn
Xem file đính kèm nhé, nhớ Enable Macro.
www.giaiphapexcel.com/diendan/threads/n%E1%BB%91i-c%C3%A1c-cell-th%C3%A0nh-chu%E1%BB%97i.30617/
Khóa học SprinGO phù hợp
Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...
Xem khóa học
Function Join(Rng As Range) As String
Dim cll As Range, Tmp As String
For Each cll In Rng
Tmp = Tmp & cll & " "
Next cll
Join = Left(Tmp, Len(Tmp) – 1)
End Function
Mình thấy đoạn code trên ngắn mà, nếu làm công thức mình không biết có làm được ko? nhưng chắc mệt lắm
Đoạn code trên có gì bạn không hiểu thì hỏi Anh em nhé
Tôi thấy cách dùng biến tạm để tính toán và trả về kết quả cho hàm hay hơn là tính toán trực tiếp vào tên hàm(Ý kiến cá nhân của tôi), còn dùng hàm RTrim để loại bỏ dấu cách thừa ở cuối như bạn trong trường hợp này có vẻ không đúng lắm, vì nó cắt tất cả các dấu cách ở cuối, trong khi đó trong quá trình tính toán ta chỉ thừa có 1 dấu cách ở cuối mà thôi, nếu ô cuối cùng có dấu cách ở cuối thì sao???
Có 1 cách khác mà tôi cho là tuyệt chiêu, đó là nối các từ với nhau bằng dấu phân cách —> Ra được kết quả ta dùng TRIM để loại các dấu cách thừa (khỏi IF)
Ví dụ hàm của bạn có thể sửa như sau:
Function JoinText(Range As Range, Sep As String) As String
Dim Clls As Range, Tmp As String
For Each Clls In Range
Tmp = Tmp & " " & Clls.Value
Next Clls
JoinText = Replace(WorksheetFunction.Trim(Tmp), " ", Sep)
End FunctionCú pháp sử dụng:
=JoinText(B2:B15," ")
Trong đó:
– Sep là ký tự phân cách do người dùng tùy chọn
– Vùng B2:B15 chứa dử liệu không liên tục
Lưu ý:
– Bạn không nên đặt tên hàm là Join (trùng với tên hàm của VBA) vì sẽ gây hậu quả nghiêm trọng nếu có lúc nào đó bạn cần dùng đến hàm này (của VBA)
– Đây chỉ là gợi ý về việc có thể thay thế IF chứ chưa hẳn là giải pháp hoàn hảo