- ベストアンサー
エクセルで作る見積表の抽出印刷方法??
エクセルで見積表を作りたいと考えています。商品名、単価をあらかじめ入力しておいて、後で数量さえ入力すれば合計金額が出るという、よくあるタイプのものです。 しかし、ここまでなら私にも作成出来るのですが、問題はこの後です。数量を入力した商品、単価、数量、金額、最終的な合計金額のみを印刷できるようにしたいのです。つまり、その都度、数量を入力していない商品(行)を省いて印刷したいのです。そうしないと商品の量が多い為に、大変な枚数になってしまい、分かり難い見積表となってしまいます。 また、もう1つお願いがあるのですが、実際、見積表の数量を入力する営業さん達は、エクセルについては超初心者ばかりです。抽出して印刷する方法は、出来るだけ分かりやすいものだと助かります。しかし無理であれば、どんな方法でも構いません。教えてください!!宜しくお願いします。補足が必要であれば致します。
- オフィス系ソフト
- 回答数5
- ありがとう数4
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
いろいろな方法があると思いますが意外と 簡単なマクロの組み方を一つの例として挙げます! 前提: (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)以上でボタンをクリックするだけで 不必要な行が非表示になり、印刷されない状態になり ます。 入力するさいは戻すでもとにもどせば入力できます。 次にこのファイルを開く時 「マクロを有効にしますか?」の メッセージが表示されるので、 「有効にする」で開いてください。 どうでしょう!(^-^)
その他の回答 (4)
ごめんなさい、抜けてました。 たしかにこれだけでは印刷できないですね… 4のcを修正させてもらいます。 4:印刷用マクロを作成する a まず納品書シートに画面を戻し、個数欄に例として数を入力しておく b 「ツール」→「マクロ」→「新しいマクロの記録」→マクロ名「印刷」・マクロの保存先「作業中のブック」→ OK(ここからマクロの登録開始) c 印刷用シートに画面を写す→「データ」→「フィルタ」→「オートフィルタ」→「オプション」→ 抽出条件の指定「0と等しくない」→OK→「印刷」→ 記録終了 見積表シートを修正し、印刷ボタンを押すと、 ボタンに登録したマクロが実行されて 修正結果が反映されるようになってます。 (逆にいえばボタンを押さないと修正が反映されません。) もし毎回印刷が必要という訳ではなく、 結果の反映を見てから印刷したいというのであれば 4で印刷ボタンのかわりに反映(実行)ボタンを作成し、 印刷用シートを「印刷」でプリントアウトしてもいいと思います。 反映用マクロの作成は、私がANo.#4で書いた4と全く同じです。 これでまだ不具合であればまた補足下さい。
お礼
回答ありがとうございます。hicatさんの回答通りにやってみたら出来ました! 皆さんにご回答頂いた内容を試しているのですが、分からないものもあり、再度質問をしております。もし時間がありましたら、そちらの方も見てみてください。あつかましくてほんとスミマセン!宜しくお願いします。 何度もご親切に回答を頂き、今回は本当にありがとうございました。
これでどうでしょうか・・・ 1:見積表書式を作成する(これを見積表シートとする) 2:見積表シートをシートコピーし、印刷シートを作成する 3:見積表シートに入力したら印刷シートへ反映するようにセルをコピーする。 (相手会社名・日付・個数等、営業の人が入力するであろう箇所をコピー) 4:印刷用マクロを作成する a まず納品書シートに画面を戻し、個数欄に例として数を入力しておく b 「ツール」→「マクロ」→「新しいマクロの記録」→マクロ名「印刷」・マクロの保存先「作業中のブック」→ OK(ここからマクロの登録開始) c 印刷用シートに画面を写す→「データ」→「フィルタ」→「オートフィルタ」→「オプション」→ 抽出条件の指定「0と等しくない」→OK→記録終了 5:営業さんに分かりやすいように印刷ボタンを作る a 「表示」→「ツールバー」→「フォーム」 b 「ボタン」→ボタンを作る→マクロの登録「印刷」を選択→OK c 作ったボタンを右クリックし、「テキストの編集」で名前を「印刷」に変える 4・5と同様の手順で「クリア(消去)」を作ったり、 営業の人が入力する箇所に「塗りつぶし」を作っておくと親切でしょうね。
補足
お返事ありがとうございます。 分からない点がありましたので、教えてください。 この方法だと、数量を入れ終わった後に訂正をしたい場合、もとの見積表シートを修正しても、自動的には印刷用シートに反映されませんでした。フィルタの逆三角マークを押して、「すべて」にすればでましたが・・・。どうしてでしょうか?やりかたが違うのでしょうか? また、印刷ボタンですが、出来る事は出来ましたが、これを押すと印刷できるのですか?私が作ったボタンでは、表が範囲指定されるだけで印刷までは出来ませんが、そういったものなんでしょうか?宜しくお願いします。
- tirta
- ベストアンサー率42% (44/103)
マクロは操作の自動化とでも言うんでしょうか? 複数の動作を一度に自動処理できるので大変便利ですが・・・ ある程度簡単なものなら前述のように 「ツール→マクロ→新しいマクロの記録」を選択後自分のやりたい 操作をそのまま実行します。それが終わったところで「マクロの 記録終了」をクリックすれば完成 という事になります ただしこの作業中の行為はすべて記録されるため 間違ったことも、それを「やり直し」をかけてもすべて記録されます。 これを「フォーム → ボタン選択 →ボタンにマクロを登録」と なって初めてボタンいっぱーつ状態になるのですが・・・ ちなみに「マクロ」が出ない場合は追加インストールになるんじゃ なかったっけ・・・? またこういう「記録だけ」で作ったマクロはいかなる状況においても 自分の思ったように動くわけではないため、正直現時点ではお勧めできません。 通常はVBAというかたちでマクロのための「特別な文法」で作成します。 このへんはもっと上級の方が書いてくださるかも。 ちなみに先ほど紹介したサイトはマクロの解説もあります。 マクロを簡単に「記録」で作成するにせよ、先ほどの私のつたない回答で 得られる結果になるのかどうかわからないと、お答えもしようがないのです あまりお役に立てずすみません 私も仕事中人目を盗んでの書き込みです(笑)
- tirta
- ベストアンサー率42% (44/103)
発注がなければ、数量の部分はブランクですか、0ですか?わかんないので それは回避して、個数の列に データ→フィルタ→オートフィルターの順に選択 オートフィルターのプルダウンリストが現れたら上から2番目の オプションをクリック 左のプルダウンに1 右のプルダウンに「以上」を設定 反対にすべて表示するときはオートフィルターのプルダウンリストの中から 「すべて表示」にするか「データ→フィルタ→オートフィルターのチェック まーくをはずす」です これで一様おっしゃってるような形になりませんか? この一連の動作をマクロ記録して、ボタンに登録すれば他の方も使いやすく なると思いますが・・・ ちなみにエクセルの質問の場合バージョンも書き込んだほうがいいですね 下のサイトはとても参考になると思います
補足
早速のお返事ありがとうございます。 バージョンは、2000の1個前(←97かな?すみません!)です。ところで、マクロ記録って何ですか?すみません、やり方も含めておしえてください。宜しくお願いします。
関連するQ&A
- エクセル2000で見積書の印刷
エクセル2000で作成した見積書があるのですが、内訳の中で、例えば 品名、 規格、単位、数量、単価、金額 の欄があり 金額の欄のセル内に=数量*単価の計算式が入っています。 項目の内、数量が1個、とか1式の場合に限り、印刷の時に単価の金額だけを空白で印刷したいのです。(今までは全て印刷していました。) もちろん金額の欄に直接入力しちゃえば良いのですが、金額欄のセル内の計算式はいじりたくないのです。VBAが今ひとつわからず悩んでいます。 わかり難かったら補足いたしますのでよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルで作る見積表の抽出方法(ゼロ入力でも抽出したい!)
OSはWindowsNT、Excel97です。 こんにちは。以前こちらで「見積表の抽出方法」をお聞きして素晴らしい見積表を作らせて頂きました。あの時は、数量欄に数字を入れた行のみ抽出し、さらに元に戻す事も出来るという、以下の2つの構文を教えて頂きました。 Private Sub CommandButton1_Click() ActiveSheet.Unprotect Dim i As Integer i = 2 Do Until i = -1 If Worksheets("単価表").Cells(i, 6).Value = "" Then i = -1 Else If Worksheets("単価表").Cells(i, 6).Text = 0 Or _ Worksheets("単価表").Cells(i, 6).Text = "" Then Worksheets("単価表").Rows(i).Select Selection.EntireRow.Hidden = True End If i = i + 1 End If Loop ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Private Sub CommandButton2_Click() ActiveSheet.Unprotect Worksheets("単価表").Cells.Select Selection.Rows.Hidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub それでもう1つ質問なのですが、 この構文では、数量欄にゼロ(0)を入れると抽出出来ません。できればゼロを入れた時も抽出されるようにしたいのです。 つまり数量欄が空欄以外はすべて抽出されるようにしたいのです。 説明不足でしたら補足致しますので、宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル 表の自動追加
エクセルで見積書を作成しています。 単純化して書きますと A B C D E 1 商品コード 商品名 単価 数量 金額 合計¥~~ vlookup関数を使ってA列に商品コードを入力B列に商品名、C列に単価が引用され、後はD列の数量を入力すればE列の金額および合計金額が出るというようにしているのですが、 A~Eが埋まれば自動的に2行目が合計との間に挿入されるような関数?などはあるのでしょうか。現在では15行程度の表があるのですが、もっと数が増えたときや、数が少ないときに〆の線を引くのが面倒なのです。 私自身はエクセルはネットで独学程度で学んでいるので詳しくありません。自分でいろいろ調べたのですが(と言ってもネットで調べただけですが)VBAを使用しなければ難しいでしょうか? 拙い文章で申し訳ありませんが、ご教授のほどよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel別シートに同じ値を反映させたい
初めて質問いたします。 EXCELで見積書と別シートに商品一覧を作成しております。 商品一覧には単価、数量、合計金額で計算式を組んでおります。 商品一覧中数量を入力したものを商品名、単価、数量、合計金額として見積書に反映させたいと思っております。 同座標へは反映できるのですが、商品が数十種ある為、例えば行1と行5で数量入力した場合、見積書には行2~行4までは空白になってしまいます。この間隔を空けずに見積書に反映させることは出来るのでしょうか? ご教授いただきたくお願い申し上げます。
- ベストアンサー
- Excel(エクセル)
- エクセルで複数シートを一覧表にするには?
教えてください。エクセルで複数シートを自動で別のシートに転記したいのですが、 やり方がわかりません。 各シートの空白部分を除いてデーターがある分だけを取り出して、金額に数式を入れて 合計金額を追加したいのですが・・・・・。 下記のような感じでできますか? 宜しくお願いいたします。 Sheet1 商品名 単価 数量 **** 000 000 **** 00 00 Sheet2 商品名 単価 数量 **** 000 000 **** 00 00 Sheet3 商品名 単価 数量 **** 000 000 **** 00 00 をSheet4に シート名 商品名 単価 数量 金額 Sheet1 **** 000 000 0000(単価×数量) **** 00 00 0000(単価×数量) 合計金額 000 Sheet2 商品名 単価 数量 金額 **** 000 000 0000(単価×数量) **** 00 00 0000(単価×数量) 合計金額 000 Sheet3 商品名 単価 数量 金額 **** 000 000 0000(単価×数量) **** 00 00 0000(単価×数量) 合計金額 000
- 締切済み
- オフィス系ソフト
- エクセル 計算が自動的に切り替わらない
こんにちわ お願いします。 会社で見積書を作成してます。 エクセルで見積書作成したファイルを基にコピーし、数量、単価だけを変更、別見積書作成しました。その際自動的に合計数量が計算されません。(計算される時もあります。) 計算方法は、基の見積表:数量x単価=合計金額 総合計はzで入力して見積書作成しています。 前に作成した。見積書をコピーして数量などを変更して出したいのです。 良いファイルの作成方法があれば教えて下さい。 よろしくお願いします。
- ベストアンサー
- Windows XP
- エクセ表の印刷方法について
エクセルで棚卸表を作成しましたが、合計重量又は合計金額が0の場合、その行は印刷しないようにしたいのですがどの様な方法があるのでしょうか。 取扱品目が500品目あり商品は当初から全て表示されています。 要するに、合計欄の重量、金額が0の場合は印刷から除外することにより印刷枚数を減らすのが目的です。 サンプルとして画像を添付します。
- ベストアンサー
- Excel(エクセル)
- エクセル・見積表の抽出印刷方法?その3
先日(No.130709とNo.130958)、エクセルで作成した見積表の数量を入力した行のみを印刷したいとお聞きした者です。その際は、多くの方に回答を頂き、誠にありがとうございました。おかげさまで完成間近ですが、もう1つ問題が出てきてしまいました。宜しくお願いします。 商品によっては、行を追加し手で入力しなくてはならないものがあるので、あらかじめ空白行(金額列には0が入っています)を設けておきたいのですが、そうすると抽出した際、空白行も一緒に抽出されてしまいます。空白行がある場合は、下記の構文のやり方では無理なのでしょうか?空白行も非表示にしたいのです。 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,6).Text=0Or_ Worksheets("Sheet1").Cells(i,6).Text=""Then Worksheets("Sheet1").Rows(i).Select Selection.EntireRow.Hidden=True End If i=i+1 End If Loop End Sub Private Sub CommandButton2_Click() Worksheets("Sheet1").Cells.Select Selection.Rows.Hidden=False End Sub 以上です。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル 表の中だけ詰めたい
エクセルで見積を作成しています。ほぼ初心者です。 名称と金額はあらかじめ入力しておいて数量だけを入れるような 書式を作っています。 数量がゼロの項目があった場合、見積の表の行数はそのままで、ゼロの 行だけ詰めたいのですが、何か方法があるのでしょうか。 教えてください。
- 締切済み
- オフィス系ソフト
- Excelで見積書を作成したいのですが・・・(T-T)
Excelで見積書を作成しています。 C16~C35までを商品名にしてE16~E35までを数量、F16~F35までを 単位、G16~G35までを単価、H16~H35までを数量×単価の金額に にしています。 1社へ出す見積りであれば問題ないのですが、同じ商品、数量、単位 なのにグループ会社(約100社)へ同時に出す場合があるのですが、商品、数量まで同じなのですが、単価だけが掛け率が違うのです。 グループ会社のA社へは15%(原価÷0.85)で、B社へは20% (原価÷0.80)になったりします。 どこかのセルに掛け率を入力 すれば単価だけ入力した掛け率によって自動的に変わらないでしょうか? そうすれば宛先の社名を入れ替えるだけで簡単に出来ると 思っています。 100社全ての単価を電卓で掛け率を計算して入力するのは大変です。(^_^;)どなたか詳しい方助けて下さい。 OSはwindowsXPでExcelはOffice2003を使用しています。
- ベストアンサー
- オフィス系ソフト
お礼
すみません!私の入力の仕方がおかしかったようです。 kukkychanさんの入力通りをそのままコピーして貼りつけたら出来ました! ありがとうございました。
補足
お返事ありがとうございます。 早速やってみたのですが、「編集」をクリックすると、「構文エラー」が出ます。 下記の部分なのですが、再度、教えてください。 「 If Worksheets("Sheet1").Cells(i, 4).Text = 0 Or _ 」 最後の「Or」の部分が怪しい気がします。(ここを直せマークみたいなものが出てました) 宜しくお願いします!!