Сортировка в Excel по нескольким столбцам с помощью Powershell
Я сортирую электронную таблицу Excel, используя powershell. Я получаю одинаковые результаты, открываю ли я существующую таблицу или создаю ее на лету.
Следующий код для сортировки всего листа в столбце A работает нормально.
$xl = New-Object -ComObject excel.application
$xl.Visible = $True
$xlwb = $xl.Workbooks.Open("E:\test.xlsx",1)
$xlws = $xlwb.Worksheets.Item("Sheet1")
$xlws.Activate()
$last = $xlws.UsedRange.SpecialCells(11).Address($False,$False)
$range1 = $xlws.Range("A1")
$range2 = $xlws.Range("A1:$last")
$range2.Sort($range1,1)
$xlwb.Save()
$xl.Quit()
Сортировка по нескольким столбцам (например, А и В), исходя из моих исследований, кажется, что принятая мудрость заключается в следующем: Когда я делаю это, я не получаю ошибок, но столбцы не сортируются.
$xlSortOnValues = 0
$xlPinYin = 1
$xlTopToBottom = 1
$xlAscending = 1
$xlDescending = 2
$xlNo = 2
$xlYes = 1
$xl = New-Object -ComObject excel.application
$xl.Visible = $True
$xlwb = $xl.Workbooks.Open("E:\test.xlsx",1)
$xlws = $xlwb.Worksheets.Item("Sheet1")
$xlws.Activate()
$last = $xlws.UsedRange.SpecialCells(11).Address($False,$False)
$range1 = $xlws.Range("A1")
$range2 = $xlws.Range("B1")
$range3 = $xlws.Range("A1:$last")
$xlws.Sort.SortFields.Clear()
$xlws.Sort.Header = $xlNo
$xlws.Sort.Orientation = $xlTopToBottom
$xlws.Sort.SortFields.Add($range1, $xlSortOnValues, $xlAscending, $xlPinYin)
$xlws.Sort.SortFields.Add($range2, $xlSortOnValues, $xlAscending, $xlPinYin)
$xlws.Sort.SetRange($range3)
$xlws.Sort.Apply
$xlwb.Save()
$xl.Quit()
Что я делаю неправильно?