Kết quả 1 đến 10 của 10

Chủ đề: Giúp nối chuỗi từ nhiều dòng của 1 cột vào 1 ô theo điều kiện

  1. #1
    tungvu258 Guest

    Giúp nối chuỗi từ nhiều dòng của 1 cột vào 1 ô theo điều kiện

    Hiện mình làm một bảng kê chi tiết các trụ đèn được sửa chữa của các trạm theo công việc 1, công việc 2...
    Ví dụ:
    Cột A:
    A1= Trụ 1
    A2= Trụ 2
    A3= Trụ 3
    A4= Trụ 4
    A5= Trụ 5
    ....
    An= Trụ n

    Nỗi chuỗi thành:
    Ô B1 = Trụ 1, 2, 3, 4, 5, ..., n

    Yêu cầu đặt ra là:

    Viết hàm nối chuỗi các tên số trụ bên sheet "Dữ liệu" thỏa điều kiện giá trị bên cột "công việc 1" # 0 hoặc # ô rỗng, các tên số trụ trong chuỗi được cách nhau bằng dấu ", " và được lượt bớt chữ "Trụ" phía trước.
    Mẫu ví dụ theo file đính kèm

    Chú ý: Bảng dữ liệu thực tế rất nhiều trạm và mỗi trạm lại rất nhiều trụ và có điều kiện nên không sử dụng được hàm nối chuỗi thông dụng như: "&" hay CONCATENATE

    Mình đã tìm kiếm rất nhiều chưa thấy có 1 hướng dẫn cụ thể nào. Rất mong được các bạn giúp đỡ.

  2. #2
    anhngoctmy Guest
    Trích dẫn Gửi bởi tanirac
    Hiện mình làm một bảng kê chi tiết các trụ đèn được sửa chữa của các trạm theo công việc 1, công việc 2...
    Ví dụ:
    Cột A:
    A1= Trụ 1
    A2= Trụ 2
    A3= Trụ 3
    A4= Trụ 4
    A5= Trụ 5
    ....
    An= Trụ n

    Nỗi chuỗi thành:
    Ô B1 = Trụ 1, 2, 3, 4, 5, ..., n

    Yêu cầu đặt ra là:

    Viết hàm nối chuỗi các tên số trụ bên sheet "Dữ liệu" thỏa điều kiện giá trị bên cột "công việc 1" # 0 hoặc # ô rỗng, các tên số trụ trong chuỗi được cách nhau bằng dấu ", " và được lượt bớt chữ "Trụ" phía trước.
    Mẫu ví dụ theo file đính kèm

    Chú ý: Bảng dữ liệu thực tế rất nhiều trạm và mỗi trạm lại rất nhiều trụ và có điều kiện nên không sử dụng được hàm nối chuỗi thông dụng như: "&" hay CONCATENATE

    Mình đã tìm kiếm rất nhiều chưa thấy có 1 hướng dẫn cụ thể nào. Rất mong được các bạn giúp đỡ.
    Bạn thử file này xem sao.

  3. #3
    tungvu258 Guest
    Trích dẫn Gửi bởi mhung12005
    Bạn thử file này xem sao.
    1> Thứ nhất:
    Hàm JoinText mà bạn đang dùng là hàm "đời đầu". Bây giờ đã được cải tiến lại thế này:

    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
    2> Thứ 2:
    Bạn cố tình sửa 1 đoạn trong hàm thành Arr(n) = Right(CStr(Item), Len(CStr(Item)) - 4) ---> Như vậy là phá vỡ tính tổng quát của hàm nên nó chỉ phục vụ duy nhất cho bài này thôi (đây là điều mà tôi không bao giờ thích làm)
    ------------------
    Vậy nếu là tôi thì tôi sẽ dùng version mới nhất. Còn công thức trên bảng tính

    Mã:
    ="Trụ: "&JoinText(", ",TRUE,IF('Dữ liệu'!B4:B13<>"",'Dữ liệu'!A4:A13,""))
    Sẽ được sửa thành

    Mã:
    ="Trụ: "&SUBSTITUTE(JoinText(", ",IF('Dữ liệu'!B4:B13<>"",'Dữ liệu'!A4:A13,NA())),"Trụ ","")
    hoặc:

    Mã:
    ="Trụ: "&SUBSTITUTE(JoinText(", ",IF(1/('Dữ liệu'!B4:B13<>""),'Dữ liệu'!A4:A13)),"Trụ ","")
    Điều này có nghĩa là:
    - Hàm vẫn mang tính tổng quát vốn có
    - Ai muốn sửa đổi thế nào thì tự xử lý dữ liệu thêm (sửa ở bên ngoài bảng tính bằng các hàm khác chứ không sửa lại code trong hàm)

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Mình đã thử tạo Macro có tên "JoinText" rồi copy past đoạn code trên vào Macro và chạy. Sau đó điền công thức vào bảng tính nhưng không thể thực hiện được.
    Bạn vui lòng hướng dẫn mình cách thực thi hàm trên với. Thank

  5. #5
    hailong Guest
    Trích dẫn Gửi bởi tanirac
    Mình đã thử tạo Macro có tên "JoinText" rồi copy past đoạn code trên vào Macro và chạy. Sau đó điền công thức vào bảng tính nhưng không thể thực hiện được.
    Bạn vui lòng hướng dẫn mình cách thực thi hàm trên với. Thank
    Download file về xem cho lẹ

  6. #6
    vivaclinic Guest
    Cảm ơn bạn rất nhiều. Chúc bạn sức khỏe và thành công nhé

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Mình đã tìm kiếm rất nhiều chưa thấy có 1 hướng dẫn cụ thể nào. Rất mong được các bạn giúp đỡ.
    Bạn tham khảo 1 cách nhập liệu khác sau đó dùng PivotTable để được kết quả.

  8. #8
    hocon84 Guest
    Mình có file cần gom nhóm và nối chuỗi tương ứng theo từng nhóm.Vùng dữ liệu có mấy trăm ngàn dòng rất lớn. Cần gom theo từng nhóm, mỗi nhóm 1 dòng và kết nối các chuỗi tương ứng lại thành 1 dòng. Áp dụng hàm JoinText nhưng không được như kết quả. Mong các bạn góp ý kiến sửa dùm. Tất cảm ơn.

  9. #9
    gcat1 Guest
    mình ko xem đc bản excel

  10. #10
    Trích dẫn Gửi bởi daihoangtu
    Mình có file cần gom nhóm và nối chuỗi tương ứng theo từng nhóm.Vùng dữ liệu có mấy trăm ngàn dòng rất lớn. Cần gom theo từng nhóm, mỗi nhóm 1 dòng và kết nối các chuỗi tương ứng lại thành 1 dòng. Áp dụng hàm JoinText nhưng không được như kết quả. Mong các bạn góp ý kiến sửa dùm. Tất cảm ơn.
    em cũng đang có vướng mắc giống a/c quá. Nhờ mng chỉ cách giúp ạ,

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •