dポイントプレゼントキャンペーン実施中!

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

A 回答 (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列まで全てのデータが削除されます。
ただし、「複数セルを選択して削除」には対応しておりませんので悪しからず。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/20 13:15

>アクセス、会社のパソコンに入ってないのです。


そうですか。
書類の作成にかかる人件費等を考えると
入れたほうがいいと思うのですが・・・。
計算式でも出来ると思いますが
おそらく複雑になると思うので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ああああAA50
2ああああBB100
3いいいいCC200
4いいいいDD300
5いいいいEE500
6うううFF20
----------------------------------------------
(3)結構短い記述でVBAも案外便利だったりします。
サンプルコードを元に色々いじってみてください。
まずデータベースを別に作ったほうが
いいですね。

ご参考になれば。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/20 13:04

SUMが使えるのなら次はVLOOKUPを覚えられると


こんなケースではとても便利です。
ただし、A1に品番を入れ、B1に品名を返すような表の作りにしておく必要があります。

このVLOOKUPを使う前に、
品番、商品名、単価の3つの項目がある対応表を作っておく必要があります。

マイクロソフトUSERSからです。
http://www.microsoft.com/japan/users/office_expe …
本を買われる前に少しでもお役に立つといいですね。

また、具体的な応用の方法は、
「どこそこのセルから表を作って、
 どこに入力したらどこに商品名が出て。。」
という書き方をしてくだされば回答がつきやすいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/18 22:07

書店に行って、CD-ROMのついた参考図書をお買いになるといいと思います。

おおよそ仕事で使う簡単な表の類は、CDに入っています。

安いのは500円くらいから、高くても2000円くらいで買えます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/18 19:09

こんにちは。



内容からすると
品番をキーにしたデータベースを作成して
アクセスで作った方が
いいと思うのですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/18 19:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!