• ベストアンサー

エクセルでの並べ替え

エクセル2000の質問です。 同じシート内に2つの表があります。 13桁のJANコードと商品名が並んだ表です。 2つとも順番がバラバラな上に片方の表にしか ないものもあります。 その2つの表をJANコード順に並べたいのです。 1バナナ  1バナナ 3りんご  2みかん こんな感じの表です。実際は13桁の番号です。 1バナナ  1バナナ 2     2みかん 3りんご  3 こういう風にしたいです。データは2000件ほどあります。 よろしくお願いします。

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

  • ベストアンサー
  • zenjee
  • ベストアンサー率47% (50/106)
回答No.5

 既に他の方の良回答も出ていますが、まだ回答を締め切っておられないし、せっかく補足質問にお答えいただいた手前全く回答しないのも無責任のような気がしますので、稚拙な方法で気が引けますが、参考までに私なりの回答をさせていただきます。  現データが次のとおりとします。(見出し行はここでは省略します。)    A  B    C   D 1   7   柿     5   リンゴ 2   4   パイン  10   栗 3   5   リンゴ   8   バナナ 4   10   栗     7   柿 5   9   梨     3   いちご 6   1   みかん   6   すいか 7   2   ぶどう   2   ぶどう 8            1   みかん 9 10 1、B列及びD列の右にそれぞれ3列の作業列を挿入します。現データのCD列は一旦FD列に変わります。 2、C1に次の式を入力して最下行までコピーします。 =IF(COUNTIF($F:$F,A1)=0,2,1) 3、H1に次の式を入力して最下行までコピーします。 =IF(COUNTIF($A:$A,F1)=0,3,1) 4、A1:C7を選択し、C列を最優先、降順にして並べ替えます。 5、F1:H8を選択し、H列を最優先、降順にして並べ替えます。 6、A:H列を選択し、値のみコピーで計算式を削除します。  注:余計なお節介かもしれませんが、値のみ貼り付けの際は、あらかじめツールバーに編集コマンドの「値の貼り付け」ボタン(□の中に12が入っているもの)を置いておくと便利です。 7、A列の空欄最上行のA8に次の式を入力し、C列の答が出なくなる行(この場合、A8:C11)までプルダウンコピーます。 =IF($H1=3,F1,"") 8、F列の空欄最上行のF9に次の式を入力し、H列の答が出なくなる行(この場合、F9:H11)までプルダウンコピーます。 =IF($C1=2,A1,"") 9、A:H列を選択し、値のみコピーで計算式を削除します。 10、A1:C10を選択し、A列を最優先、昇順にして並べ替えます。 11、F1:H10を選択し、F列を最優先、昇順にして並べ替えます。 12、D1に次の式を入力しコピー、D1:E10までペーストします。 =IF($C1=3,"",A1) 13、I1に次の式を入力しコピー、I1:J10までペーストします。 =IF($H1=2,"",F1) 14、A:J列を選択し、値のみコピーで計算式を削除します。 15、A:C列及びF:H列を選択し、削除します。  以上で完了ですが、実際には列数がもっと多いとのことですから、挿入・削除の列数や計算式のペースト範囲も多くなり、かなり複雑になるかも知れません。  またやり方自体も幼稚というか手数も多く、決してほめた方法とは言えませんが、他の方の答を知る以前にもしやれといわれたら、私のレベルでは多分こういう方法しか出来なかっただろうな、という意味で掲載させていただきました。  答の良し悪しは別として一つの教材としてご覧いただければ幸いです。

prinmint
質問者

お礼

回答ありがとうございます!(返信が大変遅くなり申し訳ございません)とても、親切に丁寧に答えていただきまして、本当にありがとうございます。 (形式を選択して貼り付け、の件は知らなかったので、それもとても参考になりました。)数式の方は、一度では理解できず、悪戦苦闘?しましたが、細かく答えていただいたおかげで、うまくいきました。ありがとうございました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 これはExcelで十分ですね。統合を使ったらよいと思います。 (本来は、JANコードと品名がいっしょになっているというのは、疑問ですが、「統合」機能の場合は、そのほうが便利です。)  A   B   C   D 品名     品名 1バナナ   1バナナ 3りんご   2みかん     ↓ 片方に、ダミーの数字を入れます。  A   B   C   D 品名     品名 1バナナ   1バナナ 1 ←ダミーの数字を入れた 3りんご   2みかん 1     ↓ 最初に、統合のコピー先にセルポインタをおきます。 ここでは、『G1』とします。 データ-統合 集計の方法(F)「合計」 統合元範囲(R) Shee1!$A$1:$B$4000   [追加]    ↓ 同様に、 Shee1!$C$1:$D$4000   [追加] 統合の基準 「左端」    ↓   [OK]をクリック -------------------- G1から全てがまとまりますので、  データ-並べ替え ●タイトル    後は、 セル「I2」に、=IF(H2,G2,"") という式を置いて、 この式をコピーし、H4000 まで、貼り付けます。 (貼り付け方は、Ctrl + C →そのままの状態で、 シートの左端[名前ボックス]「I2」を「I4000」と書き換えて、 シフトを押しながら、[Enter] → Ctrl + V と押すと、一度にコピーできます。) コピーされた後、範囲が選択された状態のまま、再び、Ctrl + C →右クリック→形式を選択して貼り付け→値(V) で、定数化されます。 後は、補助列を取り去れば出来上がりです。 なお、この手のものは、文字情報だけでは伝わらないせいなのか、あまり採用されるケースが少ないような気がします。本来は、最初から、Accessを使うか、マスターを作って、マスターから引き出すような方法のが良いのだと思います。

prinmint
質問者

お礼

回答ありがとうございます。お礼が大変遅くなり申し訳ございませんでした。私の説明不足で、ご迷惑をおかけしたのですが、エクセルの統合という機能は全然知りませんでしたので、大変参考になりました。本当にありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Sheet1とSheet2にデータがあるとします。 第3のシートShhet3を考えます。 Sheet1のデータ全部をコピーしてSheet3へ貼り付けます。 その最終行の次以下にSheet2の全データを貼り付けます。 Sheet3のデータのない列で(仮にC列としてC1に) =IF(COUNTIF($A$1:A1,A1)>1,1,"") と入れて最終行まで式を複写します。 ダブった行は1が入ります。 A:Cを範囲指定して、C列+A列でソートします。A列はJANコード列とします 下の方の行に1の行が集まります。 1の行の全体列を範囲指定してDELETEを押す。 これはデータの増減に対し、即時反映性がありませんが、ソートそのものが そういうものですので、そこまでのものです。 関数だけでも、やれそうですが複雑な式になる予想。

prinmint
質問者

お礼

回答いただきまして、ありがとうございます。お礼が大変遅くなり、申し訳ございませんでした。私の説明不足で、言いたいことが伝わっていなかったのですが・・今回ご回答いただいたことも、とても参考になりました。ありがとうございました。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

1、JANコードと商品名はもちろん別の列(コード→A列、商品名→B列のように)ですよね。 >片方の表にしかないものもあります。 2、例ではコードだけあって商品名がないようになってますが、コード名は両方にすべて存在するのでしょうか。 それともコード名・商品名とも片方にしか存在しないということもあるのでしょうか。 3、それと双方の表を並べ替えた結果、同じコード及び商品名が同じ行に並ぶようにしたいということでしょうか。 4、並べ替えは1回の操作で行いたいということでしょうか。(これだけは通常の操作では出来ないと思いますが……。)  コードが双方の表にすべて存在し、操作は2回に分けてよい、ということなら別々に選択範囲をクリックしてソートすれば簡単なことなので、ご質問の趣旨がいまいち分かりません。補足説明をお願いします。

prinmint
質問者

補足

説明不足ですみませんでした。。 JANコードと商品名はセットになっています。 JANコードがなければ商品名もありません。 それと、JANコード、商品名、の他に10列くらい単価や売価など横に並んでいます。それらの2つの表は、単価、売価が違います。同じなのはJANコードだけです。商品名も表示が微妙に違います。その2つの表をJANコードを基準に並べ替えて、こっちの表では単価がいくら、もう一方の表では単価がいくら、と見比べたいのです。もちろん操作は1回でなくて全然いいです。私がわからないのは、 1つ目の表に存在する商品の列が、隣の2つ目の表に空白の列ができないということです。表を同じシートに2つ横に並べて、ウィンドウを固定して、見比べたいのです。 1りんご  2バナナ 2バナナ  3みかん 3みかん ではなくて、 1りんご  空白 2バナナ  2バナナ 3みかん  3みかん と並べたいのです。本当にややこしいですが、よろしくお願いします。

  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

この結果は、データベースで言うところのフルジョインですね。 アクセスを使えばすぐ出来ますが、アクセスを使用するのはありですか?

prinmint
質問者

補足

補足です。アクセスというソフトが入っていないので、エクセルで考えています。

関連するQ&A

専門家に質問してみよう