Указание исходных и целевых ячеек макроса - PullRequest
0 голосов
/ 23 июня 2019

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

Sub mainx()
    Dim r As Range, c As Range
    With Cells(1).CurrentRegion
        With .Offset(1).Resize(.Rows.Count - 1)
            For Each r In .Cells
                Set c = .Find(r.Value, r, , 1, , , 2)
                If (c.Address <> r.Address) Then   
                    If c.Row > r.Row Then           
                        r.Offset(, 40) = c.Row - r.Row - 1
                    Else
                        Do
                            Set c = .FindNext(c)
                        Loop While c.Row = r.Row And c.Address <> r.Address
                        If c.Row > r.Row Then
                            r.Offset(, 40) = c.Row - r.Row - 1
                        Else
                            r.Offset(, 40) = "na"
                        End If
                    End If
                Else
                    r.Offset(, 40) = "na"
                End If
            Next
        End With
    End With
End Sub

Текущий код генерирует результаты во второй строке и после 40-го столбца, и код работает со всеми значениями до 40-го столбца.

Мне нужно, чтобы код работал с данными между A15:N100 (исходные ячейки) и выводил результаты в AO15:BB100 (целевые ячейки).Так что значения между ними не будут затронуты кодом.

Как мне этого добиться, пожалуйста?Могу ли я получить небольшую помощь?Большое спасибо!

1 Ответ

0 голосов
/ 24 июня 2019

Вот ответ.

Sub mainx()
    Dim r As Range, c As Range


    With Range("A15:N100")
        For Each r In .Cells
            Set c = .Find(r.Value, r, , 1, , , 2)
            If (c.Address <> r.Address) Then
                If c.Row > r.Row Then
                    r.Offset(, 40) = c.Row - r.Row - 1
                Else
                    Do
                        Set c = .FindNext(c)
                    Loop While c.Row = r.Row And c.Address <> r.Address
                    If c.Row > r.Row Then
                        r.Offset(, 40) = c.Row - r.Row - 1
                    Else
                        r.Offset(, 40) = "na"
                    End If
                End If
            Else
                r.Offset(, 40) = "na"
            End If
        Next
    End With


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