• ベストアンサー

エクセル セル内並び替え その後 セル同士並び替え

お世話になります。 エクセルの並び替えについてです。 セル内で並び替えをして、さらにセル同士で並び替えをすることは 可能でしょうか? (添付画像を参照してください) ※行数が多いので、手動で並び替えをしないことを前提とさせてください。 基本的な質問になるかと思いますが、 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>基本的な質問になるかと思いますが 基本は一つのセルに(並び替えが必要となるような)複数のデータは入れないことです。 セル内に3つの日付が入っているとして =TEXT(SMALL(MID(A1,{1,12,23},10)*1,1),"yyyy/mm/dd")&CHAR(10)& TEXT(SMALL(MID(A1,{1,12,23},10)*1,2),"yyyy/mm/dd")&CHAR(10)& TEXT(SMALL(MID(A1,{1,12,23},10)*1,3),"yyyy/mm/dd") 下へオートフィル コピーして 形式を選択して貼り付け ●値 昇順で並び替え

bigbigman
質問者

お礼

シンプルな方法ですね。 解決しました。 ありがとうございました☆ お盆を挟んでしまい、お礼が遅くなってしまいました(≧≦)

その他の回答 (4)

noname#204879
noname#204879
回答No.5

[No.2補足]へのコメント 》 列がA以外にも複数行あり、この図のようにA、B、Cというように 》 行を列に置き換えるということはできない それを想定して、私が同じシートを使用していないことを理解すべきです。 Sheet4 の右側(最終結果)を[コピー]して、それを Sheet1 のA列に[値の貼り付け]を行えば済むことでは? なお、貴方の質問は[並び替え]の「基本的なこと」を逸脱しています。

bigbigman
質問者

お礼

返事が遅く成りましたが、 ご協力ありがとうございました☆

bigbigman
質問者

補足

確かにおしゃる通り、逸脱しているのかもしれません。

  • MASUKUBO
  • ベストアンサー率22% (4/18)
回答No.3

お示しの表がA1セルからA3セルにあるとします。 入力されている日付はいずれも文字列になっていますのでこれをシリアル値に変えることがます初めに必要なことでしょう。 A1セルからA3セルを選択してから「データ」タブの「区切り位置」をクリックします。 表示の画面で「スペースによって…」にチェックをして「次へ」 日付と日付の間のスペースにカーソルを移しクリックしたのちに「次へ」 「列のデータ形式」では「日付」にチェックをしてから右側で「YMD]を選択します。 「表示先」を$A$1から$B$1に変更します。 日付にする操作は三つに区切られたそれぞれの列について行います。 最後に「完了」をクリックします。 これでシート状のB1セルからD3セルの範囲に日付が表示されますね。 そこで作業列としてEおよびF列を使います。 E1セルには次の式を入力してE3セルまでオートフィルドラッグします。 =MIN(B1:D1) F1セルには次の式を入力してF3セルまでオートフィルドラッグします。 =TEXT(SMALL(B1:D1,1),"yyyy/mm/dd")&CHAR(10)&TEXT(SMALL(B1:D1,2),"yyyy/mm/dd")&CHAR(10)&TEXT(SMALL(B1:D1,3),"yyyy/mm/dd") G列にお求めの表を表示させるとしてG1セルには次の式を入力してG3セルまでオートフィルドラッグします。 =INDEX(F$1:F$3,MATCH(SMALL(E$1:E$3,ROW(A1)),E$1:E$3,0)) なおG列については「セルの書式設定」の「配置」のタブで「折り返して全体を表示する」を選択します。列の幅も十分にとってください。

bigbigman
質問者

お礼

区切り位置を利用する方法は使えると思います。 ただ、入力情報によってうまくいったり、いかなかったりするケースがありました。 丁寧な説明ありがとうございます。

noname#204879
noname#204879
回答No.2

添付図参照 Sheet2!A1: =MID(Sheet1!$A1,(COLUMN(A1)-1)*10+COLUMN(A1),10)+0 Sheet3!A1: =SMALL(Sheet2!$A1:$C1,COLUMN(A1)) Sheet4!A1: “折り返して全体を表示する”に書式設定       =TEXT(Sheet3!A2,"yyyy/mm/dd")&CHAR(10)&TEXT(Sheet3!B2,"yyyy/mm/dd")&CHAR(10)&TEXT(Sheet3!C2,"yyyy/mm/dd")       この結果を添付図の Sheet4 に左側に示す 最後に Sheet4 のA列を昇順に[並べ替え]       この結果を添付図の Sheet4 に右側に示す

bigbigman
質問者

補足

図がわかりやすくて素晴らしいです。 ありがとうございます。 ただし、列がA以外にも複数行あり、この図のようにA、B、Cというように行を列に置き換えるということはできない制約があるのです。 その説明が不足していました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 1個のセル内に入っている日付が、9つまでである場合に対応している方法です。(10以上の日付が1個のセル内に存在している場合には、正しく並べ替える事が出来ません)  今仮に、元データがSheet1のA列に並んでいて、Sheet3を作業用Sheetとして用いて、Sheet2のA列に並べ替えた結果を表示するものとします。  まず、Sheet3のC1セルに次の数式を入力して下さい。 =IF(AND(OR(ISNUMBER(Sheet1!$A1),ISNUMBER(FIND(CHAR(10),Sheet1!$A1))),COLUMNS($C:C)<=LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))+1),REPLACE(LEFT("0"&Sheet1!$A1,FIND("゛",SUBSTITUTE(Sheet1!$A1&CHAR(10),CHAR(10),"゛",COLUMNS($C:C)))),1,FIND("゛",SUBSTITUTE(CHAR(10)&Sheet1!$A1,CHAR(10),"゛",COLUMNS($C:C))),)+0,"")  次に、Sheet3のC1セルをコピーして、Sheet3のD1~K1の範囲に貼り付けて下さい。  次に、Sheet3のA1セルに次の数式を入力して下さい。 =IF(ISNUMBER($C1),MIN(OFFSET($C1,,,1,LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))+1)),"")  次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF($A1="","",TEXT($A1,"yyyy/mm/dd")&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<1,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,2),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<2,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,3),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<3,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,4),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<4,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,5),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<5,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,6),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<6,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,7),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<7,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,8),"yyyy/mm/dd"))&IF(LEN(Sheet1!$A1)-LEN(SUBSTITUTE(Sheet1!$A1,CHAR(10),))<8,"",CHAR(10)&TEXT(SMALL($C$1:$K$1,9),"yyyy/mm/dd")))  次に、Sheet3のA1~K1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(ROWS(A$1:A1)>COUNT(Sheet2!$A:$A),"",VLOOKUP(SMALL(Sheet2!$A:$A,ROWS(A$1:A1)),Sheet2!$A:$B,2,FALSE))  次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。  これで、並べ替えた結果がSheet2のA列に表示されます。

bigbigman
質問者

お礼

ご教授ありがとうございます。 なるべくシンプル方法でいけたらと思っていました。 少し、コード?が長いと思いましたが、 可能性の一つを教えていただいて、感謝しています。

関連するQ&A

  • エクセルの並び替え (セルの色を除いて)

    エクセルの並び替えにつきまして質問させて頂きます。 入力の際見やすいように一行おきに薄くグレイにしています。 この表で並び替えをしますと、行の色も並べ替えられて白の行が続いたり、薄いグレイの行が続いたりします。 この様な場合、「セルの書式」のセルの色だけ移動せずに並べ替えをすることは可能でしょうか? 可能でしたら、手順を是非ご教授下さい。 よろしくお願いいたします。

  • エクセルの並び替えで、タイトル行があるときとセル結合があるときにうまくいかない。

    エクセルのデータ並び替えで2点質問がありますので、よろしくお願いいたします。 エクセル2007とエクセル2003で実行してみましたが、結果は同じでした。 1.並び替えをする際に、先頭行をタイトルとして認識させると思うのですが、タイトル行が2行とか3行ある場合にはどうすればいいでしょうか? 先頭行以外がデータとして認識されてしまい、一緒に並び替えされてしまいます。 2.並び替えをしたくてもデータ中にセルの結合をしていると並び替えしてくれないようです。実際の現場ではセルの結合をしている表は結構あると思うのですが、セルの結合があるとやはり並び替えはできないのでしょうか?

  • 結合したセルの並び替え(エクセルVBA)

    いつもお世話になっております。 エクセルVBAについてお尋ねします。 仕事でエクセルによって、各担当者ごとの業務報告書を作成しております。 仕様を簡単に説明させていただくと。 Sheet2以降に各担当者ごとの業務報告書があり、その集計をSheet1の総括にて行っております。 各担当者のシート様式は、日付ごとにAAA項目、BBB項目、CCC項目等の項目があり、それぞれに対して担当者が記載していくようになっております(添付ファイル参照) 総括のシートも様式は担当者の様式と同じです。 VBAによって、Sheet2以降の項目を総括に転記するところまでは出来たのですが(ちょうど添付ファイルのように日付がランダムに並んでいる状態です) この後の、並び替え作業の方法が分かりません。セルの結合を行っている箇所もあるのでSortも出来そうに無いですし・・・。 現在は、添付ファイルのようにA列に日付順の順位を表記した状態で止まっております。 並び替えの方法をご指導願います。 また、並び替えが完了した後で、重複する行(添付ファイルの4月2日の箇所)を削除する方法があれば、一緒にご指導をお願いいたします。 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • excelの並び替え

    excelで以下のように並び変えをしたいのですがご存知でしたら教えてください。 並び替え前 Aセル    Bセル 1      1 3      2 5      3 2      4 4      5 7      6 6      7 並び替え後 Aセル    Bセル 1      1 3      3 5      5 2      2 4      4 7      7 6      6 つまり、左のセルをある法則で並び変え、右のセルは法則とは関係なしに左のセルと同じ並びに変えたいです。

  • 空白セルのあるエクセル表の並び替え

    空白セルのあるエクセル表の並び替え エクセル2002を使用しています。 エクセルの表で空白セルがたくさんあるのですが、 並び替えをしようとすると、行全体ではなく、行の一部しか並び変わってくれません。 空白行も含めて、行全体を並び替えるようにする方法はありますでしょうか? 宜しくお願い致します。

  • Excelでの並び替えについて。

    Excelでの並び替えで困っています。 現在、行に日付、列に商品名を入力し、その間に販売個数を入力し管理しています。 入力はしやすいのですが、データとして扱う場合に検索等がしにくいので 日付、商品名、個数を1行に並び替えしたいと思っています。 個数が多いため、手動で全て行うのは不可能に近いです。 関数で行う事ができれば良いのですが、何か方法がありますでしょいうか。 できれば、個数が空白のセルは無視して、上に詰めて並び替えができれば理想です。

  • エクセルの並び変えで、空白セルを一番上にもってくる方法を教えてください。

    いつもこちらで大変お世話になっています。 エクセルで、ある列を対象に並び替えをする時、空白セルを一番最初にもってきたいのです。 ユーザー設定リストに登録する時に、どのようにしたら良いのでしょうか? すみませんが教えてください。 よろしくお願いします。

  • エクセルの並び替えについて

    こんにちは、komo-moと申します。 エクセルの表作っていて「昇順で並び替え」というのをやりたいのですが、「この操作には同じサイズの結合セルが必要です」と注意が出て並び替えできません。 他の表でできる物もありますし、出来ない物もあります。 きっと初歩的なことなのでしょうが分かりません。どうして並び替えできるものとできない物があるのでしょうか? また、どうしたら並び替えが出来るようになるのか教えていただけないでしょうか? よろしくお願いします。結構困ってます。

  • エクセル 並び替え

    初めて利用させていただきます。 エクセルでデータの並び替えを しようとしたところ、「この操作には、同じサイズの 結合セルが必要です」というメッセージが表示され 並び替えができません。このメッセージの意味が 分からないのと、どのようにすればすれば良いのか 分かりません。教えていただければ幸いです。 よろしくお願いいたします。

  • エクセル 並び替え&画像

    基本となるファイルには シート1の上部に画像がありその下に表があります。 それをシート2の上部に表、画像を表の下というふうに並び替えを行いたいです。 ・並び替え ┏━┳━┳━━━━━┓   ┏━┳━┓ ┃1┃A┃あいうえお┃   ┃1┃A┃ ┃1┃A┃かきくけこ┃ ⇒ ┃2┃B┃ ┃3┃C┃さしすせそ┃   ┃3┃C┃ ┃2┃B┃たちつてと┃   ┃4┃ ┃ ┃5┃D┃なにぬねの┃   ┃5┃D┃ ┃5┃D┃はひふへほ┃   ┗━┻━┛  ┗━┻━┻━━━━━┛  右の表(シート1)を左の表(シート2)のように並び替えがしたいです。 1列目の数字を基準に並び替えるのですが、 飛んでる数字を表示して順に並べたいのです。 3列目以降はいりません。 通常は約50列、約30行あるのですがこれくらい小さいものの応用だと思い、 この小さな表で質問させていただきました。 ・画像の移動 シート1のセルA1~セルE5の大きさの画像があるとします。 この画像をシート2のセルC10~E13に移動して それに合わせて大きさも変更したいです。 最終的にはマクロを組むところまでできるとうれしいのですが、 できる範囲で教えてください、お願いします。

専門家に質問してみよう