- ベストアンサー
「JANコード」と「日付」で販売個数表を作成したい
- エクセルで販売個数表を作成していますが、うまくいかず困っています。
- Sheet1のA列に現在在庫している全ての商品のJANコード、B1~AF1にある月の1日から31日までの日付が日付データとして入っています。
- 別ブックのSheet1にA列(販売日)、B列(JANコード)、C列(販売個数)のデータがあり、この販売個数を前述の個数表にJANコードと日付を対応させて入力したいのです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
GYOU = WorksheetFunction.Match(.Cells(i, 2).Value, Range("A1:A100"),FALSE) では如何でしょうか? ワークシート関数をVBAで使用する場合は、セルに関数を俺t確認するとよいですよ。 データのブックの空いている列に =MATCH(B2,表のブックの表のシートのA列,FALSE) でちゃんと行番号が表示されますか?
その他の回答 (2)
- hallo-2007
- ベストアンサー率41% (888/2115)
すみません、訂正がありました。 >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
- hallo-2007
- ベストアンサー率41% (888/2115)
取り合えず、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
お礼
なるほど!関数で確認ですね。勉強になります。 ご指摘の通り修正したらうまくいきました。ありがとうございました。 これで仕事がはかどります!