Làm cách nào để truy xuất các dòng trong một ô chứa một văn bản nhất định mà tôi muốn?


0

Tôi có một danh sách lớn các nhóm người dùng và tên người dùng tương ứng của họ. Bây giờ, tôi muốn lọc chúng nhiều hơn. Các nhóm người dùng cho mỗi người dùng là TẤT CẢ trong một ô (tên người dùng - nhóm người dùng), do đó có nghĩa là có thể có 10-15 nhóm người dùng trong một ô. Tôi chỉ muốn các dòng bao gồm "WTS", và sau đó đặt các dòng người dùng bao gồm "WTS" vào một ô mới.

Làm thế nào để tôi đi về làm điều này?

Dữ liệu mẫu:

Nhóm người dùng 1 WTS_A, BTS_B, WTS_C,

Tôi muốn WTS_A và WTS_C.


2
Xem xét thêm một số dữ liệu mẫu
Pimp Juice IT

Tôi đã thêm một số dữ liệu ví dụ.
Justin Ooi Jun Kai

Câu trả lời:


0

Dựa trên sự hiểu biết của tôi về câu hỏi của bạn, tôi đề xuất một giải pháp 2 bước.

Bước 1 - Sử dụng tính năng Chuyển văn bản thành Cột trong Excel và chuyển đổi văn bản cột đơn thành nhiều cột. Sử dụng Space và Comma như là dấu phân cách.

Bước 2 - Sử dụng chức năng VBA tùy chỉnh để chỉ nối các ô dự định vào một ô được phân tách bằng dấu phẩy.

Sau khi bạn hoàn tất quy trình Chuyển văn bản thành Cột, hãy nhấn ALT + F11 trên trang tính để mở Trình chỉnh sửa VBA. Từ mô-đun Chèn Menu Chèn. Một Module1 sẽ được tạo và trình soạn thảo mã của nó sẽ mở. Nếu không nhấp đúp vào Module1 trong khung bên trái để mở trình soạn thảo mã của nó.

Dán đoạn mã sau vào cùng.

Public Function TXTJOIN(argument1 As Range)      'Accept input range
   result = ""
   colcounter = argument1.Columns.Count
   rowcounter = argument1.Rows.Count
   If rowcounter > 1 Then
        TXTJOIN = CVErr(xlErrValue)  'If row counter > 1 return #VALUE! Error
        Exit Function
   End If

   If colcounter > 255 Then
        TXTJOIN = CVErr(xlErrValue)  'If col counter > 255 return #VALUE! Error
        Exit Function
   End If


        For Each element In argument1
            If Left(element, 3) = "WTS" And Len(element) > 3 Then
                result = result & element & ","
            End If
        Next element

        If result = "" Then
            TXTJOIN = result
        Else
            TXTJOIN = Left(result, Len(result) - 1)
        End If
End Function

Điều này tạo ra một hàm TXTJOIN tùy chỉnh để kiểm tra chuỗi bắt đầu là "WTS" và tham gia tất cả các cột như vậy được phân cách bằng dấu phẩy

Lưu và thoát trình soạn thảo VBA. Quay lại bảng tính, bây giờ hãy chuyển đến cột cực bên phải và nhập chức năng này chỉ định phạm vi cột áp dụng. Sao chép hoặc kéo nó xuống dọc theo chiều dài của các hàng áp dụng. Bạn sẽ nhận được chuỗi dự định trong các ô tương ứng. Chỉ sao chép các giá trị ở nơi khác và xóa phần còn lại của các cột để dọn sạch trang tính.

Bạn sẽ nhận được #VALUE! Lỗi từ chức năng này trong các tình huống như.

  • Bạn truyền một mảng đa chiều cho nó, ví dụ A1: D12

  • Bạn vượt qua hơn 255 cột phạm vi cho nó.

  • Bạn truyền nhiều mảng cho nó, ví dụ A1: A12

Hãy cho tôi biết, nếu việc này giúp ích cho bạn.

Giới hạn - Điều này giả định rằng người dùng được phân tách bằng Dấu cách hoặc Dấu phẩy. Nếu hai cái nằm cùng nhau mà không có dấu phẩy hoặc dấu cách, hàm này sẽ không xác định hai cái riêng biệt.

nhập mô tả hình ảnh ở đây


Phải chỉnh sửa một số thứ vì Người dùng & Nhóm là cột và 1 và WTS_A, BTS_B, WTS_C là hàng của Người dùng và Nhóm nhưng điều này hoạt động tốt!
Justin Ooi Jun Kai

1

Bạn có hai nhiệm vụ: tìm kiếm dữ liệu hợp lệ (thú vị) và sau đó định dạng nó.

1 Tìm kiếm một chuỗi:

Tìm kiếm một chuỗi như WTS có thể được thực hiện với các chức năng Tìm hoặc Tìm kiếm. Cả hai sẽ hiển thị cho bạn một giá trị số khi tìm thấy chuỗi, như thế này: TÌM ("WTS"; A1) hoặc TÌM KIẾM ("WTS"; A1)

Làm điều này cho hàng đầu tiên. Chọn ô có bản sao công thức của bạn và sau đó chọn các ô bên dưới nó cho tất cả các hàng dữ liệu của bạn và dán. Công thức sẽ tự động tự động thành TÌM ("WTS"; B1) ... TÌM ("WTS"; C1) ...

Tôi đề nghị lọc thủ công vào thời điểm này để ẩn các hàng gây ra lỗi cho bạn: #VALUE!

Chỉ cần xóa những hàng không mang lại cho bạn kết quả.

2 Chia dữ liệu nhóm người dùng:

Khi bạn có nhiều mục trong ô được phân tách bằng một chuỗi (chẳng hạn như dấu gạch ngang "-"), hãy chọn các ô của bạn và sử dụng Dữ liệu -> Văn bản thành Cột -> Được phân cách -> Thêm dấu phân cách của bạn - chọn Khác và nhập dấu gạch ngang.

Điều này sẽ lấy dữ liệu của bạn và đặt nó trên nhiều ô, như Usergroup1 Usergroup2 Usergroup3 ...

3 tiền thưởng:

Nếu bạn muốn sử dụng chức năng tìm hoặc tìm kiếm trên nhiều ô mà bạn vừa phân tách, hãy ghép các ô thành một ô (về cơ bản là phân tách) và sau đó tìm kiếm trên các giá trị được nối. A7 = CONCATENATE (A1; A2; A3) A8 = TÌM ("WTS"; A7)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.