Excelでセル内の数値を並べ替える方法は?
列のリストで数値を並べ替えるのは簡単で一般的ですが、単一のセル内で数値を並べ替えようとしたことはありますか? XNUMXつずつ並べる以外に良い方法はないかもしれません。ここでは、Excelのセル内の数値を並べ替える方法について説明します。
VBAコードを使用してセル内でコンマで区切られた数値を並べ替える
数式を使用してセル内の数値を並べ替える
ワークシートのセル内の数値を並べ替えるには、次の長い式を適用できます。次のようにしてください。
1。 データの横に次の数式を入力してください。この例では、セルC1に入力します。スクリーンショットを参照してください。
=TEXT(SUM(SMALL(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),REPT("0",LEN(A1)))
2. 次に、 Ctrl + Shift + Enter キーを一緒に押してから、この数式を適用する範囲まで塗りつぶしハンドルをドラッグすると、数値が小さいものから大きいものへと並べ替えられます。 スクリーンショットを参照してください:
注意:
1.セル内の数値の桁が15を超える場合、この数式は正しい結果を取得しません。
2.番号を降順で並べ替える場合は、次の式を使用できます。 =TEXT(SUM(LARGE(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),ROW(INDIRECT("1:"&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))))),REPT("0",LEN(A1))).
3.上記の数式で、A1は、並べ替える数値を含むセルを示しています。必要に応じて変更できます。
ユーザー定義関数を使用してセル内の数値を並べ替える
式にはいくつかの制限があるため、次のものを使用できます ユーザー定義関数 15桁より長いセルの数値を並べ替えます。
1。 を押し続けます Alt + F11 キー、そしてそれは開きます Microsoft Visual Basic forApplicationsウィンドウ.
2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.
VBAコード:セル内の数値を並べ替える
Function SortNumsInCell(pNum As String, Optional pOrder As Boolean) As String
'Update 20140717
Dim xOutput As String
For i = 0 To 9
For j = 1 To UBound(VBA.Split(pNum, i))
xOutput = IIf(pOrder, i & xOutput, xOutput & i)
Next
Next
SortNumsInCell = xOutput
End Function
3. 次に、このコードを保存して閉じ、ワークシートに戻って、この数式を入力します = sortnumsincell(A1) データの横の空白のセルに、スクリーンショットを参照してください。
4。 次に、この数式を含めるセルに塗りつぶしハンドルをドラッグすると、セル内のすべての数値が次のスクリーンショットのように昇順で並べ替えられます。
注意:番号を降順で並べ替える場合は、次の式を入力してください = sortnumsincell(A1,1)。
VBAコードを使用してセル内でコンマで区切られた数値を並べ替える
次のスクリーンショットのように、数字がコンマ、セミコロン、ピリオドなどの特定の文字で区切られている場合、セルでそれらをどのように並べ替えることができますか? ここで、それらを並べ替えるためのVBAコードを紹介します。
1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ。
2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュールウィンドウ.
VBAコード:並べ替え番号はセル内でコンマで区切られます
Sub SortNumsInRange()
'Update 20140717
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set objArrayList = CreateObject("System.Collections.ArrayList")
For Each Rng In WorkRng
Arr = VBA.Split(Rng.Value, ",")
For i = 0 To UBound(Arr)
xMin = i
For j = i + 1 To UBound(Arr)
If Arr(xMin) > Arr(j) Then
xMin = j
End If
Next j
If xMin <> i Then
temp = Arr(i)
Arr(i) = Arr(xMin)
Arr(xMin) = temp
End If
Next i
Rng.Value = VBA.Join(Arr, ",")
Next
End Sub
3。 次に、 F5 キーを押してこのコードを実行し、ポップアウトされたプロンプトボックスに番号が含まれているセルを選択します。スクリーンショットを参照してください。
4。 そして、 OK、セル内のすべての数値は、元の範囲で昇順で並べ替えられています。
注意:上記のコードでは、必要に応じてコンマ「、」を他の任意の文字に変更できます。 そして、このコードはデータを昇順でのみソートできます。
関連記事:
Excelで行を並べ替えて空白のセルを一番上に配置するにはどうすればよいですか?
最高のオフィス生産性ツール
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
- 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
- スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
- セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
- [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
- 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
- テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
- スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
- ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
- 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作業をはるかに簡単にします
- Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
- 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!













