No.6ベストアンサー
- 回答日時:
こんばんは。
<標準モジュール>
というのは、場所のことです。
Alt キーを押しながら、F11 を押すと、Visual Basic Editor 画面が出てきます。そこで、メニューの[挿入]-[標準モジュール(M)]をクリックしますと、白い画面が現れます。そこに、切り取り線の中のコードを貼り付けます。Web上から直接でも可能です。
後は、同じく、Alt キーを押しながらF11 を押すと、元の画面に戻りますので、
最初に、マウスポインターを、並び替えるをするデータの
左上でも置いてから、
[ツール]-[マクロ]-[マクロ]- SortStringPriority
をクリックすれば、並び替えるはずです。こちらのデータではうまく行っています。
なお、フォーム・ツールのボタンに、このマクロを登録しておけば、メニューから、マクロを呼び出さなくても稼動します。
遅くなって申し訳ありません。
たびたびありがとうございます。
実践してみましたが、A1のデータだけ並び替えられません。
どうしてでしょう?
マウスポインタをデータのどこかに置いて実行しても同じです。
No.5
- 回答日時:
#4 の Wendy02 です。
実害はありませんが、みっともないので、訂正します。
訂正
#For i = 0 To 10 ← ●
# c.Value = Replace(c.Value, Chr(177 + i), i)
# Next i
#Next
下から6行目
For i = 0 To 9
に換えてください。
No.4
- 回答日時:
こんにちは。
Excelの 達人の方たちが、ダメだったとすると、もう、マクロ処理でしかないのかと思います。
>私が試したのは、A、B、C…7、8、9と順に一桁です。
>ソートをかけたいコードは*******-*という形です。
これでは、読み手側の想像の範囲でしかありません。こういうスタイルの表示ですと、解答に結びつかないかもしれません。本来は、データ・サンプルがほしいですね。
まず、今のところ、全部、半角であることを想定しています。そうしないと、かなりややこしくなります。
ともかく、こちらの想像の中で、マクロを作ってみました。マウスポインタを並び替えする列のどこかにおいてから、マクロを実行してください。また、フィールド名(1行目のタイトル)は、必ず、存在するものとして、実行されます。
なお、フォームボタンなどに取り付けると良いかと思います。
'---------------------------------------------------------
'<標準モジュール>
Sub SortStringPriority()
Dim Rng As Range, c As Range, i As Integer
If IsEmpty(ActiveCell) Then Exit Sub
Set Rng = Range(ActiveCell.End(xlUp), _
Cells(65536, ActiveCell.Column).End(xlUp))
Rng.NumberFormatLocal = "@"
Application.ScreenUpdating = False
For Each c In Rng
For i = 0 To 10
c.Value = Replace(c.Value, i, Chr(177 + i))
Next i
Next
Rng.Sort Key1:=Rng.Range("A2"), _
Order1:=xlAscending, _
Header:=xlYes, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
For Each c In Rng
For i = 0 To 10
c.Value = Replace(c.Value, Chr(177 + i), i)
Next i
Next
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------
ご回答ありがとうございます。
返事が遅くなり申し訳ありません。
私の技術が未熟で、エクセルのマクロをいじってみましたがよく分かりませんでした。
この標準モジュールをどこかにコピーすればいいんでしょうか?
No.3
- 回答日時:
>一桁です。
1桁であることを好都合に別列に=IF(CODE(MID(A1,8,1))>64,CODE(MID(A1,8,1)),CODE(MID(A1,8,1))+130)
をつくり、この列とともにソートする。130は90-48+1より大であれば他の数でよい。
コンピュターは文字コードの順に並べます。ソフトがうまく便利に並べているように見えるのは、ソフトが修正ソートキーを別に見えないところで作ってくれているからです。
もっとルール性のない並び順なら、VLOOKUPでも使って、キーを別途
の列に作って、その列でソートすればよい。
表の定義の列を使いたくなければ、少数ならば
=VLOOKUP(A11,{"秋",1;"春",2;"夏",3},2,FALSE)
のような書き方もできます。
ご回答ありがとうございます。
教えていただいたやり方で試してみましたが、できませんでした。
ソートをかけたいコードが、一桁ではなかったからでしょうか…
No.2
- 回答日時:
こんにちは。
maruru01です。多分、ユーザー設定リストでは出来ないと思います。
以下、作業列と名前定義を利用した方法です。
仮にデータがA1~Axxxにあるとします。
データの先頭(A1)をクリックして、メニューの[挿入]→[名前]→[定義]で、
[名前]:適当な名前(仮に「変換1」とします。)
[参照範囲]:「=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A1,"0","あ"),"1","い"),"2","う"),"3","え"),"4","お")」
と設定して[追加]します。
(参照範囲の中の「$A1」はデータの先頭位置(A1)に頭に"$"を付けたものです。データ位置によって適宜修正して下さい。)
さらにもう1つ、
[名前]:適当な名前(仮に「変換2」とします。)
[参照範囲]:「=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(変換1,"5","か"),"6","き"),"7","く"),"8","け"),"9","こ")」
と設定して[OK]します。
そうしたら、どこか適当な列を作業列として、そこに、
=変換2
と入力すると、同一行のデータの中の数字が、
0→あ
1→い
・・・
9→こ
と置換されて表示されますので、下へデータ行分コピーします。
これでデータ列とこの作業列を一緒に、作業列をキーにして並べ替えればOKです。
作業列は非表示にしておいても構いません。
なお、一緒に並べ替えるので離れた場所に作業列があるとやりにくいかも知れません。
ご回答ありがとうございます。
希望のソートができました!
細かく丁寧に教えていただいてありがとうございました。
ただソートは毎月発生する作業なので、この長~い式を毎回コピーしながらするのは大変ですね。
…というか最初の入力も(笑)
とりあえずはこの方法でしのぐとして、ユーザー設定リストなどで、何回もカンタンにソートできる方法は
ないんでしょうかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- Excel(エクセル) エクセルのソート方法について 1 2023/01/13 00:01
- アジア ベトジェットエアの登録について 1 2023/07/03 14:43
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- Excel(エクセル) excel 行でソートすると計算式が上手くいかない。 6 2022/06/01 08:18
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルで文字が混じった数字を並べ替えしたいのですが
Excel(エクセル)
-
アルファベットを含む数をエクセルでうまく並べ替えをしたい。
Excel(エクセル)
-
Excelで文字+数字のデータの並び替えについて
Excel(エクセル)
-
-
4
【Excel・並べ替え】かな、アルファベット、数字などの順序
Excel(エクセル)
-
5
Excel 並べ替え順序
その他(Microsoft Office)
-
6
VBAにて 文字と数字が混在してるデータの並び替え
Excel(エクセル)
-
7
Excel2017 フィルタ昇順並びがA1、A10、A11、A2、A3となってしまう。
Excel(エクセル)
-
8
エクセルの並び替えで日本語を先にしたい
Excel(エクセル)
-
9
エクセル SMALL の機能を文字列でもできないか
Excel(エクセル)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
【VBA】ピボットテーブルの範囲...
-
エクセルで離れた列を選択して...
-
エクセルで行を分ける方法
-
データシートビューのタイトル...
-
VBA 指定した列にある日時デー...
-
こんな情報を主キーとして設定...
-
エクセルマクロの組み方
-
最終列の列番号を列文字に変換...
-
先日、算出値の記憶での質問で...
-
VBA Splitで「引数の数が一致...
-
エクセル 重複 隣の列 一番...
-
エクセルで最初の行や列を開け...
-
VBAで結合セルを転記する法を教...
-
エクセルの列をたたむ操作
-
Accessのレポートで繰り返し表...
-
エクセルでの数値・文字の並べ...
-
マクロで行削除を自動で行いたい
-
エクセルのソートで、数字より...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Alt+Shift+↑を一括で行うには、...
-
エクセルで住所を県と市・郡と...
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
VBAで結合セルを転記する法を教...
-
エクセルマクロPrivate Subを複...
-
エクセルマクロの組み方
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
エクセルで最初の行や列を開け...
-
エクセルでセル12個間隔で合...
-
エクセル マクロ 範囲指定で...
おすすめ情報