- ベストアンサー
EXcel(エクセル)での並び替え
EXcel(エクセル)でのデータの並び替えについて教えてください。 1・年号の並び替え 1つのセルにはいったデータを 明治8年 明治20年 大正10年 昭和5年 昭和10年 のように時代の順に並べたいのですが、 ふつうに並べると元号はあいうえお順となり、 年は、20年と8年では20年が先に来てしまいます。 これを一度に並び替える方法はありますか? MID関数を使い、元号と年を別々の列に分けてソートすればできるとは思うのですが、「並び替え」機能をうまく活用して並び替えする方法はあるのでしょうか。 2・並び替えのユーザー設定リスト (ツールーオプションーユーザー設定リスト)の 自分で登録した項目を一度に全削除する方法はありますか?一度に1項目ずつ削除するのはできるのですが、間違って登録してしまい、量が半端じゃないので。。 3・漢字交じりの日本語を単純に並び替えした場合、 全く同じ語句でもばらばらな場所にあることがありますが、これを直す方法はありますか? わかりにくい質問で恐縮ですが、1つでもわかるものがあればお願いします。
- tomochan
- お礼率88% (161/182)
- オフィス系ソフト
- 回答数10
- ありがとう数12
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
1についてですが、和暦年の並べ替えですが、他のセルを使用することなく、 そのままの状態で簡単に整列する方法です。 (和暦年のソート用に西暦年を「ふりがな」に設定しています。) 「和暦年」のセル範囲を選択し、下記の「和暦年整列用設定」マクロを実行します。 そのあとは、通常の「並べ替え」で「ふりがなを使う」で実行します。 一応、マクロの設定方法を書いておきます。 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.コードウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.実行するときは、整列のキーになる和暦年のセル範囲を指定して Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で 「和暦年整列用設定」を指定し、[実行]ボタンを押します。 見た目は、何も変わりませんが・・・(ふりがなを見てください。) あとは、通常の方法で「並べ替え」を行うとご希望通りになると思います。 Sub 和暦年整列用設定() Dim Rng As Range Dim strPhoText As String For Each Rng In Selection If IsEmpty(Rng) = False Then strPhoText = Format(DateValue(Rng.Text & "1月1日"), "yyyy") Rng.Characters(1).PhoneticCharacters = strPhoText End If Next End Sub 3の「正しく整列されない」については、「ふりがな」が同じく設定されていないことが 考えられます。 または、「ふりがな」が設定されていたり、無かったりするためと思います。 (漢字を手入力しないで他から貼り付けたりすると「ふりがな」が設定されませんから こういうこともあり得ます。 また漢字の入力(変換)方法により同じ漢字でも 「ふりがな」が異なって設定になる場合があります。) 取り敢えず、並べ替えをするとき、「オプション」で「ふりがなを使わない」にして 実行してみてください。 必ず「ふりがな順」でないとダメなときは、「フリガナ」の再設定が必要でしょう。 これもマクロを使えば、簡単にできますので、必要にときは、その旨書き込んでください。
その他の回答 (9)
- imogasi
- ベストアンサー率27% (4737/17068)
(条件) 年数字は半角で入っているとする。(全角でも出来る。後記。) 余分な1列を使うことを許す。 明治、大正、昭和、平成の文字を入れる列を使うことを許す。 (ソートキー) 明治2年は102 明治22年は122 大正2年は202 大正12年は212 昭和2年は302 昭和12年は312 平成2年は402 平成12年は412のように 別列に文字列を作る関数 (関数) D1:D4(どこでも使わないところ)に 明治 大正 昭和 平成と入れる。 A列に元の昭和2年、昭和12年とか入っているとして B1に=MATCH(LEFT(A1,2),$D$1:$D$4,0)&TEXT(VALUE(MIDB(A1,5,2)),"00") B2セル以下複写する。 年数字が全角数字なら B1に=MATCH(LEFT(A1,2),$D$1:$D$4,0)&TEXT(VALUE(MIDB(A1,5,LENB(A1)-6)),"00") (結果) B列に301,401などが入る。 (操作)B列で、昇順にソートする。 #6、#8のtelescopeさんへ。 済みませんでした#6で正しく、出来ました。上記の式の一方で使わせていただきました。
お礼
なんどもありがとうございます。 imogasiさんをはじめ、telescopeさん、ja7awuさんのあげてくださった方法、いずれでもうまくできました。自分は関数があまりつかいこなせず試行錯誤しては失敗しているような状態ですので、みなさんが考えてくださった数式を拝見し、こんな考え方もあるんだ、と本当に勉強になりました。
- ja7awu
- ベストアンサー率62% (292/464)
No.5 の投稿者です。 実行してみたのでしょうか? > マクロは一度も使ったことがなかったのですが、少し調べてみましたところ、 > 設定さえしてしまえばボタン一つで複雑な操作ができる便利な機能ということを > はじめて知りました。 > 実際使用した感じでは、処理の負担が大きくてフリーズしやすいとか、失敗すると > 元に戻せないとか、気を付けるべき点はあるのでしょうか? まず、詳しく操作手順を書いたつもりですので、その通りにやってみていただきたい と思います。 処理の負担は、データ行数分の計算式を設定するよりは、負担にならないでしょう。 気を付けるべき点は、別にありませんが、気になるようでしたら、というより一般的な ことですが、バックアップを取ってから、実行してみてください。 Excelを自在に使いこなすには、VBAが必須ですので、これが始めるきっかけに なればいいかなと思います。 今回は、コードの中身に触れず、とにかく実行してみましょう。 ちょっと変わった方法ですが、VBAを使うとこういうことも出来るということです。
お礼
何度も気にかけていただいてありがとうございます。とりあえず意味もわからずにそのままペーストしてみたところ、驚くほどうまくできました!(明治1年もできて感激。しかし慶応はさすがにできませんね。。) エクセルはデーターベース専用ソフトではないから複雑なことはできないと信じていましたが、まだまだいろいろ応用できそうです。ともかくVBAが全く初めてなので勉強してみようと思います!ありがとうございます
- telescope
- ベストアンサー率54% (1069/1958)
#7のご質問に関して MID関数は、半角と全角の区別はしませんが、 MIDB関数は、バイト数で処理します。 =value(midb(a2,5,2)) で数値が1桁の「8年」であっても「年」が2バイト文字ですから、「8」だけを取り出します。 もとの質問が半角数値でしたので、特に言及しませんでしたが、もし全角数字を使っているのなら、 =VALUE(MIDB(ASC(A1),5,2)) とすれば大丈夫だと思います。
お礼
A6とあわせて御礼申し上げます。midb関数、asc関数、大変参考になりました。数値は基本的には半角入力ですがたまに全角のところもあったりしますので、一度全部半角してやればいいことがわかりました。
- imogasi
- ベストアンサー率27% (4737/17068)
#6のご回答の一部について 「C2セルに「=value(midb(a2,5,2))」 として」とありますが「2」として大丈夫ですか。年数字が1桁と2桁の場合があり得ますが。私は先ほどから悩んだ点です。LENB(A1)-6とか考えたんですが。明治+年=6バイト。
お礼
そもそも普通のデータ入力では西暦での入力が基本ということなのですね。「昭和03年」などとしてしまうと印刷の時におかしいですもんね。(この場合もソート用の行と印刷用の行と2つ作ればいいのでしょうがやはり煩雑ですね)ありがとうございます。
- telescope
- ベストアンサー率54% (1069/1958)
既に入力済みなら、並べ替え用のデータを作ったらどうでしょうか? 「明治8年」がA2セルにあるなら、 B2セルに「=left(a2,2)」、C2セルに「=value(midb(a2,5,2))」 として、下までコピーします。 「オプション」-「ユーザー設定リスト」に「明治、大正、昭和」のリストを設定しておき、 「データ」-「並べ替え」で、最優先されるキーをB列に、2番目のキーをC列にしてオプションで 並べ替えの順序を「明治、大正、昭和」にします。 B列とC列を非表示にしておけばよいでしょう。 3.については、 「並べ替え」のオプションで、「ふり仮名を使わない」にしておけば、同じ漢字は同じ位置に並ぶようです。 「ふり仮名を使う」にすると入力したときの読みの順に並びます。 他からコピーしたものは、Excelで入力したものの後に並ぶようです。 たとえば、「東風」をそれぞれ、「こち」「とうふう」「ひがしかぜ」と入力して変換したものは、もとの読みの順に、「こ」の位置、「と」の位置、「ひ」の位置に来ます。 他からコピーして貼り付けたものは、元の読みがなんであれ、最後尾に来ます。
- imogasi
- ベストアンサー率27% (4737/17068)
1.に付いて 1900年(明治33年)以降であれば 1921/1/1 1930/1/1 1935/1/1 と入れて、表示形式をggge"年"としておくと、見た目には 大正10年 昭和5年 昭和10年 と表示されて、そのままソートすればお望みの通りの順番になります。しかし明治32以前があったり既に文字で入力が終わっておれば、この考え方は役立ちません。将来何かの時に役立てば。 3.の原因は、先頭部のスペース、中間部のスペース、かな英数の半角、全角が原因ではないでしょうか。 2.は「削除」である系列は全部抹消になるから、それだけの機能で十分で、全系列1発でオール削除は設けられていないと思いますが。
お礼
ご丁寧にありがとうございます。特に1については大変参考になりました。大正10年が西暦で何年かなんて考えたこともなかったので、全然思いつきませんでした。1900年以前も適用できればもっとすばらしいんですけどね。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
1.昇順で並べ替えると 昭和10年 昭和5年 大正10年 明治20年 明治8年 降順では 明治8年 明治20年 大正10年 昭和5年 昭和10年 となりました。・・・・コレでいいのでは? 数値も半角でも全角でも同じでした。 2.地道な削除以外思いつきませんでした。識者の登場を待ちましょう。 3.まったく同じ語句でも、どこかからコピーした場合と日本語変換した場合とではソートの基準が異なるようです。たしか、コピペはシフトJISコード順で、変換して入力した場合はその読みの順だったと思います。 たとえば、ご質問の文字列に加えて、「昭和9年」を「あきら」で変換した「昭」を使っって追加した場合は昇順でソートするとこの「昭和9年」が先頭になってしまいました。
お礼
コピペと変換の場合で異なるんですね。エクセルは妙に賢すぎてよくわかりませんね。ありがとうございます。
- taknt
- ベストアンサー率19% (1556/7783)
まず 文字列の数値のソートは 08 20 とか いうふうに 桁数を合わせるのが基本です。 ソートは 50音順か数値順かのどちらかです。 数値順にするならば 西暦にしたほうがいいでしょう。
お礼
やはり西暦にした方がいいようですね。 文字列の「平成15年」を「2003」に変換できる関数って思いつく方いらっしゃいますでしょうか。 それよりも、「平成」と「15」でわけてソートした方が早いかもしれないですね。
- yosa
- ベストアンサー率16% (28/170)
1番だけ。 西暦で年を入れて、書式設定で年号を表示させれば 時代順に並ぶと思うのですが、すでにテキストで入力 したものを、並び替えるのはマクロを組まないと無理 だと思います。
お礼
さっそくありがとうございます 確かに、西暦で入力しておけば、うまくできたのですね。 何も考えずにテキスト入力してしまいました。
関連するQ&A
- Excelの並び替えがうまくできない
Excelでデータの並び替えをする順番を任意にしたいので、「ツール」-「オプション」-「ユーザー設定リスト」に登録して、並び替えをするのですが、うまく集合せずに、同じグループがいくつかできてしまいます。 「ユーザー設定リスト」を使用しないでやると、うまく集合します。 ちなみに字句は入力規則の「リスト」を使用して入力しています。 何が悪いのでしょうか、アドバスをお願いします。
- 締切済み
- オフィス系ソフト
- エクセルの並び替えについて
エクセルで顧客管理をしています。 「基本情報」と名前を付けたシートに名前や住所などの情報が入力されたリストがあり、同じファイルの別のシートにそれぞれの顧客の基本情報とは異なるデータが入力されたリストがあります。 「基本情報」シートに新しい顧客が追加されたときに、別のシートの顧客名にも新しい顧客名が追加され、自動であいうえお順に並び替えがされるようにしたいのです。 質問内容が分かりにくかったらごめんなさい(T_T) 不明な点があれば、聞いてください。 よろしくお願いしますm(__)m
- 締切済み
- オフィス系ソフト
- エクセル 並び替え
エクセル2003でデータの並び替えをして、そのあとに追加データを 入力して、新たに並び替えをしましたが、追加の入力の部分が並び替えできません。またそのデータは住所の地番がはいっているので111-11というゆうふうに、ハイホンがはいっております。一度並び替えした場合、もとに戻してまたデータの並び替えをしなければならないのでしょうか?よろしくお願いします。
- 締切済み
- その他(データベース)
- Excelのテーブルで並び替えがうかくいかない
Excelのシートにテーブル化したデータがあります。これを50音で並び替え、かつ名前で並び替えを行っています。 50音、名前 い、井上 う、内山 い、伊藤 い、井上 あ、安藤 50音を昇順で並び替えるとあいうえお順にならびかわります。名前のみで並び替えを行うと、こちらも正しく並び替えが行うことができます。 困っているのは、50音で優先並び替えを行って、名前で並び替えを行うと以下のようになってしまいます。 50音、名前 あ、安藤 い、井上 い、伊藤 い、井上 う、内山 井上さんがかたまって表示されると思ったら、かたまって表示されませんでした。 このデータはサンプルデータなので正確ではないですが、名前がかたまって並び替えられないのがわかりません。どういったことが考えられるでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excelの表の並び替えについて教えて下さい。
Excelの表の並び替えについて教えて下さい。 Excelを使って顧客名簿を作っています。 1行目に題目を固定しており、その中に「氏名」として2行目以降に顧客名を入力していっています。題目には10項目ほどあり、現在行数は1400程です。 並び替え機能を使い、あいうえお順に並び替えたいのですが、バラバラになりきれいになりません。 手順は並び替えアイコン→ユーザー設定の並び替え→優先する順位として氏名を選択しています。 どういった原因が考えられるでしょう? ご鞭撻よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2003のピポットテーブルについて
エクセル2003のピポットテーブルについて はじめまして 元データはあいうえお順になっているのですが、 エクセルのピポットテーブルで作った表で、 列、行のリストの名前をあいうえお順にするには、 セルの枠をドラッグして並び替えするという 手作業でしかできないのでしょうか? ネット調べましたが、それしか見つけられませんでした。 ご存知の方、 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Excelでの並び替え
Excelの5列の表があります。 この表のデータの並び替えをしたいのですが、3列目は計算式が入っているので、そのままで並び替えをしたいのですが、良い方法を教えて下さい。
- 締切済み
- Excel(エクセル)
- エクセルの並び替えについて
前略 エクセルを活用して名簿を作成しました。名簿の名前を他のエクセル表に連動させて表示させ、その名前の横から個人データを入力したいと思っています。 名簿に新しく人名を追加した場合等、名簿の方で並び替えを実行するのですが、個人データを入力する他のエクセル表では名前だけの並び替えが実行されてしまい、個人データと名前が連動しません。 名簿データの並び替え実施と同時に他のエクセル表も個人データを伴って並び替えできる方法はありますでしょうか? よろしくご教示ください。
- ベストアンサー
- オフィス系ソフト
- エクセル 行の並び替え
エクセルでの 行の並び替えの方法で質問があります 多数行のデータの 任意の行同士の並び替え(例えば150行目と450行目を入れ替える)に ついてですが、今私は、そのような場合、それぞれ 150行目と450行目のデータをそれぞれ コピーし 挿入したあと 古いデータを削除するという方法で行っています。 これで 入れ替えはできるのですが、入れ替えるデータがたくさんあるときは 時間がかかって困っています。 ほかに もう少し簡単に行の入れ替えを行う方法はあるのでしょうか?あれば 是非教えてください。 初心者なので ごく基本的なご質問で恐縮ですが 宜しくお願い致します
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございます。マクロは一度も使ったことがなかったのですが、少し調べてみましたところ、設定さえしてしまえばボタン一つで複雑な操作ができる便利な機能ということをはじめて知りました。実際使用した感じでは、処理の負担が大きくてフリーズしやすいとか、失敗すると元に戻せないとか、気を付けるべき点はあるのでしょうか?