• ベストアンサー

エクセルで作る見積表の抽出印刷方法??

エクセルで見積表を作りたいと考えています。商品名、単価をあらかじめ入力しておいて、後で数量さえ入力すれば合計金額が出るという、よくあるタイプのものです。 しかし、ここまでなら私にも作成出来るのですが、問題はこの後です。数量を入力した商品、単価、数量、金額、最終的な合計金額のみを印刷できるようにしたいのです。つまり、その都度、数量を入力していない商品(行)を省いて印刷したいのです。そうしないと商品の量が多い為に、大変な枚数になってしまい、分かり難い見積表となってしまいます。 また、もう1つお願いがあるのですが、実際、見積表の数量を入力する営業さん達は、エクセルについては超初心者ばかりです。抽出して印刷する方法は、出来るだけ分かりやすいものだと助かります。しかし無理であれば、どんな方法でも構いません。教えてください!!宜しくお願いします。補足が必要であれば致します。

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

  • ベストアンサー
  • kukkychan
  • ベストアンサー率12% (23/190)
回答No.3

いろいろな方法があると思いますが意外と 簡単なマクロの組み方を一つの例として挙げます! 前提:  (1)シート名をSheet1とする。  (2)A列=商品、B列=単価、   C列=数量、D列=金額とする。  (3)1行目は見出し行とする。  (4)メニューバーのファイルより   印刷範囲の設定を行なう   (A列~D列を印刷) 作成手順:  (1)コマンドボタンを用意する。   1行目E列に1個「編集」   1行目F列に1個「戻す」   用意の方法   1:メニューバー/表示(v)    /ツールバー/コントロールツールボックス    にチェックするとツールバーに    ボタンが表示される   2:そのなかのコマンドボタンをクリック    する。    (マウスポインタをあてれば名称が出ます)   3:シート上の作成したい場所で好きな大きさに    ドラックする。   4:出来たコマンドボタンを    右クリックし、    コマンドボタンオブジェクト/編集にて    ボタンの表面の文字を編集する。  (2)「編集」ボタンをダブルクリックすると    下記の表示が出てくる   Private Sub CommandButton1_Click()   End Sub   上記の間に下記を追加する。   Private Sub CommandButton1_Click() Dim i As Integer i = 2 Do Until i = -1  If Worksheets("Sheet1").Cells(i, 1).Value = "" Then i = -1  Else If Worksheets("Sheet1").Cells(i, 4).Text = 0 Or _ Worksheets("Sheet1").Cells(i, 4).Text = "" Then Worksheets("Sheet1").Rows(i).Select Selection.EntireRow.Hidden = True End If i = i + 1  End If   Loop   End Sub   上記は、2行目より1行づつ、商品が記入されている   間、金額が0か、そうでないかのチェックを行い、   金額が0の場合、行を非表示にしている。   商品欄が空白になった行でチェック終了とする。   この書き込みが終了したら一番上の×ボタンで画面を   閉じて下さい。シートに戻ります。    (3)「戻す」ボタンをダブルクリックすると    下記の表示が出てくる    Private Sub CommandButton2_Click()    End Sub    上記の間に下記を追加する。    Private Sub CommandButton2_Click() Worksheets("Sheet1").Cells.Select Selection.Rows.Hidden = False    End Sub    上記はSheet1の行非表示を元に戻しています。    (2)と同様画面を閉じて下さい。  (4)シートにもどったら、デザイン画面から実行画面に   変更します。   方法は、ツールバーのアイコンで   三角定規と定規と鉛筆が組み合わさったような絵が   ONになっていると思うのでクリックしてOFFに   してください。   編集する場合はこれをONにするとマクロの編集   が可能です。  (5)以上でボタンをクリックするだけで   不必要な行が非表示になり、印刷されない状態になり   ます。   入力するさいは戻すでもとにもどせば入力できます。   次にこのファイルを開く時   「マクロを有効にしますか?」の   メッセージが表示されるので、   「有効にする」で開いてください。 どうでしょう!(^-^)

noname#1163
質問者

お礼

すみません!私の入力の仕方がおかしかったようです。 kukkychanさんの入力通りをそのままコピーして貼りつけたら出来ました! ありがとうございました。

noname#1163
質問者

補足

お返事ありがとうございます。 早速やってみたのですが、「編集」をクリックすると、「構文エラー」が出ます。 下記の部分なのですが、再度、教えてください。 「 If Worksheets("Sheet1").Cells(i, 4).Text = 0 Or _ 」 最後の「Or」の部分が怪しい気がします。(ここを直せマークみたいなものが出てました) 宜しくお願いします!!

その他の回答 (4)

noname#4117
noname#4117
回答No.5

ごめんなさい、抜けてました。 たしかにこれだけでは印刷できないですね… 4のcを修正させてもらいます。 4:印刷用マクロを作成する   a まず納品書シートに画面を戻し、個数欄に例として数を入力しておく   b 「ツール」→「マクロ」→「新しいマクロの記録」→マクロ名「印刷」・マクロの保存先「作業中のブック」→     OK(ここからマクロの登録開始)   c 印刷用シートに画面を写す→「データ」→「フィルタ」→「オートフィルタ」→「オプション」→     抽出条件の指定「0と等しくない」→OK→「印刷」→ 記録終了 見積表シートを修正し、印刷ボタンを押すと、 ボタンに登録したマクロが実行されて 修正結果が反映されるようになってます。 (逆にいえばボタンを押さないと修正が反映されません。) もし毎回印刷が必要という訳ではなく、 結果の反映を見てから印刷したいというのであれば 4で印刷ボタンのかわりに反映(実行)ボタンを作成し、 印刷用シートを「印刷」でプリントアウトしてもいいと思います。 反映用マクロの作成は、私がANo.#4で書いた4と全く同じです。 これでまだ不具合であればまた補足下さい。  

noname#1163
質問者

お礼

回答ありがとうございます。hicatさんの回答通りにやってみたら出来ました! 皆さんにご回答頂いた内容を試しているのですが、分からないものもあり、再度質問をしております。もし時間がありましたら、そちらの方も見てみてください。あつかましくてほんとスミマセン!宜しくお願いします。 何度もご親切に回答を頂き、今回は本当にありがとうございました。

noname#4117
noname#4117
回答No.4

これでどうでしょうか・・・ 1:見積表書式を作成する(これを見積表シートとする) 2:見積表シートをシートコピーし、印刷シートを作成する 3:見積表シートに入力したら印刷シートへ反映するようにセルをコピーする。   (相手会社名・日付・個数等、営業の人が入力するであろう箇所をコピー) 4:印刷用マクロを作成する   a まず納品書シートに画面を戻し、個数欄に例として数を入力しておく   b 「ツール」→「マクロ」→「新しいマクロの記録」→マクロ名「印刷」・マクロの保存先「作業中のブック」→     OK(ここからマクロの登録開始)   c 印刷用シートに画面を写す→「データ」→「フィルタ」→「オートフィルタ」→「オプション」→     抽出条件の指定「0と等しくない」→OK→記録終了 5:営業さんに分かりやすいように印刷ボタンを作る   a 「表示」→「ツールバー」→「フォーム」   b 「ボタン」→ボタンを作る→マクロの登録「印刷」を選択→OK   c 作ったボタンを右クリックし、「テキストの編集」で名前を「印刷」に変える 4・5と同様の手順で「クリア(消去)」を作ったり、 営業の人が入力する箇所に「塗りつぶし」を作っておくと親切でしょうね。

noname#1163
質問者

補足

お返事ありがとうございます。 分からない点がありましたので、教えてください。 この方法だと、数量を入れ終わった後に訂正をしたい場合、もとの見積表シートを修正しても、自動的には印刷用シートに反映されませんでした。フィルタの逆三角マークを押して、「すべて」にすればでましたが・・・。どうしてでしょうか?やりかたが違うのでしょうか? また、印刷ボタンですが、出来る事は出来ましたが、これを押すと印刷できるのですか?私が作ったボタンでは、表が範囲指定されるだけで印刷までは出来ませんが、そういったものなんでしょうか?宜しくお願いします。

  • tirta
  • ベストアンサー率42% (44/103)
回答No.2

マクロは操作の自動化とでも言うんでしょうか? 複数の動作を一度に自動処理できるので大変便利ですが・・・ ある程度簡単なものなら前述のように  「ツール→マクロ→新しいマクロの記録」を選択後自分のやりたい  操作をそのまま実行します。それが終わったところで「マクロの  記録終了」をクリックすれば完成 という事になります  ただしこの作業中の行為はすべて記録されるため 間違ったことも、それを「やり直し」をかけてもすべて記録されます。 これを「フォーム → ボタン選択 →ボタンにマクロを登録」と なって初めてボタンいっぱーつ状態になるのですが・・・ ちなみに「マクロ」が出ない場合は追加インストールになるんじゃ なかったっけ・・・? またこういう「記録だけ」で作ったマクロはいかなる状況においても 自分の思ったように動くわけではないため、正直現時点ではお勧めできません。 通常はVBAというかたちでマクロのための「特別な文法」で作成します。 このへんはもっと上級の方が書いてくださるかも。 ちなみに先ほど紹介したサイトはマクロの解説もあります。 マクロを簡単に「記録」で作成するにせよ、先ほどの私のつたない回答で 得られる結果になるのかどうかわからないと、お答えもしようがないのです あまりお役に立てずすみません 私も仕事中人目を盗んでの書き込みです(笑)

  • tirta
  • ベストアンサー率42% (44/103)
回答No.1

発注がなければ、数量の部分はブランクですか、0ですか?わかんないので それは回避して、個数の列に  データ→フィルタ→オートフィルターの順に選択  オートフィルターのプルダウンリストが現れたら上から2番目の  オプションをクリック 左のプルダウンに1 右のプルダウンに「以上」を設定 反対にすべて表示するときはオートフィルターのプルダウンリストの中から 「すべて表示」にするか「データ→フィルタ→オートフィルターのチェック  まーくをはずす」です これで一様おっしゃってるような形になりませんか? この一連の動作をマクロ記録して、ボタンに登録すれば他の方も使いやすく なると思いますが・・・  ちなみにエクセルの質問の場合バージョンも書き込んだほうがいいですね 下のサイトはとても参考になると思います

参考URL:
http://www2.odn.ne.jp/excel/index.html
noname#1163
質問者

補足

早速のお返事ありがとうございます。 バージョンは、2000の1個前(←97かな?すみません!)です。ところで、マクロ記録って何ですか?すみません、やり方も含めておしえてください。宜しくお願いします。

関連するQ&A