• ベストアンサー

EXCELで請求書を作りたいのですが

B1のセルに品番を入れたらA1に商品名、C1に単価、D1に小計が表示されるような請求明細とその明細をもとに納品日別で納品場所、使用期間、金額の入った請求一覧を1セット作り、それの単価に3%乗せた明細と一覧をもう1セット作りたいと思っています。 1つの商品名に対して品番は複数、1つの品番に対して単価は1つです。 自分はパソコン教室などに行ったことがなく、本もどれがいいのか判らないので+-*/、オートsumと関数、書式設定などはヘルプを参照して覚えました。会社の業種はリース業なのですが伝票類・在庫管理類、超アナログな会社です。 現在は全て1個1個入力してsheetとsheetをリンクさせて電卓叩いて・・・という作業をしているのですが、量が増えて締め切りに間に合わなくなってきてしまい質問させていただいた次第です。 よろしくお願い致します。

  • toduki
  • お礼率86% (545/632)

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

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.5

まずは型式、品名、単価の一覧データベースを作りましょう。「データベース」という名前のシートを作り、A列に商品名、B列に品番、C列に単価をあらかじめ入力・作成しておきます。下のような感じですね。  ┃ A ┃ B ┃ C ┃ ━╋━━━╋━━━╋━━━╋ 1┃型 式│品 番│単 価│ ━╋───┼───┼───┼ 2┃AAA│  1│ 10│ ━╋───┼───┼───┼ 3┃BBB│  2│200│ ━╋───┼───┼───┼ 4┃CCC│  3│170│ ━╋───┼───┼───┼ 5┃DDD│  4│510│ ━╋───┼───┼───┼ 6┃   │   │   │ ━╋───┼───┼───┼ 7┃   │   │   │ ━╋───┼───┼───┼ 次に請求明細のシート(シート名はどのような名前でも結構です)のA1のセルに「型式」、B1のセルに「品番」、C1のセルに「単価」、D1のセルに「小計」、E1のセルに「個数」と入力しておきましょう。後からE列に個数を入力すれば自動的にD列に小計が表示されるようになります。 さて、それが済んだら、Altを押しながらF11キーを押してVisual Basicエディタを開きます。 左側の「プロジェクト」と書かれた枠に「Microsoft Excel Object」と書かれた部分があります。そこにシートの名前の一覧がありませんか?あったら、請求明細のシート名をダブルクリックします。すると画面右側が灰色から白色に変わりましたね。そこに以下をコピーしてください。 'ここから------------------------------------------------------------------------------------------ Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ErrHand Application.ScreenUpdating = False Application.EnableEvents = False If Target.Column = 2 And Target.Row <> 1 Then If Target.Value = Empty Then Cells(Target.Row, 1).Value = Empty Cells(Target.Row, 3).Value = Empty Cells(Target.Row, 4).Value = Empty Cells(Target.Row, 5).Value = Empty Else With Worksheets("データベース").Range("B:B") Set x = .Find(Target.Value, LookAt:=xlWhole) If Not x Is Nothing Then Cells(Target.Row, 1).Value = Worksheets("データベース").Cells(x.Row, 1).Value Cells(Target.Row, 3).Value = Worksheets("データベース").Cells(x.Row, 3).Value Cells(Target.Row, 4).Value = "=C" & Target.Row & "*E" & Target.Row Else MsgBox ("対応する型式がありません") Cells(Target.Row, 2).Activate End If End With End If End If ErrHand: Application.EnableEvents = True Application.ScreenUpdating = True End Sub 'ここまで------------------------------------------------------------------------------------------ はい。これで処理は終了です。Visual Basic エディタを終了してください。 後は請求明細のシートのB列に品番を入力するたびにA列に商品名、C列に単価、D列に小計(C列の値×E列の値という数式)が入ります。後でE列に個数を入力すると小計が反映されます。 B列を削除すると、その行についてA列からE列まで全てのデータが削除されます。 ただし、「複数セルを選択して削除」には対応しておりませんので悪しからず。

toduki
質問者

お礼

すごく丁寧な回答ありがとうございます。マクロとVBAの差も判っていないような私ですが、とても判り易くて助かりました。 自動で出てくるって素晴らしいですね!久しぶりに感動しております。 教えていただいたコードを元にVBAの勉強をしようと思います。ありがとうございました!

その他の回答 (4)

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.4

>アクセス、会社のパソコンに入ってないのです。 そうですか。 書類の作成にかかる人件費等を考えると 入れたほうがいいと思うのですが・・・。 計算式でも出来ると思いますが おそらく複雑になると思うのでVBAを使って+計算式が いいと思います。 ●サンプルコードを以下に書きます。 Sheet1のデータから品番(Like検索)のデータを 読み込んでSheet2に書き出すコードです。 ---------------------------------------- ※サンプルマクロ ParamOutputData ---------------------------------------- Option Explicit Sub ParamOutputData() Dim strKeyword As String Dim strJouken As String strKeyword = InputBox("品番を一部入力してください。") Do While strKeyword = "" strKeyword = InputBox("値が入力されていません。" & vbCrLf & _ "品番を一部入力してください。") Loop strJouken = "*" & strKeyword & "*" Application.ScreenUpdating = False Sheets("Sheet2").Activate Cells.Clear With Sheets("Sheet1") .Range("A1").AutoFilter Field:=3, _ Criteria1:=strJouken .Range("A1").CurrentRegion.Copy _ Destination:=Sheets("Sheet2").Range("A1") .Range("A1").AutoFilter End With Sheets("Sheet2").Columns("A:F").AutoFit Application.ScreenUpdating = True End Sub --------------------------------------------- (1)マクロを上記のマクロ名で登録して -----の間をモジュールを入力するフォームページに まるっとコピーしてください。 (2)Sheet1に下記のデータを入れてみてください --------------------------------------------- No. 商品名 品番 単価 1 ああああ AA 50 2 ああああ BB 100 3 いいいい CC 200 4 いいいい DD 300 5 いいいい EE 500 6 ううう FF 20 ---------------------------------------------- (3)結構短い記述でVBAも案外便利だったりします。 サンプルコードを元に色々いじってみてください。 まずデータベースを別に作ったほうが いいですね。 ご参考になれば。

toduki
質問者

お礼

アクセス、私の残業代1ヶ月分で余裕で買えるんですけど本当にそういう事に理解の無い会社なもので。 サンプルマクロありがとうございます。「自動で出てくるってすばらしい!」とオートSUMを初めて使った時以来の感動を覚えました。データベースもどきは作っているので、サンプルを元に色々やっています。 度々の回答、ありがとうございました。

回答No.3

SUMが使えるのなら次はVLOOKUPを覚えられると こんなケースではとても便利です。 ただし、A1に品番を入れ、B1に品名を返すような表の作りにしておく必要があります。 このVLOOKUPを使う前に、 品番、商品名、単価の3つの項目がある対応表を作っておく必要があります。 マイクロソフトUSERSからです。 http://www.microsoft.com/japan/users/office_expert/200304/02-1.asp 本を買われる前に少しでもお役に立つといいですね。 また、具体的な応用の方法は、 「どこそこのセルから表を作って、  どこに入力したらどこに商品名が出て。。」 という書き方をしてくだされば回答がつきやすいです。

toduki
質問者

お礼

maccheroniさん アドバイスありがとうございます。 教えていただいたページ、存在を知りませんでした。本を買う前にこのページで勉強します! 質問の仕方まで教えてくださってありがとうございます。上記のページでもう少し勉強してから、また判らない時に質問しようと思います。

  • kensaku
  • ベストアンサー率22% (2112/9525)
回答No.2

書店に行って、CD-ROMのついた参考図書をお買いになるといいと思います。おおよそ仕事で使う簡単な表の類は、CDに入っています。 安いのは500円くらいから、高くても2000円くらいで買えます。

toduki
質問者

お礼

kensakuさん アドバイスありがとうございます。 CD-ROMが付いた参考書があるのですね。この間書店をウロついた時には目に入っていませんでした。今度探しに行ってみます。2000円くらいなら経費で出してもらえそうですし。

  • kaiu
  • ベストアンサー率20% (65/315)
回答No.1

こんにちは。 内容からすると 品番をキーにしたデータベースを作成して アクセスで作った方が いいと思うのですが。

toduki
質問者

お礼

kaiuさん 回答ありがとうございます。 アクセス、会社のパソコンに入ってないのです。 私も使ったことがないので判らないですし。

関連するQ&A

  • ファイルメーカーpro6の繰り返しフフィールドについて

    ファイルメーカー超初心者です。売り上げ明細表ファイルと商品ファイルがあって、売り上げ明細表の方は商品番号をリレーションして商品名&単価をルックアップしています。商品番号、商品名、単価は繰り返しフィールドで作成したのですが、日別、商品別の小計を表レイアウトで見たいとき、繰り返しフィールドでは横並びになってしまいます。どうしたらいいのでしょうか? どなたか教えて下さい!!

  • ファイルメーカーpro6、繰り返しとポータル

    ファイルメーカー超初心者です。 以前も同じような質問をさせて頂いたのですが、再質問です。 受注明細ファイルがあります。 日付、顧客名、商品番号、商品名、単価、本数、小計・・・ とういうような内容です。 商品ファイルには、 商品番号、商品名、単価が入力されています。 受注明細ファイルは商品番号でリレーションし、 商品名と単価をルックアップ、繰り返しで設定しています。 ですが繰り返しフィールドを使うと、日別、商品別の小計が出ません。 商品ごとの在庫管理もしたいので、繰り返しフィールドを使わずにポータルを使った方がいいということまではわかるのですが、実際どのようにしたらいいのかさっぱりわかりません。 初心者には繰り返しが理解しやすいということもわかるのですが・・・。 すみませんが、教えて下さる方がいらっしゃいましたら、是非お願いします。

  • エクセルの請求書の作り方

    毎回苦戦しているので良い方法があれば教えて下さい。 シート1に必要なデータを投入。 シート2に請求書&納品書の雛型。 シート1の列1をシート2の納品書の1に シート1の列2をシート2の納品書の2に という形で作りたいのですが 毎回手入力でリンクさせてるんですが たびたび商品が変わったり減ったり増えたりで 苦戦してます。 アクセスで作れば簡単なのはわかるんですが 会社の環境でアクセスが使えません。 おわかりになる方、どうぞよろしくお願い致します。

  • Excelで請求書を作成、印刷の際に条件が。

    お世話になります。 Excelで請求書を作成しようとしています。 1枚目の上部には、請求先と弊社の住所や振込先、請求合計金額等を記入し、その下にズラっと商品明細を打ち込んでいきます。最後に小計と消費税、全体の合計を入力する所があります。 (1)一番左の列に行番号を入れているので、予め行番号だけ入力しておき、商品明細を打ち込んだ行のみ印刷したいです。 (2)印刷する時に、1枚目は上部の住所等と商品明細、2枚目以降は商品明細のみ、商品詳細の最終ページで小計、消費税、合計の印刷をかけたいのです。 今はとりあえず、シートに分けて入力をして、それぞれ印刷をかけているのですが、計算が大変なのと、商品の明細がどのくらいになるのか、予め分からないので、入力するにも考えながらやっています。 何か良い方法はありませんか?宜しくお願いします。

  • ExcelのVBAにて

    ExcelのVBAにて お世話になります。 今、請求書を作っています。 sheet1に請求書があり、sheet2に一覧があります。 sheet1の宛先欄に客先名を書いたら、該当する行を抜き出して請求書の欄に書き出すプログラムをお教えください。 <sheet1> 佐藤 様 ご請求額:3900円 商品名   数量  単価   金額 りんご   3   500  1500 バナナ   4   600  2400 <sheet2> 請求先  商品名  数量  単価  金額 佐藤   りんご   3  500 1500 田中   りんご   2  500 1000 田中   ばなな   1  600  600 佐藤   ばなな   4  600 2400 と、いう感じのExcelファイルです。

  • エクセル(Excel) 納品書の作り方【改めて】

    昨日http://okwave.jp/qa/q7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。 ■エクセル(Excel)で納品書の作成をしています。 シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて 納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、 昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが 反映されずN/?のようなエラーになってしまいます。 ※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。 くっつけてありますが、左側がシート1・右側がシート2です。 1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。 2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。 宜しくご教授お願い致します。

  • エクセル文字サイズ変更を他のシートに参照させるには

    http://okwave.jp/qa/q6527922.html 過去にこのような質問からエクセルで顧客毎の単価一覧と、納品、納品(控)、請求、と、 シートをコピーして作りました。 で、シート2で納品書を作りその入力内容が納品(控){シート3} 請求{シート4}に 自動で入力するように参照させています。 顧客名の中に、名前が少し長くセルに収まらない時があるので シート2の納品書でそのセルの文字のサイズを小さく変更したんです。 しかし、納品(控){シート3}と請求{シート4}は、文字のサイズが変わらず そのままなんです。 シート3、シート4も同じように同時に文字のサイズが変わるようにするには どうすればいいのでしょうか? よろしくお願いします。

  • EXCEL 請求書を発行したいです

    EXCEL2010で、 顧客数分のシートが有り 概ね100位  (シート名は便宜上"1" "2" "3" ・・・と数字です) 各シートには顧客名と顧客毎にレンタルしている商品の一覧表があります。 顧客ごとに商品の数が違い 1項目の場合もあれば 10項目ある顧客があります。 毎月60/100位の顧客に請求書を発行していますが、 上記シートのデーターを元に決まった書式の(EXCELです)請求書を出力したいです。 請求書の商品一覧欄に各シートの商品を入れたいのですが、 請求書上は、商品数+1行 位で収めたいのです。 現在は、各シートがそれぞれの顧客の請求書になっていて、 毎月商品を修正 印刷して請求書を出していますが、 頻繁に商品の追加、削除があり その都度 行を追加・削除しております。 又 追加削除に伴い並べ替えも実施しています。 計算式が入ってあるセルが中にあるので 行を追加・削除することで、 再度 確かめ算をする必要があり、この作業が現在負担になっております。 入力作業は、一度の作業で、一覧と請求書は、 別にできないかと考えたのがとどのつまりです。 何か良い方法ございませんか? VBAでもマクロでも結構です。 ご教授願います。

  • EXCELにて請求書と請求明細を作るとき

    EXCELにて請求書と請求明細を作るときに効果的な関数があったら教えて下さい。 SHEET1が請求書だとします。 項目は 1. 12/1 りんご 3個 150円 2. 12/3 バナナ 2個 200円 3. 12/10 メロン 1個 500円 4. 12/18 りんご 5個 250円 5. 12/20 バナナ 1個 100円 の場合、SHEET2がりんごの明細 SHEET3がばななの明細 SHEET4がメロンの明細とます。 SHEET2に  12/1 りんご 3個 150円 12/18 りんご 5個 250円 と入り、SHEET3に 12/3 バナナ 2個 200円 12/20 バナナ 1個 100円 と明細が各商品のシートごとに入るような関数はありますか? 請求書を訂正した場合に、自動的に明細も変更になるようにしたいのですが、可能なことでしょうか?(12/20のバナナをメロンに替えたら、SHEET4の明細に12/10と12/20が入り、SHEET3から12/20分が抜けるという状態です)

  • エクセルで請求書を作りたい!

    エクセルで請求書を作りたいのですが、シート1に請求書のテンプレートを作成した状態で、シート2とシート3に商品リストを作成してあります。  そこで、シート1の請求書の欄に商品番号と商品名の欄があるのですが、商品数が8000もある上に、複数の商品の発注が予期されるため、いちいち商品名を入力したくありません(面倒くさがりなので…。)そこで、シート1の商品番号欄に商品番号を入力することで、自動で商品名がシート1の商品名欄に反映されるような、関数又はマクロの設定の仕方を教えてください。  文面を見ると初心者であることがわかると思いますが、出来るだけ詳しくお願いいたします。

専門家に質問してみよう