Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
C1,C10,C12,C2,C21,C3,C10等の並び替え 他
投稿日時: 24/07/20 16:45:28
投稿者: えっくん

お世話になります。
EXCELに下記のように文字が並んでいます。
 
C1
C10
C11
C13
C2
C20
C21
C24
C3
C34
C5
 
これを最終的にC1,C2,C3,C5,C10,C11,C13,C20,C21,C24,C34の順番にしたいのです。
また接頭語のCは1つの列では同じ文字ですが異なる場合もあります。
 
流れとしては、
1)接頭語を外し、数字(中身は文字列)にする。
 接頭語は都度変わるので、変数としてあるセルに入力して置き、そのセルの文字を抜く。
2)文字列に*1を掛ける事で数値とする。
3)並び替え列=数値化列の数式で一旦数字を置いて、並び替えの列のみ数字で並び替え
4)並び替えの数値の前に接頭語を追加
で良いと思うのですが、
 
a)入力セルから接頭語を抜いて文字列を作る式がわかりません。
抜く文字がCだったり、ICだったりと文字数も異なります。
どのような数式になるのでしょうか。
 
数値化は*1、並ぶ替えのやり方はわかります。
 
b)並び替え後の数値に接頭語をつけるやり方がわかりません。
接頭語がICの場合は、="IC"&前列セルで可能ですが、接頭語対応セル(下記ではCのセル)
に記載している文字列を貼り付ける数式がわかりません。
 
接頭語のセル位置はB1セルと仮定してどのような式になるのか教えて頂きたいです。
 
また、この方式以外に簡単な方法はあるのでしょうか。
宜しくお願いします。
 
 
 
接頭語    C            
                
入力 文字列 数値化 並替 接頭語追加
C1 1 1 1 C1
C10 10 10 2 C2
C11 11 11 3 C3
C13 13 13 5 C5
C2 2 2 10 C10
C20 20 20 11 C11
C21 21 21 13 C13
C24 24 24 20 C20
C3 3 3 21 C21
C34 34 34 24 C24
C5 5 5 34 C34
 
すみません、どうしても文字の並びを綺麗にすることができませんでした。

回答
投稿日時: 24/07/20 20:28:07
投稿者: 半平太

C2セル =B1&SORT(SUBSTITUTE(A2:A12,B1,"")*1)
  

<結果図>
行  _A_  _B_  _C_
 1       C       
 2  C1        C1 
 3  C10       C2 
 4  C11       C3 
 5  C13       C5 
 6  C2        C10
 7  C20       C11
 8  C21       C13
 9  C24       C20
10  C3        C21
11  C34       C24
12  C5        C34

  
>また、この方式以外に簡単な方法はあるのでしょうか?
実際のデータ状況によりますね。
 本当に接頭語は1種類で統一されているのか。
 データ列に空白セルは皆無か。
 データの最終行は固定なのか、変動するのか。
 あとホントにMicrosoft 365なのか(後になって否定されるケースが散見される)

回答
投稿日時: 24/07/20 21:10:55
投稿者: んなっと

一発で並べるならこんなのも。
=SORTBY(A1:A50&"",BYROW(A1:A50,LAMBDA(r,LOOKUP(10^15,1*RIGHT(r,SEQUENCE(15))))))
 
ただし接頭語が1Eのような"数字+E"の場合は失敗。

回答
投稿日時: 24/07/20 23:21:17
投稿者: Mike

参考までに、
  A   B   C   D    E
1 入力 文字列 数値化 並替 数値の書式化  
2 C1  1      1  1      C1
3 C10 10     10  2      C2
4 C11 11     11  3      C3
5 C13 13     13  5      C5
6 C2  2      2  10     C10
7 C20 20     20  11     C11
8 C21 21     21  13     C13
9 C24 24     24  20     C20
10 C3  3      3  21     C21
11 C34 34     34  24     C24
12 C5  5      5  34     C34
 
C列の書式を、
G/標準
から
"C"G/標準
に変更した後で[昇順]に[並べ替え]た結果が E列 で〜すッ!

回答
投稿日時: 24/07/21 17:11:52
投稿者: んなっと

間違えたので修正。
同じ列であれば接頭語が不変ということなので、こんなのも。
=SORTBY(A1:A50&"",1*REPLACE(A1:A50,1,XMATCH(0,0*MID(A1,SEQUENCE(LEN(A1)),1))-1,))

投稿日時: 24/07/22 09:00:11
投稿者: えっくん

皆さん ご教示ありがとうございます。
 
●半平太さんへ
ありがとうございました。
>本当に接頭語は1種類で統一されているのか。
はい 列単位では統一されています。
>データ列に空白セルは皆無か。
はい ありません
>データの最終行は固定なのか、変動するのか。
変動します。条件範囲を広げておこうかと思っています。
>あとホントにMicrosoft 365なのか(後になって否定されるケースが散見される)
はい 365です。
 
●んなっとさんへ
ありがとうございました。
 
●Mikeさんへ
ありがとうございました。
「"C"G/標準」これは目からうろこでした。
 
[/b]