1

У меня есть пять списков участников для отдельных мероприятий. Мне нужно найти любого, кто посетил все пять событий.

Я использовал обходной путь, делая два столбца за раз для сравнения адресов электронной почты, используя =IF(ISERROR(MATCH(D3,$N$3:$N$124,0)),"",C3) но я хотел бы сделать это одним ударом.

Или, может быть, обходной путь требует меньше усилий, чем создание единого решения!

3 ответа3

1

Пока пять списков участников находятся в простых диапазонах ячеек (например, если они все находятся в своих собственных столбцах), использование ряда функций COUNTIF внутри включающего AND должно работать для всех версий, начиная с Excel 2000:

Скриншот Excel

Для простоты использования формула для ячейки B5 приведена ниже:

=AND(COUNTIF($E:$E,$A5)>0,COUNTIF($F:$F,$A5)>0,COUNTIF($G:$G,$A5)>0,COUNTIF($H:$H,$A5)>0,COUNTIF($I:$I,$A5)>0)

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

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

0

Если вы сохраните данные как CSV, и импортировать в доступ.

ВЫБЕРИТЕ различный "EmailAddress", считайте ("EmailAddress") как x ОТ группы "Адреса" с помощью "EmailAddress"

Тогда, когда второй столбец, помеченный как x, равен 5, адрес электронной почты встречается 5 раз, и поэтому они были во всех 5 классах.

0

Я думаю, что у меня есть лучший подход. Я говорю: подумайте, потому что это было бы лучше, если у вас много данных или они распределены по нескольким рабочим листам (или даже рабочим книгам). Это также хороший подход, потому что приведенный ниже макрос может использоваться для множества других целей при попытке найти совпадающие данные (или, в зависимости от обстоятельств, несоответствующие данные).

Таким образом, этот макрос позволяет вам находить совпадающие данные между двумя диапазонами, либо в пределах одного листа, либо между листами. Я вставил код макроса внизу этого ответа. На этом этапе я предполагаю, что вы будете знать, что с этим делать. Я также предполагаю, что вы используете версию Excel, которая работает в Windows.

Сводка шагов макроса

  1. Когда вы запустите макрос, он попросит вас выбрать диапазон ячеек, содержащих данные, которые вы ищете. Например, если на первом листе у вас есть все адреса электронной почты в столбце C от C2 до C101, вы должны выбрать этот диапазон.
  2. Затем макрос попросит вас выбрать диапазон, который вы хотите исследовать. Просто выберите диапазон, содержащий адреса электронной почты для вашего второго события.
  3. Затем макрос попросит вас указать "комментарий" для макроса, который будет использоваться, чтобы указать, что он нашел соответствующий элемент. Здесь можно указать что угодно, например "Найдено", "Да" и т.д.
  4. Наконец макрос попросит вас ввести букву столбца. Это столбец, в который макрос поместит ваш "комментарий" из предыдущего шага.

Например

Предположим, у вас есть пять одинаковых листов в вашей книге, каждый лист для каждого списка посещаемости. Давайте предположим, что столбцы от A до F заполнены на каждом листе, и что это столбец C, который содержит адреса электронной почты. Предположим также, что у вас есть 100 участников, поэтому адреса электронной почты отображаются на каждом листе от C2 до C101.

Запустите макрос.

На шаге 1 выберите диапазон C2:C101 в первом рабочем листе. На шаге 2 выберите диапазон C2:C101 во втором рабочем листе. На шаге 3 введите "Да" в качестве комментария. А для шага 4 введите букву G (просто потому, что это мой первый пустой столбец в моем примере, но в вашем случае это, скорее всего, будет другая буква столбца).

При запуске макроса в столбце G вашего первого листа будет текст "Да" в любой строке, где адрес электронной почты также был найден во втором списке участников.

Теперь, в вашем случае, вам нужно будет запустить макрос снова. Выполните вышеуказанные шаги, за исключением того, что на этот раз на шаге 2 выберите диапазон C2:C101 на третьем листе, а на шаге 4 выберите следующий столбец после того, который вы выбрали ранее. В моем сценарии это был бы столбец H.

При запуске макроса столбец H вашего первого рабочего листа будет содержать текст "Да" в любой строке, где адрес электронной почты также был найден в третьем списке участников.

К настоящему времени вы начнете видеть, что происходит. К тому времени, когда вы повторите эти шаги, чтобы охватить все ваши списки посещаемости, у вас будет четыре столбца с текстом "Да", где это уместно. Теперь вы можете сортировать / фильтровать ваши данные так, чтобы отображались только строки, содержащие "Да" во всех этих столбцах. Это те, кто посещал все мероприятия.

Наконец, перед использованием любого макроса сделайте резервную копию ваших файлов Excel, чтобы у вас была чистая копия!

Sub FindMatchingData()
'This macro and Excel Add-In was designed by Monomeeth to allow users an easy
'way to find matching data between two ranges, either within the same worksheet or
'across worksheets within the same workbook.

Dim MySearchRange As Range
Dim c As Range
Dim findC As Variant

Set MyRange = Application.InputBox( _
Prompt:="Select the range of cells containing the data you are looking for:", Type:=8)

Set MySearchRange = Application.InputBox( _
    Prompt:="Select the range you wish to investigate:", Type:=8)

Response = InputBox(Prompt:="Specify the comment you wish to appear to indicate the data was found:")

MyOutputColumn = Application.InputBox( _
Prompt:="Enter the alphabetical column letter(s) to specify the column you want the message to appear in.")

Set Sht = MyRange.Parent

  For Each c In MyRange
    If Not c Is Nothing Then

Set findC = MySearchRange.Find(c.Value, LookIn:=xlValues)

        If Not findC Is Nothing Then
           Sht.Range(MyOutputColumn & c.Row).Cells.Value = Response
        End If
    End If
  Next
Excel.Application.SendKeys Keys:="^{HOME}", Wait:=True
DoEvents
MsgBox "Investigation completed."

End Sub

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