• 締切済み

エクセル セルの並べ替えを簡単にしたいです!

エクセルでのデータ集計で困っています。 取引先からのデータをフォーマット変換して集計する必要があるのですが、販売部品の並べ替えをマニュアルでやっていて非常に時間がかかります。 データとしては【部品番号】【部品名】【数量】【価格】の4項目が横に並べられています。 欲しいデータは数量が1のみで、同一部品が複数あるときは数量1で数の分羅列した形なのですが、 元データは数量が様々でこれをマニュアルで変換(数量変更+コピペ)するしかありません。 また、それらのデータを部品価格順に並べたいです。 (取引先にデータフォーマット変更お願いすれば・・・と言えばそうなのですがシステム上無理だそうで) サンプルは画像添付の通りです。 どなたかアイデアがある方、知恵をお借りできないでしょうか? 宜しくお願いいたします。

みんなの回答

  • mar00
  • ベストアンサー率36% (158/430)
回答No.4

補足を読みましたが、どこが違うのかがわかりません。 こちらで動作確認もしていますが正しく動作しているようです。 myCol = 5にブレークポイントを設定して実行してみて下さい。 横だった表が数量1のものだけが縦に表示されるはずです。 質問を読み返してみたのですが >元データは数量が様々でこれをマニュアルで変換(数量変更+コピペ)するしかありません。 数量1でないものは1に変えるという事でしょうか。

officebeginner
質問者

お礼

お礼が遅くなりすいません。 解決ができないのでもう一度別の質問を出すことにしました。 ありがとうございました。

officebeginner
質問者

補足

ご協力ありがとうございます。 まずはこちらの解釈違いがありました。「データの項目が2行目A列、データが3行目から始まっているものと仮定」をすっ飛ばしておりました。 実行したところ、部品価格は消えておらず、「部品番号」「部品名」「部品数量」「価格」の4項目がちゃんと残りますが、以下の問題で行き詰っています。 (1)部品が1列に集約される(データ開始の3行目) (2)法則が不明ですが消えてしまうデータがある。 私の最初の説明の「欲しいデータは数量1のみで」というのがややこしく誤解を与えているのですが、データとしては数量が何であろうと必要です。 データ自体は全部品必要なのですが、やろうとしているのは (1)数量1以上の部品は数量1に変更して、その数量分羅列する。  (基板3 = 基板1 基板1 基板1) (2)さらにそれらのデータを価格順に並び替える 説明が下手で申し訳ないですが、私がやりたいのは以下です。 <元データ> 行   列A  B  C  D  E   F  G  H   I   J   K  L 1   A01 基板 1 $10 A02 電源 1 $15 2   (部品なし) 3   A03 ビス  2 $1  A01 基板 1 $10  <欲しいデータ形式> 行   列A  B  C  D  E   F  G  H   I   J   K  L 1   A02 電源 1 $15 A01 基板 1 $10  2   (部品なし) 3   A01 基板 1 $10 A03 ビス  1 $1  A03 ビス  1 $1  行に入っているデータは行を跨いでは動かず、行の中でのみ価格順に並び替えをしたいです。 1は価格が高い順に並び替えられていて、電源($15)→基板($10)の順 2は部品がないのでそのままブランク 3はビスが数量2個なので、これを数量1×数量分の羅列にしたいので、 まずはビス1個のデータが2つ並べて表示されます。 さらにそれらのデータを価格順に並び替えしたいので、 基板($10)→ビス($1)→ビス($1)で3つの部品が入るようにしたいです。 ちなみに、1行あたりの部品種類は最高30(4列×30=120列)で、行は無制限です。(通常は20000から30000行のデータが存在します) 何度も大変申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

データの項目が2行目A列 データが3行目から始まっているものと仮定して Sub Macro1() Sheets("Sheet1").Copy After:=Sheets("Sheet1") Gyou = 3 For i = 5 To Cells(Gyou - 1, Columns.Count).End(xlToLeft).Column Step 4 myRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 If Cells(Gyou, i + 2) = 1 Then Range(Cells(Gyou, i), Cells(Gyou, i + 3)).Copy Destination:=Range("A" & myRow) End If Next i Range("A" & Gyou - 1 & ":D" & myRow).Sort Key1:=Range("D" & Gyou), Order1:=xlDescending Range(Cells(1, 5), Cells(1, Cells(3, Columns.Count).End(xlToLeft).Column)).EntireColumn.Delete myCol = 5 For j = Gyou + 1 To myRow Range("A" & Gyou - 1 & ":D" & Gyou - 1).Copy Destination:=Cells(Gyou - 1, myCol) Range("A" & j & ":D" & j).Cut Destination:=Cells(Gyou, myCol) myCol = myCol + 4 Next j End Sub シートをコピーしてから作成するようになっているのでSheet1の部分を元データのシート名に変更して下さい。

officebeginner
質問者

お礼

お礼が遅くなりすいません。 解決ができないのでもう一度別の質問を出すことにしました。 ありがとうございました。

officebeginner
質問者

補足

ありがとうございます。 使わせていただいたのですが、部品価格が消えていて 部品を使っていない行にも入ってきてしまいます。 色々試してみましたがどこに原因があるのか、分かりません。 お力添え頂けませんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

元のデータは例えば数量2の価格が載っているのに整理された表の数量1の価格が元のデータの数量2の価格となっているのは間違いではないのですか?また、部品が幾つまでについて表の横に並ぶのですか?

officebeginner
質問者

お礼

お礼が遅くなりすいません。 解決ができないのでもう一度別の質問を出すことにしました。 ありがとうございました。

officebeginner
質問者

補足

ご回答ありがとうございます。 分かりにくくてすいません。1個以上入力されている部品の価格はその数だけ数量1で横に並べていき、かつ、全体の並びを部品の価格順にしたいのです。 また、部品は最大30個横に並びます。

全文を見る
すると、全ての回答が全文表示されます。
  • emuancha
  • ベストアンサー率29% (478/1614)
回答No.1

こんにちは。 そんな人のためにVBAがあるのです。文面のようなプログラムであればそんなに難しくはありません。まずは,やりたい事の仕様を整理して決めることです。作り方のこつとしては,ちょこっと小さい機能の仕様で作って,その上に機能追加していくことです。

officebeginner
質問者

お礼

お礼が遅くなりすいません。 出口が見えないのでもう一度別の質問を出すことにしました。 ありがとうございました。

officebeginner
質問者

補足

早速回答いただきありがとうございます。 実はVBAは全く知識がなく、マクロのレコードで何とか・・・という状態です。 VBAのお勉強が必要ですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 複数セルの並べ替えをVBAで楽にしたい

    どなたか知識のある方がいらっしゃいましたら助けてください。 やりたい事は以下の2つです。 ・部品数量が複数(2以上)あるデータを数量1に変更して、その個数分横に並べたい ・数量が1でそろったデータを単価の高い順に並び替えしたい 仕事の中で取引先からのデータを集計しているのですが、10000行くらいあるデータを手作業で変換していて非常に時間がかかって困っています。 データの内容は「部品番号/部品名/数量/単価」が1セットで4つのセルに入力されています。 取引先からのデータは数量が実数量で1だったり2だったりまちまちなのですが、こちらで管理する場合には部品数量を全て1に統一し、複数個あるデータはその個数分同じデータを横並びにしたいです。 (例) ※(部品番号/部品名/数量/単価) 【元々のデータ】 AAA/SCREW/2/\50 ・・・・・ 【変換後】 AAA/SCREW/1/\50 AAA/SCREW/1/\50 ちなみに、部品データは1行に最大30個入力(1セット4つのセルなので、合計120のセル)されています。 また、その数量を1に統一した後、今度はそれらのデータを部品単価の高い順に左から並び替えをしたいです。複数セルをセットで並び替えしないといけないので手作業でやっていて非常に時間がかかっています。 (例) ※(部品番号/部品名/数量/単価) 【元々のデータ】 AAA/SCREW/1/\50 BBB/CABLE/1/\100 CCC/SHAFT/1/\90 ・・・・・ 【変換後】 BBB/CABLE/1/\100 CCC/SHAFT/1/\90 AAA/SCREW/1/\50 ・・・・・ 先月同じ質問を出して数名の方から色々アドバイスを頂いたり参考となるデータを頂いたりしたのですが解決できなかったため今回もう一度出させて頂いております。 このデータ変更だけで数時間かかっているのでどうしても自動でエクセルにやらせたいのです・・・(泣) ちなみに私はVBAがほとんど分からず、マクロにやることをレコードして少しずつ変更しているようなレベルです。 宜しくお願いいたします。

  • Excelの並べ替え

    いつもお世話になっております。 今回はExcelの並べ替えについて質問させてください。 先頭行に (A列)日付(B列)約定NO(C列)会社コード(D列)社名(E列)売上金額 などの項目があり、1行ごとにデータが入ったリストがあります。 (売上のデータはどんどん下の行に追加されていくものとします) 社名は取引先が決まっているので同じ社名の異なるデータが何度も出てきます。 そこで、社名を基準に並べ替えて会社ごとの売上金額の合計をとり、その合計金額の大きい順に並べ替えたいのですが・・・ どうもうまくいきません。 まず、『並べ替え』で会社ごとにまとめてから『集計』で合計を出し、その合計をさらに並べ替える事を思いついたのですが、 この方法だと会社名と合計金額以外のデータが表示されなくなってしまいます。 今回は全てのデータが見えている状態で並べ替えたいのです。 また、A社のデータが5行分、B社のデータが10行分、C社のデータが3行分・・・とあり、それぞれの合計金額の順位が C→B→Aだった場合は上からC社の3行B社の10行A社の5行と言ったように表示させたいです。(各社のかたまりは崩したくない) この場合どのようにしたらうまく並べ替えることが出来るでしょうか? 非表示や印刷範囲外にしてしまえば問題ないので仮の列や行を新たに追加することは可能です。 もしわかる方いましたら教えてください。 ※説明不足で申し訳ありません。不明な点ありましたら補足します。

  • エクセルデータをVBAを使って集計する方法

    エクセルのデータを次のように集計したいのですが、良い方法を教えて下さい。VBAに組み込みたいのですが。 元のデータは次のような項目に分かれています。 (納入日)(契約番号)(取引先)(商品名)(数量)(金額)  納入日毎に1件づつ入力されているのですが、これを、取引先別、商品別に数量と金額を集計したいのです。 集計項目が2項目あるため、ピボットテーブルで集計すると、1件が2行になってしまい、後の加工がしづらいのです。 今のところ、ピボットテーブルで数量と金額を別々に集計して、後でVLOOKUP等の関数を使って表を1つする事を考えているのですが、もっと良い方法をご存知ないでしょうか。

  • エクセルで複数条件の集計

    前に同じような質問があるか探しましたが、ビビッとくるのが探せないので質問します。 エクセルでの複数条件を満たす数値の集計を行いたいのですが、例えば日付、取引先、 品種、数量、単価、金額、とあります。そのデータを取引先別に単価が30円以下の ものを全て品種別に集計したい場合どのようにしたらいいでしょうか? ●データ(データ数は2000-3000位)   A   B  C  D  E  F 1 日付 取引先 品種 数量 単価 金額 2 ***** ○  ピンク  10   50   500 3 ***** ○  レッド  10   30   300 4 ***** △  レッド  10   30   300 5 ***** □  ピンク  10   30   300 6 ***** □  ブルー  10   50   500 7 ***** ○  ブルー  10   28   280 8 ***** △  レッド  10   50   500 9 ***** ○  レッド  10   26   260 ●作りたい集計表 取引先 ○           △        ・・・ 品種  数量 単価 金額  数量 単価 金額 ・・・ ピンク レッド  20   28  560  10  30  300・・・ ブルー 10  28  280            ・・・ という感じです。ちなみにエクセル2000を利用してます。 これまではロータスを使って問い合わせテーブルで30円以下を抽出したあとデータ ベース関数を利用し集計してました。とにかく分かり易く教えていただきたいです。 参考HPなどがあったらそちらも教えていただきたいです。よろしくお願いします。 ちなみにアクセスは持ってません。マクロも簡単なものをロータスで扱ったことが ある程度です。エクセルが主流の世の中ですので、これを機に勉強したいと思います。 こんな私ですが誰か教えてください。よろしくお願いします。

  • CSVのデータ変換ツール

    こんなツールあるのか教えてください。 会社の取引先が多数に及び、その取引先単位で全く異なるCSVフォーマットでデータを送付してきます。毎回社内の統一化されたフォーマットへコピペで取り込んでいるのですが、あまりに非効率的なので便利なツールを探しています。 データは、取引先毎に列の並びが全く異なっていて、明細行が複数に分かれている場合もあり、統一性があまりないため取引先単位で読み込みルールを一度定義し、次回からはツールの使用のみで自動フォーマット変換ができることが望ましいです。Vectorでツールを探してみたのですが、複数行に渡るデータを変換できるツールや、列順を変更できるツールというのは見つかりませんでした。そんなツール存在しない、というのであれば自社で開発するしかないと思うのですが。。。

  • access2003 フォームで絞込んで月次合計

    売上入力クエリ:オートナンバー・日付・部品コード・取引先コード・単価・数量・合計金額 を使って、 「取引先ごとの月次売上(部品別および合計)」をフォーム形式で表示したいと思います。 まず画面上で取引先コード+取引先名(取引先マスターテーブル)のコンボボックスから1社選択すると、その取引先の部品別の売上が月ごとに参照できるようにしたいです。 部品別の売上の参照はクロス集計クエリウィザードを使って実現しましたが、コンボボックスを使って最初に1社のデータを抽出した後にデータを集計する方法がわかりません。 フォーム上にコンボボックスを設置して取引先を選ばせることはできましたが、その後、躓いています。  アドバイスよろしくお願いいたします。

  • エクセル関数

    お世話になります データシートから 集計シートに集計させる関数あれば関数をお教えください *フォーマットが決められているためPVT等は使用できません データシート1 ID|管理番号|使用者番号|数量|日付 01|12E22100|12 |1 |2008/01/01 02|12345678|01 |5 |2008/01/01 03|12E22100|12 |1 |2008/01/01 04|12Y22100|12 |1 |2008/01/01 05|001234T7|015 |4 |2008/01/01 06|12E22100|12 |1 |2008/01/01 集計シート2.xls 管理番号|01|2|3|4|12|015| 12E22100| | | |3 |  | 001234T7| | | | |4 | 12345678|5 | | | | | 上記が結果です 管理番号に対して使用者番号ごとに合計数量を出したいのですが かのうですか? わかるかたよろしくお願いします

  • エクセル 複雑な条件によってセルの色分けをしたい

    画像のようなエクセルのデータサンプルがあります。 シート1に品名(タイプ+商品名) 数量 単価が予め入力されています。 シート2(価格表)には商品名と単価が表示されています。 あい,かき,さしがタイプ abab acac adadが商品名です。 今回の例では、基本次のような単価になっています abab 20 acac 30 adad 40 シート1の判定の欄を次のルールで入力を行いたいのですが、数百行あるデータに対して、どう入力していけばいいでしょうか? 。 基本的には、価格表の単価とシート1の値が同じかどうかをチェックします。 その際、数量が50以下の場合は価格表の単価+5した値が正しいデータとします。 ・シート1の単価が正しく入力されている→何もしない ・シート1の単価が、数量の+5忘れによって、正しい値と5ずれた値になっている→判定のセルの背景を黄色に変更 ・それ以外の完全に間違った値は判定のセルの背景を赤に変更 実際にはこの他にもいくつかのルールが加わったデータなのですが、今回は上の3つのルールだけで色分けを行いたいです。 そのため、何故こんなことをするのか?と違和感を感じる方もいるかもしれませんが、その点は気にしないで頂いて結構です。 エクセルにお詳しいかたよろしくお願いします。 使用しているエクセルは2013です

  • 台湾の企業と電子部品の取引する場合の発注数量に対するサンプルの数量は何%が妥当なのでしょうか?0

    台湾の企業と電子部品の取引する場合の発注数量に対するサンプルの数量は何%が妥当なのでしょうか?

  • エクセルの集計について教えてください。

    レジに打ちこまれた売上データをもとに、1ケ月の売上一覧表を作成しています。 一目で売れ線がわかるように売上数の良い順位をつけています。 例) 順位  商品名  数量  単価  売上 1位    楓    100    10   1,000 2位    紅葉    30    5    150              30   10    300       計      60         450 3位    A      40   10    400       B      40   10    400 5位    銀杏    30   10    300 総合計        270          2,550 上記の元データは商品毎の売上数が自動集計されない日時明細なので、先ず、商品名毎に並び変え、売れた数量を集計させます。ここまではエクセルで行っていますが、その後、数量合計を1行に記し、不要行を削除するのを手作業で行っています。その後で数量合計の多い順に並び変えをし(旧価格・新価格があるものもあるので、売上順位としては数量は合算、しかし新価格が何ケで旧価格が何ケと表示)、仕上げに順位を加えるのも手作業で行っています。 月によってデータが膨大なことがあり、手作業での限界がきています。 どなたか良い方法をお教え頂けないでしょうか。

このQ&Aのポイント
  • プリンターのメンテナンス中の解除方法と、WIFI電波速度を上げるためのWIFI中継器の設置方法について解説します。
  • WIFI電波速度を上げるためには、WIFI中継器を新設することが有効です。中継器の設置方法や設定方法について詳しく解説します。
  • プリンターに中継器のSSIDに変更したところ、PCにメンテナンス中と表示される問題について解決方法を説明します。
回答を見る

専門家に質問してみよう