プロが教える店舗&オフィスのセキュリティ対策術

昇順に並べ替えると「1229」は先頭に来ます。
「1229」を「749」の後ろに入れられないでしょうか?
「A11」「A12」も「A9」の後ろに並ばないでしょうか?
本来データが数百種あるので、エクスプローラと同じように並ばないと取り扱いにくいです。
エクスプローラでは、そのように並んでいます。

「Excel|並べ替え」の質問画像

質問者からの補足コメント

  • 回答ありがとうございます。
    このようになります。

    「Excel|並べ替え」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2021/08/10 14:03
  • 回答ありがとうございます。
    昇順すると「A」がバラけますね。

    「Excel|並べ替え」の補足画像2
    No.3の回答に寄せられた補足コメントです。 補足日時:2021/08/10 14:48
  • 回答ありがとうございます。
    昇順すると、「A」は、11、12、5、8、9 になります。

    「Excel|並べ替え」の補足画像3
    No.4の回答に寄せられた補足コメントです。 補足日時:2021/08/10 16:58
  • 遺跡発掘調査会社が、掘り出した遺物図(破片)に、番号(記号)を振っています。
    私は末端で、“遺物をトレースする” 在宅ワークをしており、上層部に軽く質問できる立場にありません。
    まだ八十数個しか仕事が来ていないので、これからどんな記号が出てくるか不明です。
    Windows のエクスプローラでできる並べ替えが、同マイクロソフトの Excel で簡単にできないのが不思議です。

      補足日時:2021/08/10 17:41
  • 回答ありがとうございます。
    エクスプローラ を Excel の並び順に変更してしまい、目的が逆になってしまうので、せっかくですが趣旨が違います。

    No.8の回答に寄せられた補足コメントです。 補足日時:2021/08/11 09:03
gooドクター

A 回答 (11件中1~10件)

No.6です。


添付画像を漏らしていました。
画像①はA列をもとに昇順に並べた状態です。
この状態でB1に
=IF(ISNUMBER(VALUE(LEFT(A1,1))),RIGHT("0000000000"&A1,10),LEFT(A1,1)&RIGHT("000000000"&MID(A1,2,LEN(A1)-1),9))
を記述し、下方向へコピーしています。
画像➁は数式記述後に、B列をもとに昇順に並べた変えた状態です。
ご質問者の例示には登場しない「AAから始まる名前」「Bから始まる名前」も加えてみましたが、一応ご希望の順番に並んでいるのではないかと思います。
「Excel|並べ替え」の回答画像11
    • good
    • 3
この回答へのお礼

今のところ過不足なく運用に応えていると思います。
回答ありがとうございます。

お礼日時:2021/08/18 16:50

No.8 の回答者です。



おはようございます。 補足が必要でしたね。
記事を読んでいくと、幾つか解決方法が載っており、もっと先にある内容で、Excelから離れるのですが、LibreOfficeという「自由な」オフィススイートがあるのを御存知でしょうか。 からが、私からの回答になります。

そこで、LibreOfficeで開いて、データを並べ替えしてから保存。
それを、Excelで開くという手順の紹介です。

https://detail.chiebukuro.yahoo.co.jp/qa/questio …
    • good
    • 0

こんにちは


>Windows のエクスプローラでできる並べ替えが、同マイクロソフトの Excel で簡単にできないのが不思議です。

私も同感です。

VBAはお呼びでないと思いますが、
Windows のエクスプローラで使用しているSHLWAPI.DLLを呼び出して実行する事が出来ます。

標準モジュールに
A列に ご質問のように文字列がある場合、B列に並び替えた文字列を出力します。
対象のシートを表示してからSampleを実行してください。

Declare PtrSafe Function StrCmpLogicalW Lib "SHLWAPI.DLL" _
(ByVal lpStr1 As String, ByVal lpStr2 As String) As Long

Sub Sample()
Dim Ary() As String, tmp As String
Dim Rng As Range, r As Range
Dim i As Long, j As Long
Set Rng = Range("A1", Cells(Rows.Count, 1).End(xlUp))
ReDim Ary(Rng.Count - 1)
For Each r In Rng
Ary(i) = r.Value
i = i + 1
Next
For i = LBound(Ary) To UBound(Ary)
For j = i To UBound(Ary)
If StrCmpLogicalW(StrConv(Ary(i), vbUnicode), StrConv(Ary(j), vbUnicode)) > 0 Then
tmp = Ary(i)
Ary(i) = Ary(j)
Ary(j) = tmp
End If
Next j
Next i
For i = 0 To UBound(Ary)
Cells(1 + i, 2) = Ary(i)
Next
End Sub

元の文字列配列をセル範囲としていますが、
フォルダ内のファイル名を取得して昇順にする時などに使用します。
    • good
    • 0

こんにちは。

 検索で調べてみました。

VBAで作るのも大変そうですし、全体が見えないので、何度も修正するも
 面倒になりそうなので。
過去に、似た様な質問があったので、参考になればと思います。

https://detail.chiebukuro.yahoo.co.jp/qa/questio …
この回答への補足あり
    • good
    • 3

解決方法を見つけましたよ。



「sakuraテキストエディタ」はインストールしてますか?
インストールできますか?

このツールで実現可能ですが、これが無理なら難しいですね。
    • good
    • 0

くんこばさんが、変換用の作業列を用意して、その作業列をもとにして並べ替える方法をお示しになっています。



No.2の回答では#VALUE!のエラーが出るとご質問者がコメントされました。

No.3の回答で再度改善策をお示しになっておられますが、この数式だと、アルファベットのつく名前と数値のみの名前が混在した順番になります。

ご質問者は
>「1229」を「749」の後ろ、「A11」「A12」も「A9」の後ろ
とおっしゃっているだけで、数字のみ名前とアルファベットがつく名前がそれぞれの集団になるようにするのかどうかは指示がありませんのでこれでOKなのかも知れません。

もし、数字のみの名前とアルファベットがつく名前が、それぞれの集団になるようにするのだとすると、元データがA1からA列にあるとして、B1に

=IF(ISNUMBER(VALUE(LEFT(A1,1))),RIGHT("0000000000"&A1,10),LEFT(A1,1)&RIGHT("000000000"&MID(A1,2,LEN(A1)-1),9))

という数式を記述して下方向にコピーし、これをもとに昇順に並べ替える方法はいかがてしょうか?
    • good
    • 1

こんにちは。

 No.4の者です。

回答ではありませんが、確認になります。
例ですとA〇〇.jpgとありますが、実際には、B〇〇.jpgとかC〇〇.jpgとかもあるのでしょうか?
Excelの関数だけでは、もしかしたら難しいかも知れません。
(私の知識不足かもしれませんが。)

実施の文字がどの様なものがあるとかわかると、回答がし易いかも知れません。

Excelの関数ではなく、VBAになるかも知れません。
    • good
    • 0

こんにちは。



何列か使用しますが、下記は如何でしょうか?

B列:=LEFT(A1,FIND(".",A1)-1)
C列:=IF(ISERROR(B1*1),B1,B1*1)
C列をコピーして、D列に値で貼り付け その後、D列を並べ替える。
この回答への補足あり
    • good
    • 0

これならどうでしょう?



=RIGHT("0000000000"&A1,10)
この回答への補足あり
    • good
    • 0

=INT(LEFT(A1,FIND(".",A1)-1))


数字を取り出して、数値に変換して、並べ替え。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング