プロが教えるわが家の防犯対策術!

左図のような受注リストがあり、
右図は受注品を作成する為に必要な材料のリストです
(本来はそれぞれ別のファイル上にありますが例として同一ファイルに作成しています)

この2つを元に、「受注商品を作成するために必要な材料の総数」を
知りたいのですが、関数ではどうにもならず
マクロは記録マクロ程度にしか使えない為困っています

どなたかご教授ください

「Excel教えてください!!」の質問画像

質問者からの補足コメント

  • 見てくださってありがとうございます!

    全体でじゃがいもが何個必要なのか、人参が何個必要なのか、がわかればOKです
    一旦受注番号ごとの個数を出して全体を足す形が簡単なら勿論それでも大丈夫です!

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/10/23 06:30
  • 見てくださってありがとうございます!

    「発注リスト」は別シートが希望です
    結果の図はまだ運用に至っていない為(当方が手詰まりで)存在しないので形は特にありません
    目的は「全体で各材料は何個必要なのか?」なので
    それがわかれば発注リストはどんな形でも大丈夫です

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/10/23 06:34
  • まとめて補足すれば良かったんですね…不馴れですみません

    製造関係なのはそうなのですが、決まったフォーマットやプログラムなんて立派なものはありませんのでこのまま見ていただければ大丈夫です

    受注リストの処理ですが
    本来は数量よりも右に品番や納期の列が続いていて確かH列くらいに『未処理、発注済、納品済』みたいなステータスをいれたい列があったと思います(自宅からのため正確な列がわからずすみません)
    なので発注リストに出力した分は『未処理』から『発注済』になるようになると嬉しいです

      補足日時:2019/10/23 06:48
  • へこむわー

    お二方ありがとうございます。

    残念ながら私の力不足でワークシート名の書き換えが間違っているのかどちらもうまく動かず。。。
    本来のもっとごちゃごちゃしたデータを例に示した形になるべく近づけたのですが何がいけないのか。。。

    もう少し頑張ってみます。

      補足日時:2019/10/24 13:05
  • tom04様
    ご教授ありがとうございます!
    例に提示しました分同じように動きました!

    実ファイルに転載してみたところ28行目で

    .Cells(c.Row, myCol) = .Cells(c.Row, "B") * wS2.Cells(i, "C")

    となってしまいます。
    知識不足で申し訳ありませんが何が原因かわかりますでしょうか。。。

    No.4の回答に寄せられた補足コメントです。 補足日時:2019/10/24 16:03

A 回答 (28件中21~28件)

発注リストは図のようにされると事前に印刷用のレイアウトが組めて便利だと思います。


いかがでしょうか?
「Excel教えてください!!」の回答画像8
    • good
    • 0

「受注リスト」シートですが次のどれが良いですか?


① D列に「出力」みたいな項目を作り「発注リスト」に出力した行に「済」を入れていく
②「発注リスト」に出力した行はクリアする。
③ その他 ⇒ 「発注リスト」に出力した後の処理を詳しく説明して下さい
    • good
    • 0

もしかしてですけど。


これって工業製品を作成する際の製造仕様書に振り分ける(ロット毎)ための物ではないですよね?
実際はそれを記載(代入)するフォーマットが既に存在しているとか?
製造部隊とか倉庫作業員に配布するためのもの?
    • good
    • 0

因みに「材料リスト」と「受注リスト」は何行位ありますか?

    • good
    • 0

こんばんは!



お示しの画像通りだとして・・・
「材料」シートは「受注リスト」シートの商品1つに対して必要とする量だと解釈しました。
すなわち、肉じゃが1商品に対してじゃがいも→3 人参→2・・・
といった感じです。

別シートに表にしてまとめてはどうでしょうか?
↓の画像のようにSheet3にまとめるようにしてみました。
標準モジュールです。

Sub Sample1()
 Dim i As Long, j As Long
 Dim lastRow As Long, myCol As Long
 Dim wS1 As Worksheet, wS2 As Worksheet
 Dim c As Range, r As Range

  Set wS1 = Worksheets("受注リスト")
  Set wS2 = Worksheets("材料")
   Application.ScreenUpdating = False
    With Worksheets("Sheet3")
     .Cells.Clear
     wS1.Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=.Range("A1"), unique:=True
     .Range("B1") = "数量"
      lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
       With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
        .Formula = "=SUMIF(受注リスト!B:B,A2,受注リスト!C:C)"
        .Value = .Value
       End With
        For i = 1 To wS2.Cells(Rows.Count, "B").End(xlUp).Row
         Set c = .Range("A:A").Find(what:=wS2.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
         Set r = .Rows(1).Find(what:=wS2.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
          If r Is Nothing Then
           myCol = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
           .Cells(1, myCol) = wS2.Cells(i, "B")
          Else
           myCol = r.Column
          End If
           .Cells(c.Row, myCol) = .Cells(c.Row, "B") * wS2.Cells(i, "C")
        Next i
         lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
         .Cells(lastRow + 1, "A") = "合計"
          For j = 3 To .Cells(1, Columns.Count).End(xlToLeft).Column
           .Cells(lastRow + 1, j) = WorksheetFunction.Sum(Range(.Cells(2, j), .Cells(lastRow, j)))
          Next j
          .Range("A:A").HorizontalAlignment = xlCenter
          .Rows(1).HorizontalAlignment = xlCenter
         .Columns.AutoFit
         .Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
         .Activate
    End With
   Application.ScreenUpdating = True
    MsgBox "完了"
End Sub

こんな感じではどうでしょうか?m(_ _)m
「Excel教えてください!!」の回答画像4
この回答への補足あり
    • good
    • 0

もしかしたらですが「受注番号」の頭6桁(日付)ごとのリストを作れば良いのでしょうか?

    • good
    • 0

「材料リスト」と「受注リスト」から「発注リスト」を作成するわけですね?


それぞれのファイル名とシート名を教えて下さい。
①「発注リスト」は全てまとめた方がよいのでしょうか?
②「発注リスト」は別シートに作成すればよいのでしょうか?
出来れば結果の図も提示してくれると判りやすいです。
この回答への補足あり
    • good
    • 0

結果としてはどのような表示を希望されているのでしょう?


・ハンバーグ11個分の材料別必要個数
・ハンバーグ受注番号毎の材料別必要個数
でも書き方は変わると思います。
この回答への補足あり
    • good
    • 0

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