
EXCEL2007です。関数やマクロについてはこんなものがあるんだぁ~程度の知識しかありません。そこで質問です。
以下の数字の並び替えできる方法がわかりません。
単純にEXCELのコマンド操作でできるのでしょうか?
それとも関数やプログラムを必要とするのでしょうか?
もし関数やプログラムが必要であるならば、がんばって勉強してみようと思ってます。(勉強はするつもりでも、なにが必要かもよくわかっていません。)
並び替えしたい数字は以下のような数字が混在します。
桁数が違う
1桁のものや、2桁~6桁のものが混在する
例 1or12or345or645874 など
ハイフンがあるのとないものがある。
例 1-1or1-2or345
順番はまずハイフンの前の番号が若い順に並べたい。
次にハイフンより前の番号が同じものについては、ハイフン後の番号の順番に並べたい。ハイフンが2回重なる場合がある。以下の例を並び替える場合まず一番始まりのハイフン前の若い順に並べるまず4番次に26番次に100番次に226番となり次は1番はじめのハイフンの順番で最後は一番最後のハイフンの順番で以下の例のように並びかえたいです。
1番 4
2番 4-3-5
3番 4-25-2
4番 26-13-6
5番 26-13-21
6番 100
7番 226-8-9
8番 226-15-31
しかしEXCELでは表示形式は文字列にしないと、ハイフンは入力できず、次に並びかえようとすると桁数がバラバラなので
一番初めの数字が桁数より優先されてしまい上記の例ですと本来並びかえたい上の例とは違い。
6番 100
8番 226-15-31
7番 226-8-9
5番 26-13-21
4番 26-13-6
1番 4
3番 4-25-2
2番 4-3-5
と並んでしまいます。理由がわかる方教えていただけませんか???
またどのようにすれば解決するのでしょうか?
No.5ベストアンサー
- 回答日時:
ANo.3です。
> 1000個以上あり
> 自分なりに考えつくことは、まず列をコピ-して元の列をいじらずにコピ-した列をハイフンで分割する。桁数を揃え(0を入れ込む)優先レベルを確定し並びかえる。
上記で可能だと思います。ただし、桁数を揃える必要はないと思います。
「データ」→「区切り位置」で分割した3列を使って並べ替えすればよいと思います。(AN0.2の方のご回答。 何時も勉強させて頂いております。)
その時、問題になるのは、空白セルの存在なので、分割した3列の空白セルを含む範囲を選択して、「編集」→「置換」で「置換後の文字列」に「0」を入力すれば、「0」が挿入されますので、並び替えが可能になります。
ありがとうございます。むむむ、置換ですか?これならなんとかなんとか、私でもつかまることができるかもしれません。ありがとうございます。500円で購入したことがある本を思い出しました。うぅぅぅ、頭をひねってみます。
No.6
- 回答日時:
こんばんは。
マクロでしたら、以下のようなものを考えてみました。
ただし、こちらの思惑とは違う数字の並びですと、うまくいかない可能性があります。
それは、4桁の数字がある場合です。もちろん、以下の正規表現の「パターン」の部分を修正すれば可能になります。
結果は、このようになります。
「Const DIST As Integer = 2 '右にいくつセルを離すか」の
ところを2にしてありますので、A列に数値がある場合は、C列に出力されます。
もちろん、ユーザー定義関数のTriFigs を単独で使用しても、出力されますが、数式ですから、一旦、値貼り付けをしないと並べ替えは出来ません。
004-000-000
004-003-005
004-025-002
026-013-006
026-013-021
100-000-000
226-008-009
226-015-031
標準モジュールに貼り付けて、SortText を実行してください。
'------------------------------------------
Sub SortText()
Dim c As Variant
Dim i As Long
Const DIST As Integer = 2 '右にいくつセルを離すか
Application.ScreenUpdating = False
'範囲 A1 ~データ範囲まで
For Each c In Range("A1", Range("A" & Rows.Count).End(xlUp))
If IsNumeric(Replace(c.Value, "-", "")) Then
c.Offset(, DIST).Value = TriFigs(c.Value)
i = i + 1
End If
Next c
Application.ScreenUpdating = True
MsgBox i & "セル、変換を完成しました。", 64
End Sub
Function TriFigs(ByVal strText As String)
Dim Matches As MatchCollection
Dim Match As Match
Dim i As Integer
Dim a(2) As Integer
Dim buf As String
If strText = "" Then Exit Function
With CreateObject("VBscript.RegExp")
.Global = False
'パターン
.Pattern = "(\d{1,3})\-*(\d{1,3})*\-*(\d{1,3})*"
If .test(strText) Then
Set Matches = .Execute(strText)
Set Match = Matches.Item(0)
For i = 0 To 2
a(i) = Match.SubMatches(i)
Next
buf = Format(a(0), "000") & "-" & Format(a(1), "000") & "-" & Format(a(2), "000")
Else
buf = strText
End If
TriFigs = buf
End With
End Function
ご協力いただきありがとうございます。質問してから、雨のせいもありかぜでダウンしてました。お礼が遅れ大変失礼いたしました。マクロは
まったくわかりませんがせっかくお考えいただきました回答につきましては、意味がわかるくらいはがんばってみたいと思います。
今日から勉強させていただきます、どうもありがとうございました。
No.4
- 回答日時:
力技ですのでお恥ずかしいんですが、以下のようにすれば出来ると思います。
A列にデータがあると仮定してご説明します。(A1から始まっていると仮定)
1 B1に=IF(C1=0,1,IF(D1=0,2,3))
(-の数によって数式を簡単にするためのセルです)
2 C1に=IF(ISERROR(FIND("-",A1,1))=TRUE,0,FIND("-",A1,1))と入力(一個目の-の位置を特定します)
3 D1に=IF(C1=0,0,IF(ISERROR(FIND("-",A1,C1+1))=TRUE,0,FIND("-",A1,C1+1)))と入力(2個目の-の位置の特定)
4 E1に=CHOOSE(B1,VALUE(A1),VALUE(LEFT(A1,C1-1)),VALUE(LEFT(A1,C1-1)))
(一個目の-までの値を取り出します)
5 =CHOOSE(B1,0,VALUE(MID(A1,C1+1,9)),VALUE(MID(A1,C1+1,D1-C1-1)))(二個目の-までの値を取り出します)
6 =CHOOSE(B1,0,0,VALUE(MID(A1,D1+1,9)))
以上のように入力した後、データのある行だけコピーして、
E列、F列、G列でソートをかければお望みの並び順になると思いますが(^^;)
ありがとうございます。これは関数というもののようですねやはり関数を使わないとできないのですか? まずこのお教えいただいたとおりにやってみたいと思います。自分には少しレベルが高すぎるみたいなので、何日間か日を頂き考えてみたいと思います。どうもありがとうございます。力技でもなんでもうれしいです。ありがとうございました。
No.3
- 回答日時:
[理由]
Excelの並べ替えは、下記URLの「並べ替えの順序」の項にある基準で並べ替えされていますので、基準通り並べ替えているからです。
「リストの並べ替えの基本を学ぼう 2」
http://allabout.co.jp/computer/msexcel/closeup/C …
[対策]
下記のように桁数を揃えれば、ご希望の順に並ぶと思います。
1番 004-00-00
2番 004-03-05
3番 004-25-02
4番 026-13-06
5番 026-13-21
6番 100-00-00
7番 226-08-09
8番 226-15-31
早速の回答大変ありがとうございます。教えていただけた方法で近づきつつあります。がしかし、私の説明不足でもうしわけありませんが。例だけみると数がさほどないように見えますが、1000個以上ありまして、お教えいただいた方法では、以下の作業があります。 自分なりに考えつくことは、まず列をコピ-して元の列をいじらずにコピ-した列をハイフンで分割する。桁数を揃え(0を入れ込む)優先レベルを確定し並びかえる。
これでバッチリだと思うのですが自動で0を入れ桁数を揃えつつ、なおかつ何も入力されてないセルに0を入れるなどのことができるのでしょうか?5桁までですので○○○○○-○○○○○-○○○○○のハイフン区切りの数字の列で何も入ってないところに0を挿入することは可能でしょうか? お教えください。
No.2
- 回答日時:
>理由がわかる方教えていただけませんか
こんなもの常識で回答者はみんな知っているよ。
並べ替えは、コンピュタがやるルールが決まっている。我々はそれに沿ってソートキーをつくり、勘案する列(と優先順位、昇降順と)を指定するだけ。
データー区切り位置ーハイフンで3列に分けるのが良いでしょう。
http://www.kenzo30.com/ex_kisopoint/onepoint_hen … 参考。本質問ではハイフンで分ける。
そして数字記号ー以外の文字はなさそうだから、数字でソートすればよい。一番常識的な並びになるよ。元の1列が3列データに分かれるが、左の列から第1キー、次の列を第2きー、3列目を第3キーとしてソートする。
たまたま今回のケースは関数も、VBAも要らない。操作だけ。
ありがとうございます。いろいろ考えてはいるのですが、なかなか思うように行かず悩んでます。大変参考になりました。いろいろやってみます。お付き合いいただきありがとうございます。
No.1
- 回答日時:
4-3-5=数値でなく文字列と成りますので、セル内の先頭文字4のみ並べ替え対象です、-3-5は対象になりえません。
次のように数値を3列に分けてInPutし、列ごとに、並べ替える条件を設定します。数値では、-=マイナスで記号で、ハイフンではありません。A列=4,26,100,226 B列=3,25,13,8, C列=5,2,6,21,
早速のご回答ありがとうございます。なるほど列ごとに分けるんですね。できましたらハイフンこの場合マイナスですが、これを含め1つのセルに入力したいのです。理由は、入力が複雑になるからです。あと並びかえた後にチェックする際ABCの各列が動いてないともかぎりませんし・・同一セル内で桁数が違うしかもマイナスで区切られた並び替えの優先順位をもった数字はどう処理したらならびかわるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Java Java 南京錠 2 2023/02/04 11:46
- 数学 登録番号と年月日と時間から作成した数字列を出来る限り小さくする方法 7 2022/06/03 16:10
- 恋愛・人間関係トーク 以下の中から付き合う、結婚するときに重要だと思うものから順番に並べ替えてください。 1.顔 2.身長 1 2022/04/12 19:40
- Excel(エクセル) エクセルについて 6 2022/11/29 14:07
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- その他(悩み相談・人生相談) 以下の中から付き合う、結婚するときに嫌だなー思うものから順番に並べ替えてください。 1.ブサイク 2 3 2022/06/07 08:45
- 恋愛・人間関係トーク 以下の中から付き合う、結婚するときに嫌だなー思うものから順番に並べ替えてください。 1.ブサイク 2 1 2022/06/07 16:21
- Excel(エクセル) Excel 郵便番号順に並び変えたい 同じ番号が複数あるとき 4 2022/04/28 18:35
このQ&Aを見た人はこんなQ&Aも見ています
-
桁の違う数値での並び替え
Excel(エクセル)
-
エクセルで文字が混じった数字を並べ替えしたいのですが
Excel(エクセル)
-
VBA ソートすると、1、11、2,3になって・・
Excel(エクセル)
-
-
4
Excel2017 フィルタ昇順並びがA1、A10、A11、A2、A3となってしまう。
Excel(エクセル)
-
5
【エクセルの並び替え】末尾の数字を軸に並び替え
Excel(エクセル)
-
6
エクセル 文字と数値を含む 並べ替え
Excel(エクセル)
-
7
VBAにて 文字と数字が混在してるデータの並び替え
Excel(エクセル)
-
8
Excelで文字+数字のデータの並び替えについて
Excel(エクセル)
-
9
エクセル 文字数 多い順 並び替え
Excel(エクセル)
-
10
Excelについて教えてください。 整理番号順に並び替えをしたいのですが、 -1、-2などが混ざって
Excel(エクセル)
-
11
エクセルのソートで、数字よりもアルファベットを優先したい
Excel(エクセル)
-
12
エクセル:住所の番地順に並び替えたい
Excel(エクセル)
-
13
EXCELのハイホン区切りの数字並べ替えについて教えて下さい
Excel(エクセル)
-
14
Excelで隠れてしまった図やテキストボックスを探す方法
Excel(エクセル)
-
15
アルファベットを含む数をエクセルでうまく並べ替えをしたい。
Excel(エクセル)
-
16
エクセルで、桁数の異なるデータ(整数)を抜きたしたいのですが?
その他(パソコン・スマホ・電化製品)
-
17
VBA 桁数が混在するソート
Excel(エクセル)
-
18
ExcelでVBAを使用した際に、『パス名が無効です』とエラーになります。
Excel(エクセル)
-
19
エクセル2016でfilter関数がないので、、抜き出す関数をおしえてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
エクセルで同じ名前ごとの合計...
-
エクセルの関数SUBSTITUTEを、...
-
EXCEL VBA 指定範囲内で特定の...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
エクセルにおける、グラフの指...
-
Excelで行ごとコピー、同じ行を...
-
日付が1年以内になると他のセル...
-
テキストボックス内の文字のふ...
-
たくさん作った同じ設定のグラ...
-
エクセルでグラフタイトルが折...
-
エクセル
-
塗りつぶしの色をコピーするには
-
C+vのvは英語で何の頭文字...
-
エクセル(Excel)の目盛りの一...
-
数字がセルの左側に寄っていて...
-
イラレのグラフがグループ解除...
-
エクセルで条件付き書式を使わ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
エクセルで一部除外した数字を...
-
エクセルVBA Unionはなぜ遅い?
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルvba 一つ上の行を指定...
-
エクセルで2列を検索し2列とも...
-
エクセル マクロで列を連続し...
-
エクセルの関数SUBSTITUTEを、...
-
Excelで自動的に並べ替えなんて...
-
EXCELである列を上から順にチェ...
-
エクセルで同じ名前ごとの合計...
-
ExcelVBA:列方向の並び替え O...
-
FIND関数について教えてください
-
エクセルで列内の同じIDの商品...
-
【急】エクセル こんなときの...
-
EXCEL 指定した曜日に番号を振...
-
エクセルマクロでA欄に値があ...
-
エクセルに詳しい人!!!至急...
-
Excelでの並べ替え
おすすめ情報