Note: The other languages of the website are Google-translated. Back to English

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)))

doc-sort-numbers-in-cells-1

2. 次に、 Ctrl + Shift + Enter キーを一緒に押してから、この数式を適用する範囲まで塗りつぶしハンドルをドラッグすると、数値が小さいものから大きいものへと並べ替えられます。 スクリーンショットを参照してください:

doc-sort-numbers-in-cells-1

注意:

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) データの横の空白のセルに、スクリーンショットを参照してください。

doc-sort-numbers-in-cells-1

4。 次に、この数式を含めるセルに塗りつぶしハンドルをドラッグすると、セル内のすべての数値が次のスクリーンショットのように昇順で並べ替えられます。

doc-sort-numbers-in-cells-1

注意:番号を降順で並べ替える場合は、次の式を入力してください = sortnumsincell(A1,1)。


矢印青い右バブル VBAコードを使用してセル内でコンマで区切られた数値を並べ替える

次のスクリーンショットのように、数字がコンマ、セミコロン、ピリオドなどの特定の文字で区切られている場合、セルでそれらをどのように並べ替えることができますか? ここで、それらを並べ替えるためのVBAコードを紹介します。

doc-sort-numbers-in-cells-1

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 キーを押してこのコードを実行し、ポップアウトされたプロンプトボックスに番号が含まれているセルを選択します。スクリーンショットを参照してください。

doc-sort-numbers-in-cells-1

4。 そして、 OK、セル内のすべての数値は、元の範囲で昇順で並べ替えられています。

注意:上記のコードでは、必要に応じてコンマ「、」を他の任意の文字に変更できます。 そして、このコードはデータを昇順でのみソートできます。


関連記事:

Excelでハイフンを使用して数値を並べ替える方法は?

Excelで最も頻度の高い値でデータを並べ替える方法?

Excelでドメイン別にメールアドレスを並べ替える方法は?

Excelで行を並べ替えて空白のセルを一番上に配置するにはどうすればよいですか?


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
コメントを並べ替える
コメント (13)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
先生、最初に複製のデータを小さいか大きいかにかかわらず並べ替えるのを手伝っていただけませんか。例1211 ---> 1112 9495 ---> 9945 7379--->7739ご協力いただきありがとうございます
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はこのUDFがどのように、 = sortnumsincell(A1,1)、のように、より一般的に変更できます = sortnumsincell(A1、 ""、 "" ,, 1) ここで、最初の引数は、 A1、はターゲットセル、XNUMX番目の引数、""は、任意の文字、スペース、または何も取らない区切り文字であり、XNUMX番目の引数は ""、異なるまたは同じ区切り文字、およびXNUMX番目の引数、 1 または 0、昇順または降順の並べ替えを示します。結果の文字列はXNUMXつのセル内に正しく並べ替えられて表示され、区切り文字のデフォルトは、第XNUMX項で指定されていない限り元の文字列と同じです。 文字列と数値の両方で機能するようにしたいのですが、alt-enterを使用して手動で入力する場合のように、XNUMX番目またはXNUMX番目の引数が改行である場合があります。 あなたがそれをすることができれば、あなたは今月の私のヒーローになるでしょう。 私は試みましたが、惨めに失敗しました。 ありがとうございました。
このコメントは、サイトのモデレーターによって最小化されました
並べ替えるスペースで区切られた数値の一連のセルがあります。 例:8 4 5 1分類したい6 3助けていただければ幸いです
このコメントは、サイトのモデレーターによって最小化されました
50000つのセルから同時により多くの数値を並べ替える方法はありますか? たとえば、A1234、A1235などの500の資産番号のリストがあり、500の特定の番号を取得する必要があり、変更を加えて保存するには、一度にXNUMXを取得する必要があります。ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
84-12-74-26-98を並べ替える必要があります12-26-74-84-98または98-84-74-26-12ありがとうございます
このコメントは、サイトのモデレーターによって最小化されました
CInt(Arr(xMin))> CInt(Arr(j))であり、機能する場合
このコメントは、サイトのモデレーターによって最小化されました
さまざまな行から合計14000から20000を並べ替えたい例:-2000,1500 XNUMX行で、そのようにすべての行の量を並べ替えます
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、VBAコードは正しく出力されていないようです。たとえば、13,50,47,7,39の前と13-39-47-50-7の後です。 なぜ何かアイデアはありますか?
このコメントは、サイトのモデレーターによって最小化されました
hOLA、MI PROBLEMA ES QUE TENGOEXEL2019ENESPAÑOLCOMOSERIALAFORMULA?
このコメントは、サイトのモデレーターによって最小化されました
Excelのセル内のAZテキストを並べ替える方法は?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはVBAコードでセル内のコンマで区切られた数字を並べ替えてくれてありがとう
ちょうど私はコードでXNUMXつの問題に直面しました。
コードは65桁の数字を検出できません。 たとえば、コードを適用した後の番号(93、53、72、64、85、103、48、77、81、54、103)、新しい順序(48、53、54、64、65、72、77、 81、85、93、XNUMX)
問題の解決策はありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、オマー、以下のコードがあなたを助けることができるかもしれません、試してみてください:
パブリック関数CellSort(r As Range)As String
Dim bry()As Long、L As Long、U As Long
ch = r(1).Text
ary = Split(ch、 "、")
L = LBound(ary)
U = UBound(ary)
ReDim bry(L To U)
i = LBound(ary)からUBound(ary)へ
bry(i)= CLng(ary(i))
私は次の
BubbleSort(bry)を呼び出す
i = LBound(bry)からUBound(bry)へ
ary(i)= CStr(bry(i))
私は次の
CellSort = Join(ary、 "、")
エンド機能

サブバブルソート(arr)
バリアントとしての薄暗いstrTemp
ディム・アイ・アス・ロング
Dim j As Long
Dim lngMin As Long
Dim lngMax As Long
lngMin = LBound(arr)
lngMax = UBound(arr)
i=lngMinからlngMax-1の場合
j = i+1からlngMaxの場合
arr(i)> arr(j)の場合
strTemp = arr(i)
arr(i)= arr(j)
arr(j)= strTemp
終了する場合
次のj
私は次の
Subの終了上記のコードを挿入した後、次の式を適用してください。 = CellSort(A1)。そして、あなたはあなたが必要とする結果を得るでしょう。
このコメントは、サイトのモデレーターによって最小化されました
Hola、se pueden ordenar letras en una sola celda porordenalfabético? Yo uso excelparaMac。 グラシアス
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所