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.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の各列が動いてないともかぎりませんし・・同一セル内で桁数が違うしかもマイナスで区切られた並び替えの優先順位をもった数字はどう処理したらならびかわるのでしょうか?
No.2
- 回答日時:
>理由がわかる方教えていただけませんか
こんなもの常識で回答者はみんな知っているよ。
並べ替えは、コンピュタがやるルールが決まっている。我々はそれに沿ってソートキーをつくり、勘案する列(と優先順位、昇降順と)を指定するだけ。
データー区切り位置ーハイフンで3列に分けるのが良いでしょう。
http://www.kenzo30.com/ex_kisopoint/onepoint_hen … 参考。本質問ではハイフンで分ける。
そして数字記号ー以外の文字はなさそうだから、数字でソートすればよい。一番常識的な並びになるよ。元の1列が3列データに分かれるが、左の列から第1キー、次の列を第2きー、3列目を第3キーとしてソートする。
たまたま今回のケースは関数も、VBAも要らない。操作だけ。
ありがとうございます。いろいろ考えてはいるのですが、なかなか思うように行かず悩んでます。大変参考になりました。いろいろやってみます。お付き合いいただきありがとうございます。
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.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.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
ご協力いただきありがとうございます。質問してから、雨のせいもありかぜでダウンしてました。お礼が遅れ大変失礼いたしました。マクロは
まったくわかりませんがせっかくお考えいただきました回答につきましては、意味がわかるくらいはがんばってみたいと思います。
今日から勉強させていただきます、どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
桁の違う数値での並び替え
Excel(エクセル)
-
エクセルで文字が混じった数字を並べ替えしたいのですが
Excel(エクセル)
-
エクセルで、桁数の異なるデータ(整数)を抜きたしたいのですが?
その他(パソコン・スマホ・電化製品)
-
-
4
Excel2017 フィルタ昇順並びがA1、A10、A11、A2、A3となってしまう。
Excel(エクセル)
-
5
EXCELのハイホン区切りの数字並べ替えについて教えて下さい
Excel(エクセル)
-
6
エクセル 文字数 多い順 並び替え
Excel(エクセル)
-
7
Excel 頭に「0」がついている場合の並び替え
Excel(エクセル)
-
8
VBA ソートすると、1、11、2,3になって・・
Excel(エクセル)
-
9
エクセル 文字と数値を含む 並べ替え
Excel(エクセル)
-
10
VBA 桁数が混在するソート
Excel(エクセル)
-
11
Excelで文字+数字のデータの並び替えについて
Excel(エクセル)
-
12
EXCELの条件付き書式で数式を空白と認識してくれる方法
Excel(エクセル)
-
13
エクセルのハイフンあり並べ替えで
Excel(エクセル)
-
14
ハイパーリンクでジャンプした先のセルを画面の一番上に表示させたいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで一部除外した数字を...
-
エクセル 指定した文字列を含...
-
エクセル 並び替え
-
EXCELである列を上から順にチェ...
-
桁数が混在する並び替えの方法
-
テキストボックス内の文字のふ...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
エクセルにおける、グラフの指...
-
エクセルでグラフタイトルが折...
-
Excelで行ごとコピー、同じ行を...
-
パワーポイントに貼り付けたエ...
-
C+vのvは英語で何の頭文字...
-
excelの16進数表示方法
-
塗りつぶしの色をコピーするには
-
パワーポイントのグラフに標準...
-
エクセルで同じ値が連続してい...
-
Excelの単一セルから結合セルへ...
-
常に参照もとのセルの書式に従...
-
エクセルグラフの数値軸(Y)の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルで同じ名前ごとの合計...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルで一部除外した数字を...
-
エクセル VLOOKUPが反映されない
-
エクセルで2列を検索し2列とも...
-
Excelで自動的に並べ替えなんて...
-
ExcelVBA:列方向の並び替え O...
-
エクセルで列内の同じIDの商品...
-
エクセルvba 一つ上の行を指定...
-
エクセル マクロで列を連続し...
-
EXCELである列を上から順にチェ...
-
エクセルマクロでA欄に値があ...
-
VBAでFormula関数を使ってVlook...
-
エクセルの質問(結合と集計に...
-
エクセルで合算後の降順がうま...
-
アクティブセルのある行の任意...
おすすめ情報