![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
B1のセルに品番を入れたらA1に商品名、C1に単価、D1に小計が表示されるような請求明細とその明細をもとに納品日別で納品場所、使用期間、金額の入った請求一覧を1セット作り、それの単価に3%乗せた明細と一覧をもう1セット作りたいと思っています。
1つの商品名に対して品番は複数、1つの品番に対して単価は1つです。
自分はパソコン教室などに行ったことがなく、本もどれがいいのか判らないので+-*/、オートsumと関数、書式設定などはヘルプを参照して覚えました。会社の業種はリース業なのですが伝票類・在庫管理類、超アナログな会社です。
現在は全て1個1個入力してsheetとsheetをリンクさせて電卓叩いて・・・という作業をしているのですが、量が増えて締め切りに間に合わなくなってきてしまい質問させていただいた次第です。
よろしくお願い致します。
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列まで全てのデータが削除されます。
ただし、「複数セルを選択して削除」には対応しておりませんので悪しからず。
すごく丁寧な回答ありがとうございます。マクロとVBAの差も判っていないような私ですが、とても判り易くて助かりました。
自動で出てくるって素晴らしいですね!久しぶりに感動しております。
教えていただいたコードを元にVBAの勉強をしようと思います。ありがとうございました!
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ああああAA50
2ああああBB100
3いいいいCC200
4いいいいDD300
5いいいいEE500
6うううFF20
----------------------------------------------
(3)結構短い記述でVBAも案外便利だったりします。
サンプルコードを元に色々いじってみてください。
まずデータベースを別に作ったほうが
いいですね。
ご参考になれば。
アクセス、私の残業代1ヶ月分で余裕で買えるんですけど本当にそういう事に理解の無い会社なもので。
サンプルマクロありがとうございます。「自動で出てくるってすばらしい!」とオートSUMを初めて使った時以来の感動を覚えました。データベースもどきは作っているので、サンプルを元に色々やっています。
度々の回答、ありがとうございました。
No.3
- 回答日時:
SUMが使えるのなら次はVLOOKUPを覚えられると
こんなケースではとても便利です。
ただし、A1に品番を入れ、B1に品名を返すような表の作りにしておく必要があります。
このVLOOKUPを使う前に、
品番、商品名、単価の3つの項目がある対応表を作っておく必要があります。
マイクロソフトUSERSからです。
http://www.microsoft.com/japan/users/office_expe …
本を買われる前に少しでもお役に立つといいですね。
また、具体的な応用の方法は、
「どこそこのセルから表を作って、
どこに入力したらどこに商品名が出て。。」
という書き方をしてくだされば回答がつきやすいです。
maccheroniさん アドバイスありがとうございます。
教えていただいたページ、存在を知りませんでした。本を買う前にこのページで勉強します!
質問の仕方まで教えてくださってありがとうございます。上記のページでもう少し勉強してから、また判らない時に質問しようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
すべてのシートを選択してエク...
-
合計が0の行を削除
-
EXCEL VBA 区切り位置のプログ...
-
ローマ字入力で「トゥ」を入力...
-
「未使用」と「不使用」ってど...
-
1点の辻の字に変換したいがエク...
-
Excelでエラー(#N/Aなど)値を...
-
ExcelでVBAを使用した際に、『...
-
コマンドプロンプトが実行中か...
-
西暦の2桁表記に使うアポスト...
-
エクセルからアクセスにインポ...
-
パレート図等で「N=100」とあ...
-
漢字を出したい!
-
XMLデータってなんですか?
-
VLOOKUPで求めた数値をさらにVL...
-
チケット何回もエラーは高額請求?
-
エクセルで0.0と表示したい
-
バッチファイルでキー操作を行う。
-
他シートのある列を検索して一...
-
SUM関数の範囲に#N/Aが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
すべてのシートを選択してエク...
-
エクセルで時刻を自動入力する方法
-
Excelのデータが重いのはなぜで...
-
Excel VBA 答えが0になってし...
-
EXCEL VBAでデータを...
-
エクセル。ブック内検索で重複...
-
Excel2007入力規則
-
合計が0の行を削除
-
Excelでキーワード検索後にその...
-
エクセルの入力 エンターキーで...
-
名前順になる関数?
-
エクセルで、「袋詰め問題」を...
-
Excel VBA テキストボックスを...
-
大きい順に並べかえたい。 ので...
-
エクセルで30日以内に同内容の...
-
エクセルの既存のシートでは入...
-
エクセルで自動入力をマクロで...
-
数字入力の省略方法について教...
-
エクセルの中の漢字を一度にカ...
-
複数のスプレットシートで入力...
おすすめ情報