[[20030620211846]] 『セル内で並び替え』(やよい) ページの最後に飛ぶ

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

 

『セル内で並び替え』(やよい)

教えてください。行単位、列単位で並び替えは可能ですが、セル内の数字を並び替えることは可能なのでしょうか?
Ex.(セルC1)=(2354) → (セルC1)=(5432)


 むちゃいわないでください。
 VBAくまなければできません。
 (kazu)

 セル内で数値を組替える場合の ルールを
 説明できる範囲説明ください
 何らかの法則(約束事)が有るのであれば
 無理かもしれませんが 考えられるかもしれませんよ
 現状の説明では 無理っぽいですね
 それとも ただ入力があれば ランダムな数値を返すだけであれば
 行けそうですが?

説明不足(下手)のようでした・・・。例えば、並びかえたいセル内の数をMid関数で数だけ抜き出し、更にそこにソートコマンドをかけて自動で別のセルに移し変えるようなものができるかなといったものでもよいのです。やってみたんですがもう一つうまくいかなったもので。(やよい)

   Function Isrt(Targ As Variant) As String
   Dim I, J As Integer, Targ2, T As String
   Targ2 = Left(Targ, 1)
   For I = 2 To Len(Targ)
     T = Mid(Targ, I, 1)
     For J = 1 To Len(Targ2)
       If T > Mid(Targ2, J, 1) Then
         Targ2 = Left(Targ2, J - 1) & T & Mid(Targ2, J, 33000)
         T = ""
         Exit For
       End If
     Next
     If T <> "" Then
       Targ2 = Targ2 & T
     End If
   Next
   Isrt = Targ2
   End Function


 確認する時間がなくてアイデアだけですが、
 1)桁数を決める
 2)作業セルを使う
 3)並べ替え結果を他のセルに表示する
 なら、関数でできそうな気がします。

 元の数字が4桁固定と仮定し、以下の表を考えます。
     C           D                      E                       F                      G
 1              1                      2                       3                      4
 2  2354 =VALUE(MID($C$2,D1,1)) =VALUE(MID($C$2,E1,1))  =VALUE(MID($C$2,F1,1)) =VALUE(MID($C$2,G1,1))

 このとき、
 =LARGE($D$2:$G$2,1)&LARGE($D$2:$G$2,2)&LARGE($D$2:$G$2,3)&LARGE($D$2:$G$2,4)     
 とすれば、ソートされた結果が出ると思います。
 桁数が不定の時はこれに加え、エラー判定判定などの配慮が必要になります。
 方針としていかがでしょうか?
 あと、結果のセルを、マクロでコピー&形式を指定して貼り付けで、C1セルに
 値貼り付けするという手もあると思います。
 (ちゅうねん)

コメント返信:

[ 一覧(最新更新順) ]


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