
セル内の数字を並べ替えるために使用できる Excel 関数または数式があるかどうかを知りたいです。
たとえば、A1 の値が で6193254807
、B1 の数式でパラメータが昇順で並べ替えられるように設定されている場合、B1 は0123456789
(先頭のゼロを含む)に等しくなります。もちろん、パラメータが降順で並べ替えられるように設定されている場合、B1 は に等しくなります9876543210
。
VBScript やマクロ、あるいは同様の特殊なものを使用せずに、これを実行する方法はあるでしょうか?
答え1
これは配列数式で可能です。元の数値がA1空白のセルにffのいずれかを入力し、Ctrl+ Shift+でコミットしますEnter。
上昇:
=REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))&
SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
LARGE(INT(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))
降順:
=SUM(POWER(10,ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))-1)*
SMALL(INT(MID(SUBSTITUTE(A1,0,""),ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,"")))),1)),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A1,0,""))))))
&REPT(0,LEN(A1)-LEN(SUBSTITUTE(A1,0,"")))
例:
各式はんセル内の 1 番目に大きいまたは小さい数字を抽出し、その「順位」に従って 10 の累乗で乗算し (つまり、新しい位の値を割り当てます)、それらを合計して「並べ替えられた」数字を生成します。たとえば、元の数字が である場合、231
最初の数式の一般的な計算手順は次のようになります。
=sum(1*power(10,2), 2*power(10,1), 3*power(10,0))
=sum(100,20,3)
=123
REPT()
数式のセグメントは先頭または末尾のゼロを処理します。
結果はテキスト形式で表示されますセルに入力できる数字の数には制限があるので、これは良いアイデアだと思いました(読むことをお勧めします)このスーパーユーザーの質問)。
結果を使って計算を行う場合は、0+
数式の先頭に を挿入するだけで、結果を数値に変換できます。