3

私は2つのケースを持っています。予備コード:

open Microsoft.Office.Interop.Excel

let xl = ApplicationClass()
xl.Workbooks.OpenText(fileName...)
let wb = xl.Workbooks.Item(1)
let ws = wb.ActiveSheet :?> Worksheet

let rows = string ws.UsedRange.Rows.Count

まず、ソートするために次のことを試みます。

ws.Sort.SortFields.Clear()
ws.Sort.SortFields.Add(xl.Range("A8:A" + rows), XlSortOn.xlSortOnValues, XlSortOrder.xlAscending, XlSortDataOption.xlSortNormal) |> ignore
ws.Sort.SortFields.Add(xl.Range("H8:H" + rows), XlSortOn.xlSortOnValues, XlSortOrder.xlAscending, XlSortDataOption.xlSortNormal) |> ignore
ws.Sort.SetRange(xl.Range("A7:I" + rows))
ws.Sort.Header <- XlYesNoGuess.xlYes
ws.Sort.MatchCase <- false
ws.Sort.Orientation <- XlSortOrientation.xlSortRows
ws.Sort.SortMethod <- XlSortMethod.xlPinYin
ws.Sort.Apply()

これにより、「並べ替え参照が無効です。並べ替えたいデータ内にあり、最初の並べ替えボックスが同じでも空白でもないことを確認してください。」という結果になります。

次に、次のようにして並べ替えを試みます。

ws.Range("A7:I" + rows).Sort(xl.Range("A8:A" + rows), XlSortOrder.xlAscending,
                             xl.Range("H8:H" + rows), "", XlSortOrder.xlAscending,
                             "", XlSortOrder.xlAscending, XlYesNoGuess.xlYes,
                             XlSortOrientation.xlSortRows) |> ignore

これにより、列が再配置されますが、再配置のロジックはわかりません。また、行はソートされていません。

私が間違っていることを教えてください。

4

2 に答える 2

3

最初の並べ替えの試行が機能しない理由がわかりません。しかし、私は2番目のソートに関するドキュメントをチェックしました。名前付きパラメーターを使用し、必要なパラメーターを除くすべてを削除して、次のことを思いつきました。

ws.Range("A8:H" + rows).Sort(Key1=xl.Range("A8:A" + rows), Key2=xl.Range("H8:H" + rows),
                             Orientation=XlSortOrientation.xlSortColumns) |> ignore

デフォルトの方向はxlSortRowsです。私はこれを行の並べ替えと解釈します。これは、手動で並べ替えるときにExcelが行う通常のデフォルトの直感的な並べ替えです。大野。手動で並べ替えるときにExcelが行う通常のデフォルトの直感的な並べ替えが必要な場合は、xlSortColumnsを指定します。

于 2012-10-25T14:22:52.440 に答える
1

AHにある列でテーブルを並べ替えようとしている可能性があるため (プロパティHeaderがXlYesNoGuess.xlYesに設定されているため)、最初の Sort は機能しません。この場合、「上から下に並べ替える」( xlSortColumns ) を使用してのみ並べ替えることができます。

最初に Excel でこれを試して、どのオプションが利用できるかを確認することもできます:
1) 並べ替えを適用する範囲を選択します (たとえば、「A7:I」+ 行
) > [並べ替えとフィルター] タスク ペイン -> [並べ替え
] 3) [レベルの追加]/[レベルの削除] ボタンを使用して、列/行を追加/削除します。
4) 次に、必要なレベルを選択して、[オプション...] ボタンをクリックします。利用可能な「並べ替えオプション」が表示されます。
表の場合、「方向」に使用できるオプションは「上から下に並べ替える」の 1 つだけであることに気付くでしょう。

xlSortColumns - 列ごとに並べ替えます (つまり、行はそれらの列に基づいて並べ替えられます)

xlSortRows - 行による並べ替え (つまり、列はそれらの行に基づいて並べ替えられます)

于 2016-08-25T12:06:12.590 に答える