人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの関数に関する質問です。
納品書A・納品書B・請求書が一つのファイルにシートとしてあったとします。

納品書A
商品a 数量 1
商品b 数量 2
商品c 数量 3

納品書B
商品b 数量 3
商品e 数量 2

このとき、請求書に
納品書a、納品書bの商品ごとの合計数量が自動で計算されるマクロを作りたいのですが。

その際、納品書の商品名はプルダウンで選択式となり、
仮に商品がa?fまであっても、
商品が選択されなければ、請求書には項目が出ないようにしたいのです。

よろしくお願いします。

1222753088
●拡大する

●質問者: kazuhiko11
●カテゴリ:コンピュータ
✍キーワード:Excel ファイル マクロ 自動 計数
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●60ポイント ベストアンサー

関数だけで実現できます。そのためには処理を2つの部分に分離して説明します。


1 全ての商品ごとに集計する。

2 商品数が0の商品の行を消す。


1については、vlookup関数とiserror関数で可能です。

2は、リストにしてフィルタで0以上だけを表示するという方法もありますが、

処理が自動にならないのとレイアウトが崩れるので、ここでは作業シートを追加して対処します。


? まず、わかりやすくするために納品書aと納品書bの表にそれぞれ"納品書a"、"納品書b"と名前をつけます。

名前の付け方


? 次のような作業シートを追加します。

[f:id:SALINGER:20080930165127j:image]

B列に商品名を列挙します。

C2セルに下の数式を入れて商品名分下にコピーします。

=IF(ISERROR(VLOOKUP(B2,納品書a,2,FALSE)),0,VLOOKUP(B2,納品書a,2,FALSE))+IF(ISERROR(VLOOKUP(B2,納品書b,2,FALSE)),0,VLOOKUP(B2,納品書b,2,FALSE))

A2セルに下の数式を入れて商品名分下にコピーします。

=IF(C2>0,A1+1,A1)

A1セルに請求書の見出しになる行数を入れます。図ですと23です。

図のように、できた表に"作業シート"と名前をつけます。


これで、作業シートで全ての商品が集計できるはずです。


? 次に請求書シートに数量0以外の商品だけを表示する処理です。

見出しの商品の下のセルに、下の数式を入れて商品名の数だけ下にコピーします。

=IF(ISERROR(VLOOKUP(ROW(),作業シート,2,FALSE)),"",VLOOKUP(ROW(),作業シート,2,FALSE))

見出しの数量の下のセルに、下の数式を入れて商品名の数だけ下にコピーします。

=IF(ISERROR(VLOOKUP(ROW(),作業シート,3,FALSE)),"",VLOOKUP(ROW(),作業シート,3,FALSE))

以上で、関数だけでできます。

マクロで実現したいという場合は、納品書と請求書のセルがどこになるのかとかいろいろ情報が必要です。

その場合は、コメントをオープンされたほうがよろしいかと思います。

◎質問者からの返答

大変わかりやすい解説をありがとうございました。

早速作成いたしました。

感謝いたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ