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

エクセルで販売個数表を作成していますが、うまくいかず困っています。
Sheet1のA列に現在在庫している全ての商品のJANコード、B1~AF1にある月の1日から31日までの日付が日付データとして入っています。別ブックのSheet1にA列(販売日)、B列(JANコード)、C列(販売個数)のデータがあり、この販売個数を前述の個数表にJANコードと日付を対応させて入力したいのです。(例えばMというJANコードの品物が14日に2個売れたとしたら、MというJANコードの行の14日の列のセルに2と入れたいということです。)尚、別ブックの販売個数のデータは各商品ごとに1日の総売り上げ個数が出ているため、合算をする必要はなく、C列の数字をそのまま該当するセルに直接入れることができればOKです。
できることならマクロを使って、「別ブックを参照してデータを読み込み、販売個数表に個数を反映」させたいのですが、どのように作ったらよいのか具体的に教えていただけないでしょうか?関数を使って入力する方法もあれば是非、お願いします。

「「JANコード」と「日付」で販売個数表を」の質問画像

A 回答 (3件)

GYOU = WorksheetFunction.Match(.Cells(i, 2).Value, Range("A1:A100"),FALSE)


では如何でしょうか?
ワークシート関数をVBAで使用する場合は、セルに関数を俺t確認するとよいですよ。
データのブックの空いている列に
=MATCH(B2,表のブックの表のシートのA列,FALSE)
でちゃんと行番号が表示されますか?
    • good
    • 0
この回答へのお礼

なるほど!関数で確認ですね。勉強になります。
ご指摘の通り修正したらうまくいきました。ありがとうございました。
これで仕事がはかどります!

お礼日時:2009/09/13 01:30

すみません、訂正がありました。


>With WorkBook("データのBook名").Sheet2

With Workbooks("データのBook名").Sheets("Sheet1")
でしたね。

この回答への補足

ご解答ありがとうございました。
早速、教えていただいた通りにマクロを組んでみたのですが、実行時エラー"1004" WorksheetFunctionクラスのMatchプロパティを取得できません。と表示されてしまいます。どこに原因があるのか教えていただけないでしょうか?

Private Sub CommandButton1_Click()

Dim OPENFILENAME As Variant
Dim wb As Workbook
ChDir CreateObject("WScript.Shell").SpecialFolders("desktop")
OPENFILENAME = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls")
If OPENFILENAME = False Then
Exit Sub
End If

Set wb = Workbooks.Open(OPENFILENAME)

With wb.Worksheets("Sheet1")
For i = 2 To .Range("A65536").End(xlUp).Row
'データのブックの2行目から最後の行までの繰り返し
RETU = Day(.Cells(i, 1).Value) + 1
'データのi行目の日付の日にちと1を足した数が表の横方向の列番号
GYOU = WorksheetFunction.Match(.Cells(i, 2).Value, Range("A1:A100"))
'ワークシート関数を使って、i行目のJANが表の何行目にあるか
Cells(GYOU, RETU).Value = .Cells(i, 3).Value
'表の指定した行と列番号にデータの3列目(つまり個数)を入れる。
Next
'データの次行で繰り返し
End With

End Sub

補足日時:2009/09/10 17:54
    • good
    • 0

取り合えず、VBAの流れだけです。


表のBookとデータのBookが開いている状態で、表のシートを表示しているとします。
Sub Test1()
With WorkBook("データのBook名").Sheet2
For i = 2 To .Range("A65536").End(xlUp).Row
'データのブックの2行目から最後の行までの繰り返し
RETU = Day(.Cells(i, 1).Value) + 1
'データのi行目の日付の日にちと1を足した数が表の横方向の列番号
GYOU = WorksheetFunction.Match(.Cells(i, 2).Value, Range
("A1:A100"))
'ワークシート関数を使って、i行目のJANが表の何行目にあるか
Cells(GYOU, RETU).Value = .Cells(i, 3).Value
'表の指定した行と列番号にデータの3列目(つまり個数)を入れる。
Next
'データの次行で繰り返し
End With
End Sub
    • good
    • 0

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