Похоже, что вы хотите найти правый наиболее часто используемый столбец в строках 2 до конца ваших данных.Чтобы сделать это, вам нужно перебрать все строки данных, отслеживая, какой из столбцов равен Max(LastUsedColumn)
.К сожалению, такой встроенной функции не существует, но вы могли бы написать что-то вроде этого:
Public Function MaxUsedColumnInRow(ByVal SheetToCheck As Worksheet, ByVal RowToCheck As Long) As Long
MaxUsedColumnInRow = SheetToCheck.Cells(RowToCheck, Columns.count).End(xlToLeft).Column
End Function
Теперь, когда у вас есть изящная функция для определения максимального используемого столбца в строке, вы можете вызватьэто в цикле, как это:
Public Function MaxUsedColumnInRange(ByVal SheetToCheck As Worksheet, ByVal StartRow As Long, ByVal EndRow As Long) As Long
Dim curRow As Long
For curRow = StartRow To EndRow
Dim CurCol As Long
CurCol = MaxUsedColumnInRow(SheetToCheck, curRow)
Dim maxCol As Long
If CurCol > maxCol Then
maxCol = CurCol
End If
Next
End Function
И, наконец, проведите быстрый тест, заменив «Лист1» на имя листа, который вы специально проверяете:
Public Sub TestIt()
MsgBox "Max Used column on sheet1 = " & CStr(MaxUsedColumnInRange("Sheet1", 2, 50))
End Sub
Конечно, вы захотите определить максимальный ряд на вашем листе и передать его в функцию MaxUsedColumnInRange
- если только у вас не окажется ровно 50 строк данных, пример теста Sub
вероятно, вы не получите желаемый результат.
В качестве дополнительного преимущества теперь у вас есть удобная функция, которую вы можете вызвать в будущем, чтобы определить максимальный столбец в строке, чтобы вам не приходилось запоминать правильный способ сделать это.(Я обычно забываю, поэтому мне нужно поискать его или использовать изящную вспомогательную функцию, чтобы «запомнить» меня.)