3

Летом мы провели опрос среди студентов, чтобы выяснить их интерес к ряду клубов. То, как были отсканированы ответы, дало нам столбец для каждого клуба и «1» в каждой ячейке в столбце для каждого человека (строки), который указал свой интерес к этому конкретному клубу. Самый первый столбец - это их адрес электронной почты.

Конечная цель состоит в том, чтобы отфильтровать данные, чтобы мы могли получать электронные письма тех, кто заинтересован в каждом клубе, а затем отправлять эти электронные письма в отдельный файл клубам для их маркетинга.

В прошлом году я сделал это, пропустив и «отфильтровав» каждый отдельный клуб на «1», скопировав все электронные письма из столбца электронной почты в новый документ, сохранив его и отправив файл в соответствующий клуб.

Используя приведенный выше пример, у нас был файл для club1, который содержал Email1, Email3 и Email7; другой для Club 2, содержащий E-mail 5 и т. д. С более чем 200 клубами и более чем 2000 электронными письмами вы можете себе представить, что это заняло много времени.

Коллега предположил, что сводные таблицы могут помочь, и мы немного поэкспериментировали с этим, чтобы посмотреть, есть ли более простое решение ... но мы не смогли найти такое, которое значительно сократило бы время, необходимое для прохождения данных.

Хотите знать, есть ли у кого-нибудь идеи или советы? Возможно, мое решение уже было самым быстрым?

2 ответа2

3

Вы можете использовать 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
1

Сводные таблицы - лучший способ попасть сюда. Создайте сводную таблицу из своего листа.

Если он у вас есть, перетащите столбец электронной почты в поле строк, затем интересующий вас клуб в поле фильтра. Установите фильтр на "1"

Это даст вам список всех людей, которые заинтересованы в этом клубе.

превосходить

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .