• 締切済み

マクロでソートもできて、ダブっている商品の数量を合算する方法はありますか?

私の会社は非常にアナログで、FAXによる手書き注文をエクセルで打ち変えて手配しています。 その際に利用している注文書は、商品コードを入力すると「商品名」・「単価」を隣のシートからひっぱってくるVLOOKUPを使っています。 商品の数量は自分で入力しないといけません。 そこで・・ バラバラで商品コードを入力しても、後でソートをすればABC順に並んで、さらに中で重複している商品があれば数量を自動的に合算してくれる・・・・ なんてことはマクロでできないでしょうか・・。 宜しくお願いします!

みんなの回答

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.4

一つ書き忘れたことがありました。 並び替えをする際、セルを結合していると 単列での並び替えは出来ますが、 複数列を並び替えの時結合セルが含まれると、 エラーになります。 結合を解除して列幅の調整で対応してください。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.3

やはり質問者さんの要望には、マクロで回答が必要ですね。 しかし、当方ご希望に添えるマクロとまで行きませんが、 下記に参考となるマクロを記載いたしますので、 参考にしてください。 Sub 並び替え重複合併() ' 並び替え 最終行 = Range("A65536").End(xlUp).Row Range(Cells(1, 1), Cells(最終行, 5)).Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal ' 重複合併 For i = 2 To 最終行 If Cells(i, 1) = Cells(i + 1, 1) Then Cells(i + 1, 1).Select Selection.Copy Cells(i, 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _ False, Transpose:=False Cells(i + 1, 5).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End If Next i End Sub ※参考ですので、完全に重複する商品を合算させることが出来ません。 三箇所以上の重複は、再度マクロを実行させるか、 数量を「コピー」「形式を選択して貼り付け」から「加算」を選択して 不要な行を削除する(マクロの重複合併と同じ操作です)必要があります。 また、マクロ実行後は、データを元に戻すことが出来ませんので セーブしておくことをお勧めします。 尚、以後質問をなさるときは、 コンピューター [家庭向け] > ソフトウェア > Office系ソフト で、質問されたほうが閲覧者が多いので、 より希望に添える回答が得られると思います。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

まず商品のリスト(重複しない)を仮にL列に作ります。 <リストの作り方> 「データ」「フィルタ」「フィルタオプションの設定」から 「抽出先」は、「指定した範囲」を選択 「リスト範囲」は、”B列~E列(結合)の項目行から入力最終行まで”選択 「検索条件範囲」は、”空白”のままで 「抽出範囲」は、セルL1を選択 「重複するレコードは無視する」にチェックを入れて、OKボタンをクリックする。 これで、リストが出来ます。 後は、M列に下記の式をリストの同じ数だけコピーしてください。 =SUMIF($B$2:$B$1001,L2,$G$2:$G$1001) これで出来ると思うのですが。

tanakanet
質問者

お礼

回答が遅くなりまして申し訳ありません。 私の説明が下手で・・・ 私の会社では前述のような注文書を手入力で作成しています。 列の説明からすると・・・ A列・・商品コード B列~E列(結合)・・商品名 (隣のシートから商品コードが一致するものをIFでひっぱってくる) F列・・チェック欄なので未入力 G列・・数量(あとで手入力) H列・・単位(B列~E列同様) I列・・単価(H列同様) となっています。 商品コードを入力すると、結合した部分に商品名が入り単価もでますが 数量だけはお客様の注文書を見ながら手入力しか方法はありません。 上から順に入力していくと、 同じ商品が2,3箇所はいっていることがあります。 その場合、手計算で数量を足していき、1行にまとめます。 かなり制約があるなか、転記(手入力)作業しているので 何か時間短縮できる方法はないかと思い考えあぐねています。 再度、何かよい方法を教えて頂けないでしょうか? 教えていただいたのは確かに合算しますが 私が合算したいのは、同じ列内で合算、いらなくなった行を削除する 方法です。 宜しくお願いします。

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

>重複している商品があれば数量を自動的に合算 上記に対して、 =SUMIF(範囲,検索条件,合計範囲)を使えば マクロじゃなくてもで出来ますよ。 例) 範囲:商品名が入力されている列 検索条件:数量の知りたい商品名 合計範囲:数量が入力されている列 をお使いのワークシートの仕様に合わせて変更してください。

tanakanet
質問者

お礼

さっそくの回答ありがとうございます! ただ商品名のところは =IF(A12="","",VLOOKUP(A12,価格表!$A$1:$D$1001,2,FALSE)) がはいっているんですが・・・ A列 商品コード B列~E列(結合)商品名(上記のVLOOKUP) G列 数量 J列 単価(VLOOKUP) と入力されているんですが・・・ どうしたらいいんでしょう・・