Вы можете прочитать диапазон в массив, зациклить массив и объединить подходящие строки в строку. Я использую тот факт, что вы начинаете со строки 2, и что я использую массив на основе 1, чтобы определить строку, т. Е. Я добавляю 1 к значению i, которое является индексом в массиве, где указывается квалифицирующее значение.
Вы также можете использовать
required = required & "," & i + ws.Range("A2:BT72").Row - LBound(arr)
VBA:
Option Explicit
Public Sub test()
Dim criteria1 As Single, criteria2 As Single, required As String
Dim arr(), ws As Worksheet, setColumn As Long, i As Long
Set ws = ThisWorkbook.Worksheets("X")
setColumn = 24
arr = Application.Transpose(ws.Range("A2:BT72").Columns(setColumn).Value)
criteria1 = ws.Range("P111").Value
criteria2 = ws.Range("Q111").Value
For i = LBound(arr) To UBound(arr)
If arr(i) < criteria1 And arr(i) > criteria2 Then
required = required & "," & i + 1
End If
Next
required = Replace$(required, ",", vbNullString, 1, 1)
Debug.Print required
End Sub