Я зациклился на том, как логически подойти к проблеме, так как для этого могут потребоваться двумерные массивы, или, возможно, я слишком задумываюсь над проблемой.Excel VBA - Сравнение данных столбца с уникальными идентификаторами
У меня есть два листа данных. Каждый лист данных имеет список уникальных идентификаторов и несколько дат, связанных с каждым идентификатором. К сожалению (и это то, где я застреваю), количество дат, связанных с каждым идентификатором, не всегда будет одинаковым, поэтому мне сложно сравнивать даты.
Например, вот пример из Лист1:
1 | 06/08
1 | 06/15
1 | 06/16
1 | 06/17
1 | 06/22
1 | 06/23
1 | 06/30
1 | 07/01
1 | 07/05
1 | 07/06
1 | 07/07
1 | 07/12
1 | 07/15
1 | 07/18
2 | 06/24
2 | 06/30
2 | 07/05
2 | 07/06
2 | 07/07
2 | 07/08
2 | 07/14
А вот пример из листа 2:
1 | 06/07
1 | 06/16
1 | 06/17
1 | 06/23
1 | 07/06
1 | 07/07
1 | 07/18
1 | 06/21
1 | 06/28
1 | 07/08
1 | 07/14
2 | 06/09
2 | 07/13
В основном, это, как предполагается, чтобы проверить прогресс по дате для каждого идентификатора , Даты на Листе 1 имеют даты предоставления обязательств, когда проект должен быть обновлен. Даты на Листе 2 имеют даты, когда проект был фактически обновлен для этой последовательности.
Основной логический цикл - это взять все уникальные идентификаторы и, предположительно, сохранить их в массиве.
Затем для каждого уникального значения в этом массиве просмотрите каждую уникальную дату для этого идентификатора в Sheet1. На эту дату в Листе 1 есть ли дата в Листе2, которая равна или раньше? Если это так, проект был успешно обновлен в этот день.
Но вот сложная часть, эта дата на Sheet2 теперь должна быть отброшена, поскольку она была «использована». Теперь мы переходим к следующей дате Sheet1 для этого идентификатора. Есть ли другая дата для этого идентификатора в Sheet2, которая равна или раньше? И так далее.
Любая помощь, которую вы можете предоставить для перевода этой логики в VBA, будет очень признательна! Простое сравнение было бы простым, но для этого уровня сложности требуется гораздо больше VBA, чем я сейчас знаком.
Это работало отлично, спасибо, и это гораздо более элегантное решение, чем то, что я пытался выполнить с помощью 4 массивов и VBA. – yutingxiang
@yutingxiang Я рад помочь. Если этот ответ разрешил ваш вопрос, пожалуйста, подумайте о его принятии, нажав галочку. Это означает, что вы нашли решение для сообщества. Это не обязательно. – hstay