L oop и выберите - PullRequest
       15

L oop и выберите

0 голосов
/ 07 мая 2020

В настоящее время я пытаюсь выяснить, как l oop для переменной в столбце A, и я хочу выбрать диапазон от этой ячейки до последней строки с двумя другими столбцами B и C (последняя строка имеет ту же переменную).

Я пробовал

Sub TretourTdepart
    Dim LastRow As Long
    Dim sh As Worksheet
    Dim X As Long

    Set sh = Sheets("data_(6)") 'Define sheet to copy from

    LastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row to copy from

    For X = 2 To LastRow
        If sh.Cells(X, 1) = "variable" Then
            Set Rng = Range(sh.Cells(LastRow, 1), sh.Cells(X, 1))
            Rng.Select
          End If
      Next
End Sub

, но приведенный выше сценарий не выбирает диапазон ячеек, как я хотел.

1 Ответ

1 голос
/ 07 мая 2020

Вам действительно не нужно l oop, вы можете использовать функцию сопоставления, если ваш лист гарантированно содержит запись «переменная»:

Sub TretourTdepart()

Dim LastRow As Long
Dim VariRow As Long
Dim sh As Worksheet
Dim rng As Range

Set sh = Sheets("data_(6)") 'Define sheet to copy from

LastRow = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row 'Find last row to copy from
VariRow = Application.WorksheetFunction.Match("variable", sh.Range("A:A"), 0)

Set rng = sh.Range(Cells(VariRow, 1), Cells(LastRow, 3))

End Sub

Если запись «переменная» не гарантируется, что вы там, тогда вы можете обернуть это проверкой if:

edit Я вижу в комментарии, что ваша «переменная» на самом деле является строкой, поэтому установите это как фактическое переменная MyVariable

Sub TretourTdepart()

Dim LastRow As Long
Dim VariRow As Long
Dim sh As Worksheet
Dim rng As Range
Dim MyVariable As String: MyVariable = "ElectricityMeter"

Set sh = Sheets("data_(6)") 'Define sheet to copy from

LastRow = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row 

If Application.WorksheetFunction.CountIf(sh.Range("A:A"), MyVariable) > 0 Then
    VariRow = Application.WorksheetFunction.Match(MyVariable, sh.Range("A:A"), 0)
    Set rng = sh.Range(Cells(VariRow, 1), Cells(LastRow, 3))
End If

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