-(IBAction)SegmentbtnCLK:(id)sender
{ [self sortArryofDictionary];
[self.objtable reloadData];}
-(void)sortArryofDictionary
{ NSSortDescriptor *sorter;
switch (sortcontrol.selectedSegmentIndex)
{case 0:
sorter=[[NSSortDescriptor alloc]initWithKey:@"Name" ascending:YES];
break;
case 1:
sorter=[[NSSortDescriptor alloc]initWithKey:@"Age" ascending:YES];
default:
break; }
NSArray *sortdiscriptor=[[NSArray alloc]initWithObjects:sorter, nil];
[arr sortUsingDescriptors:sortdiscriptor];
}
Range.Rows
и Range.Columns
возвращают по существу тот же диапазон, за исключением того факта, что новый диапазон имеет флаг, который указывает, что он представляет строки или столбцы . Это необходимо для некоторых свойств Excel, таких как Range.Count и Range.Hidden, и для некоторых методов, таких как Range.AutoFit ()
:
Range.Rows.Count
возвращает количество строк in Range. Range.Columns.Count
возвращает количество столбцов в диапазоне. Range.Rows.AutoFit ()
автоматически выравнивает строки в диапазоне. Range.Columns.AutoFit ( )
автоматически подбирает столбцы в Range. Вы можете обнаружить, что Range.EntireRow
и Range.EntireColumn
полезны, хотя они все еще не совсем то, что вы ищете . Они возвращают все возможные столбцы для CompleteRow
и все возможные строки для CompleteColumn
для представленного диапазона.
Я знаю это, потому что SpreadsheetGear для .NET поставляется с. NET API, которые очень похожи на API Excel. SpreadsheetGear API поставляется с несколькими строго типизированными перегрузками для индексатора IRange, включая ту, которую вы, вероятно, хотели бы иметь в Excel:
IRange this [int row1, int column1, int row2, int column2];
Отказ от ответственности: я владею SpreadsheetGear LLC
Два ваших примера - единственное, что я когда-либо использовал для свойств Rows
и Columns
, но теоретически вы могли бы сделать с ними все, что можно сделать с помощью объекта Range
.
Тип возвращаемого значения этих свойств сам по себе является Range
, поэтому вы можете делать такие вещи, как:
Dim myRange as Range
Set myRange = Sheet1.Range(Cells(2,2),Cells(8,8))
myRange.Rows(3).Select
Что выберет третью строку в myRange
(Ячейки B4: H4 на Листе 1).
update: Чтобы делать то, что вы хотите, вы можете использовать:
Dim interestingRows as Range
Set interestingRows = Sheet1.Range(startRow & ":" & endRow)
update # 2: Или, чтобы получить подмножество строк из другого диапазона:
Dim someRange As Range
Dim interestingRows As Range
Set myRange = Sheet1.Range(Cells(2, 2), Cells(8, 8))
startRow = 3
endRow = 6
Set interestingRows = Range(myRange.Rows(startRow), myRange.Rows(endRow))
Я не уверен, но думаю, что второй параметр - отвлекающий маневр.
И .Rows, и .Columns принимают два необязательных параметра: RowIndex и ColumnIndex. Попробуйте использовать ColumnIndex, например Rows (ColumnIndex: = 2)
, генерирует ошибку для как .Rows, так и .Columns .
По моему мнению, это в некотором смысле унаследовано от Cells (RowIndex, ColumnIndex)
Свойство, но подходит только первый параметр.
Возможно, это немного мешанина, но следующий код делает то, что вы, кажется, хотите делать:
Set rng = wks.Range(wks.Rows(iStartRow), wks.Rows(iEndRow)).Rows