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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel 連番を入力する方法
Excel(エクセル)
-
Excelで、10000,20000,30000と表示されているのですが、時々10000,20000
Excel(エクセル)
-
エクセルのハイパーリンクがうまく機能しない
Excel(エクセル)
-
-
4
Excelの空のセル
Excel(エクセル)
-
5
ファイル内にある数字の出現回数カウント
Excel(エクセル)
-
6
同じ型【ハイフンと数字】をぶつけて、イコールである事を証明する関数はありますか?
Excel(エクセル)
-
7
excelの不要な行の削除ができない!
Excel(エクセル)
-
8
Excel 漢字二文字の先頭と最後 入れ替え
Excel(エクセル)
-
9
エクセルの書式設定について教えてください。
Excel(エクセル)
-
10
Excel関数の先頭に「@」が入っているのは何故?
Excel(エクセル)
-
11
FormulaR1C1の 相対参照式のコピー
Excel(エクセル)
-
12
Excelが大きくなってしまう問題
Excel(エクセル)
-
13
エクセルの数式で教えてください。
Excel(エクセル)
-
14
同一セルに入力規則のリストと参照する設定併用できるような設定はありますでしょうか!!
Excel(エクセル)
-
15
ExcelでA列をコピーしたいのですがコピー範囲内に空白セルがあるとそこで終わってしまいます。 全て
Excel(エクセル)
-
16
エクセルの表の参照値から円を取って数字で扱えるようにしたい
Excel(エクセル)
-
17
エクセルで列をアルファベットではなく、数字の表示にするメリットって、なんでしょうか?
Excel(エクセル)
-
18
Excel 大なり小なりを表すとき、 例えば「10以上」なら、>=10 と表せますが、 この10の部
Excel(エクセル)
-
19
絞り込み検索
Excel(エクセル)
-
20
エクセルで比較 かつ 部分一致について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでデータ並べ替え
-
リストボックス内を昇順並べる方法
-
ファイルの漢数字の順番につい...
-
ソートの最適化の方法
-
EXCEL 「並び替え」の誤動作に...
-
mysqlでクロス集計を取りたいが...
-
nullなどの不正なデータが存在...
-
テーブルの行を増やしたい・・・。
-
ファイルメーカーのフィールド...
-
SQLローダーCSV取込で、囲み文...
-
サイズ指定検索
-
SQLの構文の質問です。
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
月ごとの集計について
-
group by したものをsumしたの...
-
テーブルのフィールドの一番長...
-
count関数の値をwhere句で使用...
-
BLOB型項目をSQLの検索条件に指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
エクセル、並び替え正しくソー...
-
レコードの登録順がおかしい
-
テーブルレーコードをソートし...
-
月末日のみソートしたい
-
1の行を固定した上でVBAを用い...
-
ハイフンの入ったデータの並べ替え
-
コンボボックスのソートについて
-
SQLのORDERBY句について質問です。
-
エクセルの縦列のソートできま...
-
上から何番目か。
-
OracleとAccessの出力順の違い
-
アクセスに関して。クエリの並...
-
タイトル行を固定してソートしたい
-
Selectした時のレコードの取得順
-
accessでDISTINCT 句と矛盾
-
数字と漢字が混じった日付デー...
-
SQLで曜日のソートを月火水木金...
-
エクセルの並べ替えがうまくい...
おすすめ情報