2

У меня есть лист Excel с отслеживанием лиц, которые посещали определенные мероприятия. Теперь я хочу добавить активность с сотнями людей, некоторые из которых уже пошли к другим. Затем я хочу отсортировать по времени, когда они пошли на мероприятие.

Чтобы уточнить:

Скриншот

Какой самый простой способ добиться этого?

Спасибо :)

2 ответа2

0

Поскольку вы упоминаете «Я хочу отсортировать по времени, когда они пошли на мероприятие», я предполагаю, что ваши X представляют время (для которого ответ @ Jook не будет работать). Приведенный ниже подход, однако, будет работать для времен (или X с незначительной адаптацией) и не использует формулы (кроме тех, которые лежат в основе значков):

Предполагая, что новое действие 3 имеет значения в столбце сразу справа от имени:-

  1. Скопируйте данные существующего листа и заголовки на новый лист.
  2. Сразу ниже добавьте копию данных из "Нового занятия 3" на этот лист.
  3. Переместите новые данные действия 3, кроме имен, в два столбца справа.
  4. Перетащите ярлык действия 2 вправо на одну ячейку.
  5. Выберите весь лист, Данные> Сортировать и отфильтровать - AZ.
  6. Данные> Структура> Подытог с При каждом изменении в: Имя, Использовать функцию: Макс., Добавить подытог, чтобы: проверить каждое из Мероприятие 1, Мероприятие 2 и Мероприятие 3, установить флажок Заменить текущие промежуточные итоги и Сводка под данными, ОК.
  7. Скопируйте Специальная вставка> Значения, ОК.
  8. Данные> Сортировка и фильтр - Фильтр и для столбца Имя Текстовые фильтры, Не содержит введите MAX, ОК.
  9. Удалите все видимые строки, кроме одной с метками.
  10. Данные> Сортировка и фильтр - Фильтр.
  11. Выберите столбец "Имя", "Домой"> "Редактирование"> "Найти и выбрать", "Заменить", введите "МАКС" без кавычек для "Найти что", "Заменить все", "ОК", "Закрыть".
  12. Выберите весь лист, Данные> Структура> Промежуточный итог, Удалить все.
  13. Удалить строку с именем "Гранд".
  14. Выберите столбцы действий, Домашняя страница> Ячейки - Формат, Формат ячеек, Пользовательский, дд / мм / гггг чч: мм ;; "" или для соответствия, ОК.
  15. Сохранить.

Это дает результаты, отсортированные по порядку имен независимо от времени, которое затем можно отсортировать по активности, но не с учетом макета удобно сортировать по активности независимо от того, 1, 2 или 3.

0

Вот решение без VBA. Рекомендую, когда это что-то более редкое, чем ежемесячное задание.

Вот как вы настраиваете свои данные - обратите внимание, cols AD - это "новые cols".

Это настройка

Вот формулы - установите их в строке 2, затем скопируйте:

A2=IF(ISBLANK(F2),INDEX(J:J,ROW()-COUNTIF(F:F,"*")+1),F2)

B2=IFERROR(T(VLOOKUP($A2,$F:$H,2,FALSE)),"")

C2=IFERROR(T(VLOOKUP($A2,$F:$H,3,FALSE)),"")

D2=IFERROR(T(VLOOKUP($A2,$J:$K,2,FALSE)),"")

A2 заполняет все имена из вашей текущей таблицы активности, пока не получит пустые ячейки. Затем вы начинаете заполнять имена из вашей новой таблицы активности, используя COUNTIF чтобы получить количество непустых ячеек, и ROW и +1 чтобы получить правильный INDEX / Name.

Теперь вам просто нужно сделать отдельный поиск для вашей деятельности.

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

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

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