- ベストアンサー
EXCELで請求書を作りたいのですが
B1のセルに品番を入れたらA1に商品名、C1に単価、D1に小計が表示されるような請求明細とその明細をもとに納品日別で納品場所、使用期間、金額の入った請求一覧を1セット作り、それの単価に3%乗せた明細と一覧をもう1セット作りたいと思っています。 1つの商品名に対して品番は複数、1つの品番に対して単価は1つです。 自分はパソコン教室などに行ったことがなく、本もどれがいいのか判らないので+-*/、オートsumと関数、書式設定などはヘルプを参照して覚えました。会社の業種はリース業なのですが伝票類・在庫管理類、超アナログな会社です。 現在は全て1個1個入力してsheetとsheetをリンクさせて電卓叩いて・・・という作業をしているのですが、量が増えて締め切りに間に合わなくなってきてしまい質問させていただいた次第です。 よろしくお願い致します。
- みんなの回答 (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列まで全てのデータが削除されます。 ただし、「複数セルを選択して削除」には対応しておりませんので悪しからず。
その他の回答 (4)
- kaiu
- ベストアンサー率20% (65/315)
>アクセス、会社のパソコンに入ってないのです。 そうですか。 書類の作成にかかる人件費等を考えると 入れたほうがいいと思うのですが・・・。 計算式でも出来ると思いますが おそらく複雑になると思うので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も案外便利だったりします。 サンプルコードを元に色々いじってみてください。 まずデータベースを別に作ったほうが いいですね。 ご参考になれば。
お礼
アクセス、私の残業代1ヶ月分で余裕で買えるんですけど本当にそういう事に理解の無い会社なもので。 サンプルマクロありがとうございます。「自動で出てくるってすばらしい!」とオートSUMを初めて使った時以来の感動を覚えました。データベースもどきは作っているので、サンプルを元に色々やっています。 度々の回答、ありがとうございました。
- maccheroni
- ベストアンサー率29% (12/41)
SUMが使えるのなら次はVLOOKUPを覚えられると こんなケースではとても便利です。 ただし、A1に品番を入れ、B1に品名を返すような表の作りにしておく必要があります。 このVLOOKUPを使う前に、 品番、商品名、単価の3つの項目がある対応表を作っておく必要があります。 マイクロソフトUSERSからです。 http://www.microsoft.com/japan/users/office_expert/200304/02-1.asp 本を買われる前に少しでもお役に立つといいですね。 また、具体的な応用の方法は、 「どこそこのセルから表を作って、 どこに入力したらどこに商品名が出て。。」 という書き方をしてくだされば回答がつきやすいです。
お礼
maccheroniさん アドバイスありがとうございます。 教えていただいたページ、存在を知りませんでした。本を買う前にこのページで勉強します! 質問の仕方まで教えてくださってありがとうございます。上記のページでもう少し勉強してから、また判らない時に質問しようと思います。
- kensaku
- ベストアンサー率22% (2112/9525)
書店に行って、CD-ROMのついた参考図書をお買いになるといいと思います。おおよそ仕事で使う簡単な表の類は、CDに入っています。 安いのは500円くらいから、高くても2000円くらいで買えます。
お礼
kensakuさん アドバイスありがとうございます。 CD-ROMが付いた参考書があるのですね。この間書店をウロついた時には目に入っていませんでした。今度探しに行ってみます。2000円くらいなら経費で出してもらえそうですし。
- kaiu
- ベストアンサー率20% (65/315)
こんにちは。 内容からすると 品番をキーにしたデータベースを作成して アクセスで作った方が いいと思うのですが。
お礼
kaiuさん 回答ありがとうございます。 アクセス、会社のパソコンに入ってないのです。 私も使ったことがないので判らないですし。
お礼
すごく丁寧な回答ありがとうございます。マクロとVBAの差も判っていないような私ですが、とても判り易くて助かりました。 自動で出てくるって素晴らしいですね!久しぶりに感動しております。 教えていただいたコードを元にVBAの勉強をしようと思います。ありがとうございました!