Допустим, у меня есть следующая примерная таблица
У меня есть цикл for, который проходит через весь ListColumn(2)
(столбец C / 3) и ранжирует «пользователей» в зависимости от того, у кого больше всего яблок (например, у Майкла будет 1, у Роберта 2 и т. д.)
Однако, скажем, я хочу сослаться только на конкретный диапазонтаблица
(например, скажем, Range("C7:C9") <=> ListRows(3,4,5)
)
Как я могу это сделать?
У меня есть следующий код:
Private Sub CommandButton1_Click()
Dim tbl As ListObject: Set tbl = Sheets("Sheet1").ListObjects("Table1")
Dim my_range As Range
For Each my_range In tbl.ListColumns(2).DataBodyRange
' ^ this runs through entire column instead of the specified range I want!
my_range.Offset(0, 1) = WorksheetFunction.Rank(my_range, tbl.ListColumns(2).DataBodyRange)
' ^ again, isntead of entire DataBodyRange we should be rather referencing the specific Range
Next my_range
End Sub
По сути, янеобходимо каким-то образом ограничить саму .DataBodyRange
определенным диапазоном, проблема в том, что .DataBodyRange
определено либо для того, чтобы взять весь столбец / строку или только 1 ячейку из всего ListObject как .DataBodyRange([row index], [column index])
.
Итак,в предполагаемом примере выбора Роберта, Майкла, Лорел ListRows(3, 4, 5)
Ожидаемый результат будет:
Есть предложения, как это сделать?