Lọc dữ liệu Excel dữ liệu từ khảo sát để có được email


3

Vào mùa hè, chúng tôi đã thực hiện một cuộc khảo sát cho một số sinh viên để cho thấy sự quan tâm của họ đối với một số câu lạc bộ. Cách các câu trả lời được quét trong đã cho chúng tôi một cột cho mỗi câu lạc bộ và "1" trong mỗi ô trong cột cho mỗi người (hàng) cho biết họ quan tâm đến câu lạc bộ cụ thể đó. Cột đầu tiên là địa chỉ email của họ.

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

Mục tiêu cuối cùng là lọc dữ liệu để chúng tôi có thể nhận được e-mail của những người quan tâm đến từng câu lạc bộ - sau đó gửi những e-mail đó trong một tệp riêng lẻ cho các câu lạc bộ để tiếp thị.

Năm ngoái tôi đã làm điều này bằng cách đi qua và 'lọc' từng câu lạc bộ riêng lẻ cho '1', sao chép tất cả các e-mail từ cột e-mail vào một tài liệu mới, lưu nó và gửi tệp đến câu lạc bộ tương ứng.

Sử dụng ví dụ trên, chúng tôi đã có một tệp cho club1 chứa Email1, Email3 và Email7; một cái khác cho Câu lạc bộ 2 chứa E-mail 5, v.v. Với hơn 200 câu lạc bộ và hơn 2000 email bạn có thể tưởng tượng điều này rất tốn thời gian.

Một đồng nghiệp đề xuất các bảng trụ có thể giúp ích và chúng tôi đã chơi xung quanh với nó một chút để xem liệu có giải pháp nào dễ dàng hơn không ... nhưng chúng tôi không thể tìm thấy một bảng cắt giảm đáng kể thời gian cần thiết để đi qua dữ liệu.

Tự hỏi nếu có ai có ý tưởng, hoặc lời khuyên? Có lẽ giải pháp của tôi đã là nhanh nhất?

Câu trả lời:


3

Bạn có thể sử dụng VBA để tạo các tệp riêng lẻ cho mỗi câu lạc bộ. Quy trình FilterDatadưới đây tạo một tệp cho mỗi câu lạc bộ trong cùng thư mục với tệp chứa mã VBA, cũng sẽ chứa các phản hồi trong một bảng được gọi Responses.

Option Explicit

Sub FilterData()
    Dim Responses As Worksheet
    Dim Column As Long

    Set Responses = ThisWorkbook.Worksheets("Responses")
    Column = 2

    Do While Responses.Cells(1, Column).Value <> ""
        With Workbooks.Add(xlWBATWorksheet)
            With .Worksheets(1)
                Responses.Cells.Copy .Cells
                .Columns(Column).AutoFilter Field:=1, Criteria1:="<>1"
                .Rows(2).Resize(.Rows.Count - 1).Delete Shift:=xlUp
                .Columns(2).Resize(, .Columns.Count - 1).Delete Shift:=xlShiftToLeft
            End With

            .Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\" & Responses.Cells(1, Column).Value
        End With

        Column = Column + 1
    Loop
End Sub

Điều này hoạt động HOÀN HẢO. Chính xác những gì tôi cần - Cảm ơn bạn rất nhiều!
Cody S.

Một năm sau - điều này một lần nữa cứu mạng tôi. Chỉ một lần nữa cảm ơn Andreas. :)
Cody S.

1

Bảng Pivot là cách tốt nhất để đi đến đây. Tạo một bảng trụ ngoài bảng của bạn.

Khi bạn có nó kéo cột email vào trường hàng, sau đó câu lạc bộ bạn quan tâm đến trường bộ lọc. Đặt bộ lọc thành "1"

Điều này sẽ cung cấp cho bạn một danh sách tất cả những người quan tâm đến câu lạc bộ đó.

Excel


Cảm ơn Arthur - đó là khoảng 90% những gì tôi muốn nó làm; siêu hữu ích, cảm ơn đã làm rõ! Câu hỏi duy nhất của tôi bây giờ là - bạn có thể nghĩ ra cách nào để tự động hóa quá trình tách dữ liệu câu lạc bộ thành các trang (hoặc tệp) riêng biệt không? Có vẻ như việc bỏ chọn / kéo từng câu lạc bộ vào các bộ lọc theo định dạng bảng trụ sẽ mất khoảng thời gian tương tự như chỉ lọc từng cột (câu lạc bộ) riêng lẻ trong 1 giây trong dữ liệu gốc và sao chép / dán kết quả từ cột email.
Cody S.
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.