Nhiều năm trước, chúng tôi đã phải đưa ra một giải pháp để khảo sát kết quả mà chúng tôi đã nhận được thông qua CSV. Trước đó, chúng tôi sẽ nhận được dữ liệu trong đó cột đầu tiên là e-mail và các cột tiếp theo là 1 hoặc null để biểu thị sự quan tâm đến một tổ chức. Chúng tôi đã cố gắng đưa ra một giải pháp đi qua từng cột SAU cột e-mail và lưu vào sổ làm việc riêng một danh sách các email cho mỗi cột có 1 trong đó để chúng tôi có thể gửi cho các tổ chức đó.
Dữ liệu của chúng tôi (được đơn giản hóa) trông như thế này:
Trong đó kết quả cuối cùng sẽ cung cấp 4 tệp .xlsx mới (club1.xlsx, club2.xlsx, club3.xlsx, v.v.), mỗi tệp có 'email' có 1 hàng trong cột tương ứng. (Trong ví dụ trên Club1.xlsx sẽ có Email1, Email3, Email7 được liệt kê)
Vào thời điểm đó, cộng đồng StackExchange rất hữu ích trong việc giúp chúng tôi tìm ra giải pháp bằng cách cung cấp mã VBA sau để chạy macro:
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
Nhưng bố cục của chúng tôi đã thay đổi và vì cuộc sống của chúng tôi, chúng tôi không thể tìm ra cách sửa đổi mã để bao gồm nhiều cột hơn trong lưu. Thay vì chỉ có cột 'Email', giờ đây chúng tôi có các cột bổ sung cho Tên ưa thích, Tên, Họ và Đại từ. Những nỗ lực của chúng tôi trong việc sửa đổi mã trên chỉ phục vụ để phá vỡ hoàn toàn macro hoặc chỉ lưu một hàng duy nhất.
Bất cứ ai cũng có và tư vấn về cách chúng tôi có thể viết mã mới hoặc sửa đổi mã hiện có để bao gồm tất cả các cột trong bản xuất của chúng tôi (vì vậy Club1.xlsx bây giờ sẽ có dữ liệu cột / hàng cho Tên được gọi, Tên, Họ, Đại từ và Email cho mỗi cột có "1").
Đây là bộ dữ liệu mới của chúng tôi:
Có suy nghĩ gì không? Tôi bối rối.