• 締切済み

エクセルのデータの加工で何かいいアイデアがほしいです・・・

エクセルで下記のような(A列に品番、B列にケースNO.の最初、 C列にケースNO.の最後、D列に品名、D列に数量) データが数百件あり、これをケースNO.毎にデータを 作り直したいのですが… 品番 ケースNO.FROM ケースNO.TO  品名  数量 AP-1       1          3   りんご   3 BA-14       1              バナナ   1 BA-10      105        109 モンキバナナ  5 GR-00       7         8    ぶどう   2 ※↑こんな感じのデータを最終的には↓こうしたい。 品番 ケースNO.   品名   数量 AP-1    1      りんご   3 AP-1    2      りんご   3 AP-1    3      りんご   3 BA-14   1      ばなな    1 BA-10   105  モンキバナナ   5 BA-10   106 モンキバナナ   5 BA-10   107  モンキバナナ   5 BA-10   108  モンキバナナ   5 BA-10   109  モンキバナナ   5 GR-00   7      ぶどう    2 GR-00   8       ぶどう   2 データが数百件あり、とても手作業でできる量ではありません。 件数的にもマクロを使ってやるものだと思いますが 当方、マクロの自動記録から訂正することや読める… 程度の知識はあるのですが一からの書き込みや 繰り返し、判別させる知識がなく行き詰っております。 マクロでもマクロ以外でもいいので何かいい方法は ありますでしょうか? 宜しくお願い致します。

みんなの回答

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.2

標準モジュールに Sub Sample() Dim Moto As Range Dim C, S, E, i, L As Integer With Sheets("Sheet2") L = 2 Set Moto = Sheets("Sheet1").Range("A2", Sheets("Sheet1").Range("A2").End(xlDown)) For Each C In Moto S = C.Cells(1, 2) E = IIf(C.Cells(1, 3) = "", S, C.Cells(1, 3)) For i = S To E .Cells(L, 1) = C.Cells(1, 1) .Cells(L, 2) = i .Cells(L, 3) = C.Cells(1, 4) .Cells(L, 4) = C.Cells(1, 5) L = L + 1 Next Next End With End Sub 元データがSheet1のA2から入力されていてSheet2のA2に転記します。 ※見出しは1行目

hiroyon164
質問者

お礼

お返事おそくなって申し訳ありません。 すごい、できてる… 有難うございます!! が、今は全く意味が理解できてません・・・ シンプルな構文や静かな動作にすごく憧れますが 参考書を読んでも実際作る場面がないとなかなか身につかず (っていうか参考書って初級者向けとか上級者向けはたくさんあっても 中級者向けで良いのがなかなか見つけられずにいます) でも頑張ってひとつひとつ解読していきたいと思います。 この度は有難うございました。

noname#76936
noname#76936
回答No.1

まず品番を自分の好きな順に並べ、次の優先順位はケースNo.と言うことでよろしいでしょうか? 並べ替えを行えばできるのですが、問題は品番が素直な並び方ではないことです。 品番に対応する数字を入力する欄を設けてはいかがでしょうか? ・1列挿入する ・別シートに「品番・数字」の表を作成する ・挿入した列から、VLOOKUP関数を使用して品番に対応した数字を入力する ・あとはデータ→並べ替えで品番の数字、ケースNo.の順で並べ替えをすればご希望通り並ぶと思いますが

hiroyon164
質問者

お礼

お返事おそくなって申し訳ありません。 私の質問が言葉足らずで悪いのですが やりたいことは複数個に対して 一行のデータ(ケースNO.のFROMとTOはその意味です)が ところどころにあるのでそれを一ケースNO.に 一行のデータに再作成したいのです。 説明下手で申し訳ありません・・・

関連するQ&A