筛选调查中的 Excel 数据以获取电子邮件

筛选调查中的 Excel 数据以获取电子邮件

暑假期间,我们针对一些学生进行了一项调查,以表明他们对一些俱乐部的兴趣。通过扫描回答的方式,我们为每个俱乐部提供了一列,并在列中的每个单元格中为表示对该特定俱乐部感兴趣的人(行)分配了一个“1”。第一列是他们的电子邮件地址。

在此处输入图片描述

最终目标是过滤数据,以便我们可以获得每个俱乐部感兴趣的人员的电子邮件 - 然后将那些电子邮件以单独的文件形式发送给俱乐部以进行营销。

去年我通过对每个俱乐部进行“过滤”来做到这一点,将电子邮件栏中的所有电子邮件复制到一个新文档中,保存它,然后将文件发送给各自的俱乐部。

使用上面的例子,我们为俱乐部 1 有一个文件,其中包含电子邮件 1、电子邮件 3 和电子邮件 7;为俱乐部 2 有一个文件,其中包含电子邮件 5,等等。有 200 多个俱乐部和 2000 多封电子邮件,你可以想象这是多么耗时。

一位同事建议数据透视表可能会有所帮助,我们对此进行了一些尝试,看看是否有更简单的解决方案......但我们找不到可以显着减少浏览数据所需时间的解决方案。

想知道是否有人有任何想法或建议?也许我的解决方案已经是最快的了?

答案1

您可以使用 VBA 为每个俱乐部创建单独的文件。下面的过程FilterData为每个俱乐部创建一个文件,该文件位于与包含 VBA 代码的文件相同的目录中,该文件还应包含名为 的工作表中的响应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

答案2

数据透视表是最佳选择。使用工作表创建数据透视表。

完成后,将电子邮件列拖到行字段,然后将您感兴趣的俱乐部拖到过滤器字段。将过滤器设置为“1”

这将为您提供对该俱乐部感兴趣的所有人员的列表。

Excel

相关内容