• ベストアンサー

エクセル2013 マクロ ご教示ください

1行目は見出し Sheet1 A列に品番 B列に個数 C列に注文日 D列に納入日 Sheet2 A列に品番 B列に品が納入される週単位の数値 (1、2、4・・・等) Sheet1のA列~C列が入力された時、 Sheet2のA列を参照してSheet1のA列と合致した品番が Sheet2で見つかったら Sheet1のD列 = Sheet1のC列 * Sheet2のB列の数値x7日 を、表示させたいです。 合致する品番が無い場合は 該当なし と表示させたいです。 どうか宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 >Sheet2 B2は 2なので 2weeks(14日後)を >Sheet1 C2・・・2014/11/13 の14日後の日付を >Sheet1 D2・・・2014/11/27 と表示 要するに掛け算ではなく、足し算にすればよい訳ですね? 前回アップした画像の配置通りだとし、Sheet1のC列はシリアル値が入るとします。 Sheet1のD列の表示形式は好みの日付にしておいてください。 前回のコードの1行だけを足し算にすれば大丈夫だと思います。 >Cells(i, "D") = Cells(i, "C") * c.Offset(, 1) * 7 を >Cells(i, "D") = Cells(i, "C") + c.Offset(, 1) * 7 にしてみてください。 ※ 「*」を「+」に変えただけです。m(_ _)m

maron1010
質問者

お礼

素晴らしい‼︎ 出来ました‼︎‼︎ goo です。 ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! No.1さんの関数が簡単だと思うのですが、 VBAでの方法をご希望だというコトですので、一例です。 >Sheet1のD列 = Sheet1のC列 * Sheet2のB列の数値x7日 というコトはSheet1のC列がシリアル値だと大変な数値になりますので、 単に「数値」だけだという解釈です。 ↓の画像のような配置になっているとします。 Sheet1のシートモジュールにしてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") If Intersect(Target, Range("A:C")) Is Nothing Or Target.Count > 1 Then Exit Sub With Target i = .Row If WorksheetFunction.CountBlank(Cells(i, "A").Resize(, 3)) = 0 Then Set c = wS.Range("A:A").Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then Cells(i, "D") = Cells(i, "C") * c.Offset(, 1) * 7 Else Cells(i, "D") = "該当なし" End If Else Cells(i, "D") = "" End If End With End Sub こんな感じではどうでしょうか?m(_ _)m

maron1010
質問者

補足

>Sheet1のD列 = Sheet1のC列 * Sheet2のB列の数値x7日 の、書き方が悪かったかと思います。 ただお察しのとおりSheet1のC列には日付が入力されています。 D列になんとかして、Sheet2のB列 *7=Sheet1のD列に表示できないでしょうか? Sheet1 A2・・・100 の場合 Sheet2 A2に100があるのでB2を参照 Sheet2 B2は 2なので 2weeks(14日後)を Sheet1 C2・・・2014/11/13 の14日後の日付を Sheet1 D2・・・2014/11/27 と表示 何か別の考え方、方法があればご教示ください。 宜しくお願い致します。

回答No.1

Sheet1のD2に以下の関数式を書き、下まで引っ張ります。 =if(Or(A2="", B2="",C2=""), "", if(ISERROR(vlookup(A2,Sheet2!A:B,2,0),"該当なし",C2*vlookup(A2,Sheet2!A:B,2,0)*7)))

maron1010
質問者

お礼

早速の回答、ありがとうございます。 ただ、希望するものが、マクロなので 参考までとさせていただきます。