Попытка «сопоставить» два несвязанных набора данных с общими переменными;макрос работает только для некоторых значений? - PullRequest
0 голосов
/ 09 февраля 2019

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

Я понимаю, что vlookup может быть самым простым вариантом, но я пытаюсь применить свои навыки VBA.

Макрос, который я написал ниже, работает до определенного момента, но при достижении определенных странвыдайте ошибку 400 (или какую-то другую ошибку).Почему это происходит?

Вот фактический файл: https://drive.google.com/file/d/1gBmoRmzGQN0IDnie5UH8TDszoVQmv1C1/view?usp=sharing

Sub MatchUp()

Dim Past As String
Dim Future As String

For Each PastCell In Range("A1:A233")
Past = PastCell.Value

For Each FutureCell In Range("P1:P233")
    Future = FutureCell.Value

    If Past = Future Then
        Range(FutureCell.Offset(0, 1), FutureCell.Offset(0, 9)).Cut Range(PastCell.Offset(0, 15), FutureCell.Offset(0.24))
    End If

    Next FutureCell

Next PastCell          


Application.CutCopyMode = False

End Sub

1 Ответ

0 голосов
/ 09 февраля 2019

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

Dim Past As String, FoundCell As Range

For Each PastCell In Range("A1:A233")

Set FoundCell = Nothing
Past = PastCell.Value

Set FoundCell = Cells.Find(Past, LookAt:=xlwhole)

If Not FoundCell Is Nothing Then Range(PastCell.Offset(0, 1), PastCell.Offset(0, 9)).Value = Range(FoundCell.Offset(0, 15), FoundCell.Offset(0.24)).Value

Next PastCell

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...