Nhờ mọi người giúp đỡ Nối chuỗi

Liên hệ QC

chieudainoinho

Thành viên mới
Tham gia
9/7/08
Bài viết
4
Được thích
2
Nhờ các ace giúp đỡ. Dữ liệu demo đã miêu tả trong sheet "HPVT". Nhờ ace viết code sao cho khi chạy tương ứng với từng mã hiệu công việc ở cột "Nối chuỗi" sẽ tự động nối vật liệu, nhân công, máy; cách nhau bằng dấu ";". Cảm ơn ace đã quan tâm
 

File đính kèm

Nhờ các ace giúp đỡ. Dữ liệu demo đã miêu tả trong sheet "HPVT". Nhờ ace viết code sao cho khi chạy tương ứng với từng mã hiệu công việc ở cột "Nối chuỗi" sẽ tự động nối vật liệu, nhân công, máy; cách nhau bằng dấu ";". Cảm ơn ace đã quan tâm
File demo? không có sheet"HPVT" bạn ạ
Hãy tìm hiểu hàm "jointext" https://www.giaiphapexcel.com/diend...dòng-của-1-cột-vào-1-ô-theo-điều-kiện.100068/
 
Upvote 0
Nhờ các ace giúp đỡ. Dữ liệu demo đã miêu tả trong sheet "HPVT". Nhờ ace viết code sao cho khi chạy tương ứng với từng mã hiệu công việc ở cột "Nối chuỗi" sẽ tự động nối vật liệu, nhân công, máy; cách nhau bằng dấu ";". Cảm ơn ace đã quan tâm
Tham khảo: https://www.giaiphapexcel.com/diendan/threads/hàm-nối-chuỗi-có-điều-kiện.136582/#post-872090

Cụ thể:
Mã:
C1=IF(A1,JoinText(", ",INDEX(B2:INDEX(B2:$B$23,IFERROR(MATCH(A1+1,$A2:$A$23,)-1,)),)),"")
Enter, fill xuống.
Xem file kèm

Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nhờ các ace giúp đỡ. Dữ liệu demo đã miêu tả trong sheet "HPVT". Nhờ ace viết code sao cho khi chạy tương ứng với từng mã hiệu công việc ở cột "Nối chuỗi" sẽ tự động nối vật liệu, nhân công, máy; cách nhau bằng dấu ";". Cảm ơn ace đã quan tâm
Đưa dữ liệu thật lên đi bạn! Cái gì mà dữ liệu toàn 1, 2, 3.... Có khi nào dữ liệu thật chẳng giống vậy không?
 
Upvote 0
Đưa dữ liệu thật lên đi bạn! Cái gì mà dữ liệu toàn 1, 2, 3.... Có khi nào dữ liệu thật chẳng giống vậy không?
Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
Bài đã được tự động gộp:

Đưa dữ liệu thật lên đi bạn! Cái gì mà dữ liệu toàn 1, 2, 3.... Có khi nào dữ liệu thật chẳng giống vậy không?
Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
 

File đính kèm

Upvote 0
Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
Thử:
Mã:
G4=IF(A4,TRIM(JoinText(", ",IF(C5:$C$200>0,INDEX(D5:INDEX(D5:$D$200,IFERROR(MATCH(A4+1,$A4:$A$200,)-1,)),),NA))),"")
Kết thúc bằng Ctrl+Shift+Enter, rồi fill xuống.
Xem file kèm.

Thân
 

File đính kèm

Upvote 0
Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
Bài đã được tự động gộp:


Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
Tìm kiếm trên mạng một hồi cũng thấy cái gần giống ý bạn; bạn tham khảo thế nào nhé:
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thử:
Mã:
G4=IF(A4,TRIM(JoinText(", ",IF(C5:$C$200>0,INDEX(D5:INDEX(D5:$D$200,IFERROR(MATCH(A4+1,$A4:$A$200,)-1,)),),NA))),"")
Kết thúc bằng Ctrl+Shift+Enter, rồi fill xuống.
Xem file kèm.

Thân
Bài này theo mình viết cho nó cái Sub nho nhỏ là Ok nhất, còn nếu dùng Function thì cũng viết cho nó cái ngắn gọn, dùng JoinText lại phải thêm....một đống công thức, rồi lại "cồng trôn híc híc", rắc rối quá. Tập viết code đi cho nhẹ người, bài nào cũng một đống công thức nhìn......ghê quá. Híc, bộ....bỏ nhậu rồi hả?
Thân
 
Upvote 0
Bài này theo mình viết cho nó cái Sub nho nhỏ là Ok nhất, còn nếu dùng Function thì cũng viết cho nó cái ngắn gọn, dùng JoinText lại phải thêm....một đống công thức, rồi lại "cồng trôn híc híc", rắc rối quá. Tập viết code đi cho nhẹ người, bài nào cũng một đống công thức nhìn......ghê quá. Híc, bộ....bỏ nhậu rồi hả?
Thân
Bác viết giúp 1 code ngắn gọn cho mọi người tham khảo với ạ
 
Upvote 0
Xin lỗi các ae đã không kiểm tra trước khi post lên. Dữ liệu chuẩn nhờ giúp đỡ đây ạ. Cảm ơn đã quan tâm
Công thức mà làm gì bạn? Code nhập giá trị thôi. Nếu cần chạy khi có sự thay đổi vd. trong cột D thì trong Sub Worksheet_Change gọi sub noi_chuoi. Thế thôi.

Viết nhanh, bạn tự test.
Cho code sau vào Module
Mã:
Sub noi_chuoi()
Dim r As Long, last_pos As Long, text As String, data(), result()
    With ThisWorkbook.Worksheets("HPVT")
        .Range("G4:G" & .Cells(Rows.Count, "G").End(xlUp).Row).ClearContents
        r = .Cells(Rows.Count, "B").End(xlUp).Row
        If r < 4 Then Exit Sub
        data = .Range("A4:D" & r).Value
        ReDim result(1 To r - 3, 1 To 1)
    End With
    For r = 1 To UBound(data)
        If Len(data(r, 1)) Then
            If last_pos Then result(last_pos, 1) = Mid(text, 2)
            last_pos = r
            text = ""
        ElseIf Len(data(r, 2)) Then
            text = text & ";" & data(r, 4)
        End If
    Next r
    result(last_pos, 1) = Mid(text, 2)
    ThisWorkbook.Worksheets("HPVT").Range("G4").Resize(UBound(result)).Value = result
End Sub
 
Upvote 0
Bài này theo mình viết cho nó cái Sub nho nhỏ là Ok nhất, còn nếu dùng Function thì cũng viết cho nó cái ngắn gọn, dùng JoinText lại phải thêm....một đống công thức, rồi lại "cồng trôn híc híc", rắc rối quá. Tập viết code đi cho nhẹ người, bài nào cũng một đống công thức nhìn......ghê quá. Híc, bộ....bỏ nhậu rồi hả?
Thân
Lâu quá mới thấy anh vào chơi với anh em, cũng hơn năm rồi hén! :)

Thằng em của anh chỉ thích công thức mảng, xem nó là thú vui tiêu khiển của mình, để mà vẫy vùng lên trời xuống bể tự do tự tại, rày đây mai đó hỗ trợ anh em khác muốn khám phá cái tới hạn của công thức, lâu lâu kiếm được vài bài hay thì anh em cùng hể hả cười khà tâm đắc với nhau mà anh.

Lĩnh vực VBA đã có quá nhiều bậc nhân tài tham gia, hễ cần chỗ nào là có ngay người giúp, hễ khó chỗ nào thì đã có ngay code giải, hằng hà sa số trên Diễn đàn của mình. Thậm chí thằng em của anh không biết VBA, nhưng muốn chơi nối chuỗi bằng công thức thì không cái nào "hấp dẫn, tối ưu và hợp ý" bằng JoinText, JoinIf. cứ thế mà vận dụng, có "Ngọc quý" sao lại không xài thì phí quá. Giờ mà tập viết VBA thì thật sự ... chắc thời gian đó kiếm anh chén tạc chén thù còn hữu ích và thú vị với em hơn....

Chúc anh ngày vui.
Khà khà khà!
/-*+//-*+//-*+/
 
Upvote 0
Thậm chí thằng em của anh không biết VBA, nhưng muốn chơi nối chuỗi bằng công thức thì không cái nào "hấp dẫn, tối ưu và hợp ý" bằng JoinText, JoinIf. cứ thế mà vận dụng
Bởi vì nó giúp bạn thỏa sức "tung hoành". Hàm mang tính tổng quát nên có thể áp dụng gần như vào mọi việc liên quan đến nối chuỗi, chỉ cần bạn có sức.. "tưởng tượng" ra. Nó giống cách hoạt động của SUMPRODUCT. Vấn đề nằm ở đây!
 
Upvote 0
Bởi vì nó giúp bạn thỏa sức "tung hoành". Hàm mang tính tổng quát nên có thể áp dụng gần như vào mọi việc liên quan đến nối chuỗi, chỉ cần bạn có sức.. "tưởng tượng" ra. Nó giống cách hoạt động của SUMPRODUCT. Vấn đề nằm ở đây!
Quá đúng, quá đúng thầy!

Hàm này hữu ích vì nó mang tính phổ quát, đại chúng không viết bó gọn chỉ cho 1 trường hợp tại thời điểm hỏi, dung chứa được mọi cái không tị hiềm khen chê, cái đó mới đáng quý và đáng trân trong. Rất hợp với tính cách phóng khoáng của hảo hán Nam bộ nói chung, mà còn là sự thành công rất trân quý của thầy đã dành tặng cho cộng đồng ngôi nhà GPE này nói riêng.

Cảm ơn thầy nhiều.
/-*+//-*+//-*+/
 
Upvote 0
Web KT

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

Back
Top Bottom