• ベストアンサー

データの並び替えについて

添付図左【元データ】のような系列ごとに並んだデータ(1つの系列に何種類かデータがあります)を、右図の【変更後】のように種類順で並び替えるにはどのようにするのが良いですか? 教えてください。 EXCEL2010とEXCEL2003を使用しています。 よろしくお願いいたします。

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

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

 回答番号:ANo.2です。  今仮に、元データの表と、変更後の表が存在しているシートはSheet1であるものとし、Sheet2のA列とB列を作業列として使用するものとします。  又、種類を表す文字列は、同じものが複数現れる事は無いものとします。  まず、Sheet2のA1セルに次の数式を入力して下さい。 =IF(Sheet1!B5="","",VALUE(SUBSTITUTE(Sheet1!B5,"-",)))  次に、Sheet2のA1セルをコピーして、Sheet2のA1~B10の範囲に貼り付けて下さい。  次に、Sheet1のF5セルに次の数式を入力して下さい。 =IF(ROWS($5:5)>COUNT(Sheet2!$A:$B),"",TEXT(SMALL(Sheet2!$A:$B,ROWS($5:5)),"0-0-0"))  次に、Sheet1のG5セルに次の数式を入力して下さい。 =IF($F5="","",INDEX($A:$A,MATCH($F5,OFFSET($B:$B,,COUNTIF($C:$C,$F5)),0)))  次に、Sheet1のF5~G5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。  以上です。  尚、上記の数式は、種類欄に同一の文字列が複数存在する場合や、元データの表の幅が3列を上回る様な場合には、対応しておりませんから、もし、その様な事も有り得る場合には、補足等で御知らせ下さい。(元データの表が15行目以下にまで続いて行く場合には、単純にSheet2のA1セルのコピーを貼り付ける範囲を、下方に向かって延長するだけで対応出来ます)

izavera
質問者

補足

投稿ありがとうございました。 上記のとおりシートに入力してみましたが、F5の列のセル・G5の列のセルともに(変更後の表すべて)空白になってしまいます...。 あと、実際に使用するときには元データの表が10列程度に設定しています。 申し訳ありませんが、解決方法があればどうか教えていただけないでしょうか。 よろしくお願いいたします。

その他の回答 (4)

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

ANo: 3の数式は、あくまで3列の表に対応しているもので、10列の表には対応してはおりませんし、ちょっとした応用だけで、対応させる事が可能となるとも思えません。  実際に使用する際に、元データの表が、何という名前のシートに存在していて、データが入力されている部分は、最大で何列の何行目から何列の何行目にかけての範囲なのかと言う事と、変更後の表が、何という名前のシートに存在していて、何列の何行目から、並べ替え結果を表示させれば良いのかが不明なため、 今仮に、Sheet1のA4セルに「系列」と入力されていて、Sheet1の5行目以下の、A列には系列の名前、B列~K列の10列には種類の名前が入力されていて、Sheet3のA列~J列を作業列として使用して、Sheet2のA列とB列の5行目以下に、変更後の表を表示するものとします。  まず、Sheet3のA1セルには、ベストアンサーにおいて、Sheet2のA1セルに入力したものと同じ数式である =IF(Sheet1!B5="","",VALUE(SUBSTITUTE(Sheet1!B5,"-",))) という数式を入力して下さい。  次に、Sheet3のA1セルをコピーして、Sheet3のA1~J1の範囲に貼り付けて下さい。  次に、Sheet3のA1~J1の範囲をコピーして、Sheet3の2行目以下に貼り付けて下さい。  次に、Sheet2のA5セルに次の数式を入力して下さい。 =IF(ROWS(A$5:A5)>COUNT(Sheet3!$A:$J),"",TEXT(SMALL(Sheet3!$A:$J,ROWS(A$5:A5)),"0-0-0"))  次に、Sheet2のB5セルに次の数式を入力して下さい。 =IF($A5="","",INDEX(Sheet1!$A:$A,MATCH($A5,OFFSET(Sheet1!$A:$A,,SUMPRODUCT((COLUMN(Sheet1!$B$4:$K$4)-COLUMN(Sheet1!$A$4))*(COUNTIF(OFFSET(Sheet1!$A:$A,,COLUMN(Sheet1!$B$4:$K$4)-COLUMN(Sheet1!$A$4)),$A5)))),0)))  次に、Sheet2のA5~B5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。  これで、元の表がA列~K列の範囲内にある場合には対応できます。  尚、元の表がK列を超えて、制限無く右側に延長する可能性がある場合や、元の表を変更する際に、セルの切り取りや削除や挿入が行われる可能性がある場合には、数式を以下の様に変更されると良いと思います。  但し、Sheet2のB5セルの数式は、行数に比例して計算時間が長くなります。  又、Sheet1の元の表以外の部分には、種類の部分名前と同じ内容の文字列データが存在したりはしない様にして下さい。(例えば、元の表と変更後の表を1つのシートに纏めたりはしないで下さい) 【Sheet3のA1セルの数式】 =IF(OFFSET(Sheet1!$A$4,ROWS($A$1:A1),COLUMNS($A$1:A1))="","",VALUE(SUBSTITUTE(OFFSET(Sheet1!$A$4,ROWS($A$1:A1),COLUMNS($A$1:A1)),"-",))) 【Sheet2のA5セルの数式】 =IF(ROWS(A$5:A5)& gt;COUNT(OFFSET(Sheet3!$1:$1,,,MATCH("゛",Sheet1!$A:$A,-1)-ROW(Sheet1!$A$4))),"",TEXT(SMALL(OFFSET(Sheet3!$1:$1,,,MATCH("゛",Sheet1!$A:$A,-1)-ROW(Sheet1!$A$4)),ROWS(A$5:A5)),"0-0-0")) 【Sheet2のB5セルの数式】 =IF($A5="","",INDEX(Sheet1!$A:$A,SUMPRODUCT(ROW(INDIRECT(ROW(Sheet1!$A$4)& amp;":"&MATCH("゛",Sheet1!$A:$A,-1)))* (COUNTIF(OFFSET(INDIRECT("Sheet1!1:1"),ROW(INDIRECT(ROW(Sheet1!$A$4)&":"&MATCH("゛",Sheet1!$A:$A,-1)))-1,$A5)))))

izavera
質問者

お礼

kagakusiki様 本当にありがとうございます。このような複雑な関数になるとは思っていなくて...。 元データの表をkagakusikiさんに教わった数式に合うように、『3列の表に加工するか...と』浅はかな考えをしておりました。 また、変更の場合の数式まで教えていただけて...ただただ感謝です!! 上記のとおり入力してみたら上手くいったので、実際のデータでチャレンジしてみようと思います。 長い間時間を取らせてしまい申し訳ありませんでした。 今後のご活躍を期待しております。       izavera より

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

>上記のとおりシートに入力してみましたが、F5の列のセル・G5の列のセルともに(変更後の表すべて)空白になってしまいます...。  ANo.3の数式は、投稿前に動作を確認済みで、再チェックも致しましたが、投稿時の入力ミスも見つける事が出来ませんでした。 >あと、実際に使用するときには元データの表が10列程度に設定しています。 と言う事は、元データの表は少なくとも、A列~J列の範囲を占めていて、変更後の表もF4~G14の範囲には無い訳ですね。  おそらく、その辺りが表示されない原因だと思われますので、元データの表が、何という名前のシートに存在していて、データが入力されている部分は、最大で何列の何行目から何列の何行目にかけての範囲なのかと言う事と、変更後の表が、何という名前のシートに存在していて、何列の何行目から、並べ替え結果を表示させれば良いのかを、御知らせ願います。

izavera
質問者

お礼

ただただ...ありがとうございました。 私一人では全然解決できなくて...。 "kagakusiki"さんの今後の活躍を祈っています。 お世話になりました。

izavera
質問者

補足

ありがとうございます。 おかしいな...と思いつつ、Sheet2のA1に"kagakusiki"さんの数式をコピー後、貼り付け直してみたら今までTRUEと表示されていたものが数値(115 etc...)になりました。どうやら貼り付けの形式を間違えていたようです。 その後、Sheet1のB5~C14の範囲の入力文字が大文字で入力されていたので(投稿用にあわてて入力していました)小文字に入力しなおしました。 すると...成功しました!! ただ私の入力ミスだったようです。たくさん時間を取らせてしまい申し訳ありませんでした。 実際のデータは、種類のセルが10個(ex.B5~K5)に設定しています。 "kagakusiki"さんに教えていただいた数式をよく理解して、自分で設定してみようと思います。 本当に...どうもありがとうございました。

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

 添付されている写真が小さ過ぎる上、ピンボケであるため、どの様なデータが入力されているのかが、写っていません。  そのため、どの様に並べ替えているのかも判別出来ませんので、このままでは誰にも回答する事が出来ません。  ですから、以下の様な形式で、各セルに、どの様な文字列や数値が入力されているのかを、補足欄に記入して頂く様、御願い致します。(補足のやり方は、ログインを済まされてから、回答の近くにある[補足する]ボタンをクリックして下さい) A列 A4=■■ A5=○○ A6=○○ A7=○○ A8=○○ A9=○○ A10=○○ A11=○○ A12=○○ A13=○○ A14=○○ B列 B4=■■ B5=○-○-○ B6=○-○-○ B7=○-○-○ B8=(空欄) B9=○-○-○ B10=○-○-○ B11=(空欄) B12=○-○-○ B13=○-○-○ B14=(空欄) C列 C4=■■ C5=(空欄) C6=(空欄) C7=○-○-○ C8=(空欄) C9=(空欄) C10=○-○-○ C11=(空欄) C12=(空欄) C13=○-○-○ C14=(空欄) F列 F4=■■ F5=○-○-○ F6=○-○-○ F7=○-○-○ F8=○-○-○ F9=○-○-○ F10=○-○-○ F11=○-○-○ F12=○-○-○ F13=○-○-○ F14=○-○-○ G列 G4=■■ G5=○○ G6=○○ G7=○○ G8=○○ G9=○○ G10=○○ G11=○○ G12=○○ G13=○○ G14=○○

izavera
質問者

補足

初めての投稿で使用方法がよくわからず...大変失礼いたしました。 詳細は以下の通りです。 A列 A4=系列 A5=A1 A6=A2 A7=A3 A8=A4 A9=A5 A10=A6 A11=A7 A12=A8 A13=A9 A14=A10 B列 B4=種類 B5=1-1-5 B6=1-2-5 B7=1-1-4 B8=(空欄) B9=1-1-1 B10=1-1-2 B11=(空欄) B12=1-2-4 B13=1-2-2 B14=(空欄) C列 C4=種類 C5=(空欄) C6=(空欄) C7=1-2-1 C8=(空欄) C9=(空欄) C10=1-1-3 C11=(空欄) C12=(空欄) C13=1-2-3 C14=(空欄) F列 F4=種類 F5=1-1-1 F6=1-1-2 F7=1-1-3 F8=1-1-4 F9=1-1-5 F10=1-2-1 F11=1-2-2 F12=1-2-3 F13=1-2-4 F14=1-2-5 G列 G4=系列 G5=A5 G6=A6 G7=A6 G8=A3 G9=A1 G10=A3 G11=A9 G12=A9 G13=A8 G14=A2 どうぞよろしくお願いいたします。   (izabera)

回答No.1

コピーもしくはカットをして、順番にペーストしていけばOkです!

関連するQ&A

  • Excelにおける数値の並び替え

    添付図に示すように、左側に縦に並んだ系列A~系列Eの5種類のデータを 右側のように横に並び替える方法を教えてください。 この例では各系列のデータは100個としていますが、実際には数万データあります。 excel2002を使用しています。 宜しくお願いいたします。

  • 2つのデータ系列に対する近似直線

    エクセルで、添付図のように、 2つのデータ系列に対していっしょくたんに近似直線をひくにはどうしたらいいでしょうか? 近似のもとになっている点のマークはデータ系列ごとに、添付図のように異なるマークを使いたいのです。 ご存じでしたら教えていただけると助かります。

  • EXCEL 2013デPIVOT内データ並び替えは

    添付の様に、データ「現地企業名」が現状でA-Zの順で並んでいるものを、逆のZ-Aの順に並び替えるにはどうしたらよろしいでしょうか。つまり、現在最上に来ている「Amada Maquinaria SL」が最後に来るように変更したいのです。 以前のEXCEL2003では簡単に出来たのですが、2013ではどこにその機能があるのかわかりません。 御教示ください。

  • エクセルグラフ 横軸データの入れ替え

    変なタイトルでわかりづらくて大変申し訳ありませんが、 エクセルのグラフで、 縦の棒グラフを使って年間別の売上を作っております。 横軸が、(左)新しい年 ⇒⇒⇒(右)古い年 になってしまいます。 その逆の (左)古い年 ⇒⇒⇒(右)新しい年 にしたいのですが、 (1)データをいじらず、逆にすることは出来ますか? (例えば、系列の順序を変更する時に データ系列の書式設定→系列の順序 ように変更する場所があれば。) (2)やはり、元のデータを並び替えなければならないのでしょうか? 因みに、エクセルのバージョンは、EXCEL 2003 です。 宜しくお願い致します。

  • Excel2007のデータ系列

    Excel2007でグラフのマーカーの種類を変更したいのですが データ系列を右クリックしてデータ系列の書式設定で変えればいいと テキストに載っていたあったのですがデータ系列がどれのことか分かりません。 あちこち右クリックしたのですが分かりませんでした。 データ系列とは画面のどのあたりにあるのでしょうか。 よろしかったら教えてください。

  • ピボットテーブルで何番目のデータかを取得する

    添付図のようなピボットテーブルを作りました。 行系列1が売上月、行系列2が売上日 列系列1が商品グループ、列系列2が商品コード となってます。 ここでE19セルに入っているデータは行系列1の何番目か、列系列1の何番目かを求めることはできますか? 添付図を例にするとE19に入っているデータは 行系列1(売上月)が2017年4月なので4番目、 列系列1(商品グループ)がKなので2番目、を取得したいです。 ちなみに最終的にやりたいことは このピボットを元データにしたグラフで E19に相当する場所のデータラベルを変更したいのですが、 グラフの中で該当データの場所を指定するのに Chart.SeriesCollection(行番号).Points(列番号)と指定するために、行番号、列番号が求めたいです。 エクセル2010

  • エクセルでセルが異なるデータの並び替え

    エクセルの使い方を教えてください。 HP上の表をコピペでエクセルに貼り付けたデーターです。 日付順(新から古い順)に並んだデーターを逆順にしたいのですが、データーが1行と2行に跨っているデーターがあるため、データーの「並び替え」をすると、「この操作には、同じサイズの結合セルが必要です」となります。そりゃ、そうだと思いつつもデーター1件ずつの加工も厳しいので、特別な手法があるのではと思い、お尋ねします。 1行で表示されているデーターは、実際には2行に跨っていますが、セルが結合されているようです。 元データーがエクセルではないため、セルの情報はありません。

  • グラフ上でデータの変更ができるEXCEL以外のソフトを探しています

    お世話になります。 仕事柄、データをEXCELで整理する必要があるのですが、その際にグラフ上のデータ系列をドラッグしてセルの値を変更する作業を行っていました。 EXCEL2003までは問題なかったのですが、EXCEL2007になってからこの「グラフ上の系列をドラッグする」機能が失われてしまい、困っています。 会社の都合上、EXCEL2003がインストールされたパソコンがなくなってしまい、また、ソフトもない状況なので、EXCELの2003と2007を共存させることもできない状況です。 (今月からすべてのPCが新しいものに入れ替わってしまった状況なのです) そこで、上記のような「グラフ上で値を変更できる」ようなEXCEL以外のソフトを探しているのですが、何か良いものはございますでしょうか。 有償・無償は問いません。 データをグラフにして評価する際は、散布図を主に使っています。 データー数は1アイテムで約100~200個程度です。 アイテムによって傾向が違うため、近似曲線を用いることもできません。 誠に恐れ入りますが、ご教授いただきたくよろしくお願いいたします。

  • excel 4象限マトリクスを作成したい

    お世話になります。 会社の上司に添付の様な元データを渡されて、「Excelで4象限マトリクスを作成してほしい」と言われたのですが、やり方がわからず困っています・・。 完成イメージ図は添付の右図のような感じで、分布図の様に結果を点で表示させたいらいしいのですが、当方わからずお手上げ状態です。。 どなたかご教授いただけませんでしょうか。よろしくお願い致します。 環境 Excel2003 WindowsXP

  • Windows7 上のEXCELアイコン変更

    Windows7 でEXCEL2010をインストールしています。そのアイコンを変更したいのですが、方法を教えてください。 XPの時は、ツールからフォルダーオプション、ファイルの種類の詳細設定で変更できましたが、Win7では、その項目が見つかりません。 使用上は問題はないのですが・・・ 添付図のexcel2003(左の図)ファイルもアイコンを2010(右の図)と同じにしたいだけです。 暇な質問に付き合っていただいて申し訳ないですが、宜しくお願いいたします。 .