1S101,1S102,~1S199,1S200,1T101,1T102~1T199,1T200,1B101,1B102~1B199,1B200,1C101,1C102~1C199,1C200というような番号がついているものがあります。
1S,1T,1B,1Cで始まるものがそれぞれ101から200まで100個あります(合計400個)。
番号はすべて5文字です。この番号をもとにいろいろな情報がついています。
番号を基にそのままソートすると、1B101,1B102~1B199,1B200,1C101,1C102~1C199,1C200,1S101,1S102,~1S199,1S200,1T101,1T102~1T199,1T200となってしまいます。ユーザー設定リストにB,C,S,Tと設定しましたが、結果は変わりませんでした。
VBAを用いてもいいので、先頭の2文字が1S→1T→1B→1Cとなり、残りの3文字の数字が昇順となるようにソートする方法はないでしょうか?
別の列に1~400までの連番を入れて、その連番を基にソートするしかないでしょうか?
No.3ベストアンサー
- 回答日時:
No2です。
>やはり作業列を作るしかないようですね。
それが普通の方法だとは思いますけれど、「作業列」がかなり嫌そうな雰囲気なのでマクロで処理する例を以下に挙げておきます。
ご質問文ではセル位置などが不明なので、勝手に以下を仮定してあります。
(あくまでも例ですので。)
・1行目はタイトル行と仮定(ソート対象外とする)
・キーとなる「番号」は、A列に入力されているとする
・ソートは以下の順となるようにする
① 最初の2文字が(1S,1T,1B,1C)で始まる番号
② 上記以外の文字列
③ 空白文字列(=セルが空白の場合)
・ソートの対象範囲はA:D列の4列分とする
Sub Q13765542()
Dim n As Long, i As Long, j As Long
Dim s, str, v
str = Split("1S,1T,1B,1C,", ",")
n = Cells(Rows.Count, 1).End(xlUp).Row - 1
If n < 2 Then Exit Sub
v = Cells(2, 1).Resize(n).Value
For i = 1 To UBound(v)
s = Left(v(i, 1), 2)
For j = 0 To UBound(str)
If s = str(j) Then Exit For
Next j
If j = 4 Then j = 9
v(i, 1) = "A" & CStr(j) & Mid(v(i, 1), 3, 9)
Next i
Application.ScreenUpdating = False
Columns(1).Insert
Cells(2, 1).Resize(n).Value = v
Cells(2, 1).Resize(n, 5).Sort key1:=Cells(2, 1), Header:=xlNo
Columns(1).Delete
Application.ScreenUpdating = True
End Sub
返信遅くなり申し訳ありません。再度の回答ありがとうございました。
Splitを使って文字列を配列に入れると簡単になりますね。勉強になりました。おかげで希望通りソートできるようになりました。
No.2
- 回答日時:
こんにちは
>ユーザー設定リストにB,C,S,Tと設定しましたが、
>結果は変わりませんでした。
順序をどのようにしたいのでしょう?
>先頭の2文字が1S→1T→1B→1Cとなり~
とあるので、そちらの順ではないのですか?
「B,C,S,T」はB,C,S,Tの順を意味します。
(=通常のアルファベット順ですので定義する意味がない)
ソートの機能を利用したいのなら、作業列を用いてソート用のキーを作成すれば良いでしょう。
一例として、作業列に =LEFT(元の番号,2) 等として最初の二文字を取り出しておきます。
この状態で、第一キーを作業列にし、ユーザ定義リストを使用
(もちろん、ユーザ定義リストは正しく設定しておきます)
第二キーは元の番号の列で昇順を指定すればご希望のようになります。
ソートが終わったら、作業列は削除しても良いですし、何度も利用するようであるのなら、あらかじめ式を入れておいて非表示列にしておいても宜しいかと。
作業列用の式を
=VLOOKUP(MID(元の番号,2,1),{"B",3;"C",4;"S",1;"T",2},2,0)
などとして直接変換してしまえば、並べたい順にできるので、リストは不要になります。
あとは同様ですね。
>VBAを用いてもいいので、~~
単独で番号だけを並び替えるのなら、メモリ内で行っても良いですが、まとめて行の入れ替えを行いたいのだろうと想像しますので、その場合は、シートのソート機能を利用する方が便利でしょう。
ですので、手操作と同様に一時的なソート用のキー列を作成して、それでソートしてから削除するというような処理にしておくのが良いのではないでしょうか?
忙しい中、回答ありがとうございます。
「ユーザー設定リストにB,C,S,Tと設定しました」は「>ユーザー設定リストにS,T,B,Cと設定しました」の誤りです。すみません。
やはり作業列を作るしかないようですね。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- プリンタ・スキャナー スキャンしたものをデータ化できますか 4 2023/12/16 13:11
- 統計学 質問です! 10 2022/08/18 10:16
- ドライブ・ストレージ 外付けHDDを認識しない 3 2024/01/19 10:44
- Excel(エクセル) エクセルの計算式について質問 3 2023/09/12 17:24
- 数学 n=1の時は成り立ち n=kのときA^k=(a^k a^k-1b)が成り立つとすると 0 0 n=k 6 2023/05/14 18:53
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- ドライブ・ストレージ 容量を拡張するディスククローンの方法 10 2024/02/06 09:06
- 建設業・製造業 建設 セメント1tの製造に材料が1.5t使われると聞きました。500Kg分はどこへ消えてしまうのでし 2 2022/12/06 21:27
- 数学 これの変形を教えてください。 det[A B C D] = det [A B C-CA^-1A D- 1 2022/08/28 12:34
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel 連番を入力する方法
Excel(エクセル)
-
Excelで、10000,20000,30000と表示されているのですが、時々10000,20000
Excel(エクセル)
-
エクセルのセル統合について
Excel(エクセル)
-
-
4
エクセルのハイパーリンクがうまく機能しない
Excel(エクセル)
-
5
ファイル内にある数字の出現回数カウント
Excel(エクセル)
-
6
Excelの空のセル
Excel(エクセル)
-
7
Googleシート「A1」でなくて「A001」にしたいのですが
Excel(エクセル)
-
8
Excelが大きくなってしまう問題
Excel(エクセル)
-
9
FormulaR1C1の 相対参照式のコピー
Excel(エクセル)
-
10
Excel関数の先頭に「@」が入っているのは何故?
Excel(エクセル)
-
11
Excel 漢字二文字の先頭と最後 入れ替え
Excel(エクセル)
-
12
エクセル→貼り付けのオプション→貼り付け先の書式に合わせる が急にできなくなった。 どうして?
Excel(エクセル)
-
13
関数を教えていただきたいです。 添付のような「data sheet」があります。 他に、「集計 sh
Excel(エクセル)
-
14
エクセルの行を巾を変えずに増やす方法
Excel(エクセル)
-
15
Excelで【1-11】と入力すると【1月11日】になってしまう
Excel(エクセル)
-
16
エクセル関数またはVBAについて
Excel(エクセル)
-
17
エクセルのcountifのワイルドカードについて
Excel(エクセル)
-
18
エクセルで⑤番の操作が分かりません。どういう関数が良いんですか?
Excel(エクセル)
-
19
数値から名前が作成できなくなっているッ!?
Excel(エクセル)
-
20
Excel関数について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
並べ替えについて
-
ソート(PL/SQL)
-
ファイルの漢数字の順番につい...
-
Windowsでファイル名でソートさ...
-
エクセルでダブルクリックして...
-
レコードの登録順がおかしい
-
ソート。内容の一部を置換して...
-
1の行を固定した上でVBAを用い...
-
エクセルの並べ替えがうまくい...
-
上から何番目か。
-
都道府県順、北からソートした...
-
エクセルのソートの繰り返し作...
-
ORDER BY の項目を SELECT する...
-
Excelの並び替え(文字数と画数...
-
タイトル行を固定してソートしたい
-
マクロ 昇順のマクロを追加したい
-
SQLローダーCSV取込で、囲み文...
-
2つの列が同じ値の行を取得するSQL
-
テーブルの最後(最新)のレコー...
-
select文の実行結果に空白行を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのソートについて
-
テーブルレーコードをソートし...
-
エクセル、並び替え正しくソー...
-
DOSでフォルダとファイルをテキ...
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
1の行を固定した上でVBAを用い...
-
並べ替えについて
-
上から何番目か。
-
リストボックス内を昇順並べる方法
-
文字型の順番がうまく並ばない。
-
Selectした時のレコードの取得順
-
accessでDISTINCT 句と矛盾
-
アクセスに関して。クエリの並...
-
月末日のみソートしたい
-
ハイフンの入ったデータの並べ替え
-
コンボボックスのソートについて
-
都道府県順、北からソートした...
-
タイトル行を固定してソートしたい
-
SQLのORDERBY句について質問です。
おすすめ情報