[[20211123181205]] 『セル内の数値の並べ替え』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の数値の並べ替え』(初心者)

1,33,2,11,19

とセル内にあります。
1,2,11,19,33

と数字を小さい順にカンマとセル内で並び変えたいです。
よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


数式での回答希望でしょうか

(マナ) 2021/11/23(火) 18:27


はい数式での回答希望です。
説明不足で申し訳ございません
(初心者) 2021/11/23(火) 18:28

そうですか。バージョンを示したほうがよいですよ。

ただ、わたしには無理なので
回答がつくまでのつなぎで
ユーザー定義関数(案)です。

 A1: 1,33,2,11,19
 B1; =NumSort(A1)

 Function NumSort(s As String)
    Dim a As Object
    Dim e

    Set a = CreateObject("system.collections.arraylist")
    For Each e In Split(s, ",")
        a.Add CLng(e)
    Next
    a.Sort
    s = Join(a.toarray, ", ")

    NumSort = s

 End Function

(マナ) 2021/11/23(火) 18:42


 EXCELのバージョンを書いてくれ。
 バージョンによって使える関数に違いがあるので。
(ねむねむ) 2021/11/24(水) 09:03

 あと、作業セルを使っても構わないだろうか?
(ねむねむ) 2021/11/24(水) 09:03

すいません。
office 365になります。 こちらでよろしいでしょうか?

作業セルを使っても構わないだろうか?→出来るのであれば、構いません。

よろしくお願いします。
(初心者) 2021/11/24(水) 15:51


 365であれば
 =TEXTJOIN(",",,SMALL(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",100)),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))*100-99,100))*1,ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))))
 で、できないだろうか?
 現在365で確認できないためできなかったらすまない。
(ねむねむ) 2021/11/24(水) 15:56

 念のため。
 上記式でうまくいかなかった場合、式の入力時にShiftキーとCtrlキーを押しながらEnterキーで式を確定
 (確定時に式が{}で囲まれればOK)も試してみてくれ。
(ねむねむ) 2021/11/24(水) 16:11

 365で確認できた。
 Shift+Ctrl+Enterなしで並べ替えられた。
(ねむねむ) 2021/11/24(水) 21:31

ねむねむ様

ご返事遅くなり誠に申し訳ございません。
思い通りにできました。
誠にありがとうございました。
(初心者) 2021/12/11(土) 19:05


 ねむねむさんの式を参考に、SORT関数とSEQUENCE関数を使って作成してみました。

 =TEXTJOIN(",",,SORT(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",100)),SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1,,1,100),100))*1))

 文字列を分割する部分はすごいですね。私にはとても思いつかないです。
(hatena) 2021/12/11(土) 22:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.