御質問させてください。
Excelバージョン:2013
Sheet1の品名・品番・色がSheet2(画像)の品名・品番・色が一致する際
指定されている注文日の日に対応するSheet2のセルに注文数の数量を入れたいです。
例:Sheet1 5.6行目 品名:ミカン 品番:003 色:キイロがSheet2に表示されている
条件が一致しているので(Z2セル)2/23に10、(AA2セル)2/24に0を入れる。
マクロによる自動計算式ご教授お願いいたします。
Sheet1
A B C D E
1 品名 品番 色 注文日 注文数
2 リンゴ 001 アカ 20210224 50
3 リンゴ 001 アオ 20210204 20
4 リンゴ 002 アカ 20210215 100
5 ミカン 003 キイロ 20210224 0
6 ミカン 003 キイロ 20210223 10
7 ブドウ 004 ムラサキ 20210224 90
8 ブドウ 004 ミドリ 20210205 30
9 ブドウ 005 ムラサキ 20210224 40
No.2ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Sheet2にない商品、品番、色はSheet2に登録されません。(無視されます)
sheet1に同じ商品、品番、色のものが複数存在した場合は、最後の注文数が設定されます。
Option Explicit
Public Sub 注文数設定()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim col2 As Long
Dim sho_count As Long
Dim i As Long
Dim dicT As Object
Dim key As Variant '商品のキー 品名|品番|色
Dim day_str As String
Dim day As Long
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
maxrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'sheet1 A列の最大行取得
maxrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 'sheet2 A列の最大行取得
If maxrow2 Mod 10 <> 9 Then
MsgBox ("Sheet2 最終行不正")
End If
sho_count = maxrow2 \ 10 + 1
'商品対応の行(注文数を設定する行)を記憶
For i = 1 To sho_count
row2 = (i - 1) * 10 + 2
key = sh2.Cells(row2 + 3, "B").Value & "|" & sh2.Cells(row2, "B").Value & "|" & sh2.Cells(row2 + 7, "B").Value
dicT(key) = row2
sh2.Range("D" & row2 & ":AH" & row2).Value = "" '注文数をクリア
Next
'全商品を処理する
For row1 = 2 To maxrow1
key = sh1.Cells(row1, "A").Value & "|" & sh1.Cells(row1, "B").Value & "|" & sh1.Cells(row1, "C").Value
'該当商品がSheet2に存在すれば、注文数を設定する
If dicT.exists(key) = True Then
day_str = Right(sh1.Cells(row1, "D").Value, 2)
day = CLng(day_str)
row2 = dicT(key)
col2 = day + 3
sh2.Cells(row2, col2).Value = sh1.Cells(row1, "E").Value
End If
Next
MsgBox ("完了")
End Sub
No.1
- 回答日時:
1.Sheet2のレイアウトですが、1つの商品に対して必ず10行を使用する前提であってますか。
B列品番(3行で必ず結合セル)
B列品名(4行で必ず結合セル)
B列色 (3行で必ず結合セル)
2.例では注文日が2021年2月のケースだけですが、他の月のものもあるのでしょうか。
もし、ほかの月のものもあるとすると、Sheet2の年月を算出するとき、年は問題ないが、月は「2月末在庫」
なので、先頭の数字である1~2文字を取り出す必要があるので、やっかいになります。
A1に2021、B1に2 C1に月末在庫 となっていれば処理が簡単になります。
それとも、注文日の年月は、必ずSheet2の年月に一致する前提で良いのでしょうか。(そうであれば日付だけを見れば良いので簡単になります)
3.Sheet1の品名、品番、色に一致する商品がSheet2にないケースもあり得るのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) エクセル 指定セル繰り返しマクロ 4 2022/06/06 17:08
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
Dictionaryを使い4つの条件の一致で2つの集計列を集計したいのです
Visual Basic(VBA)
-
エクセルVBA 複数の条件を含む対象を抜き出す。
その他(Microsoft Office)
-
-
4
vbaでworksheetfunctionでの複数関数がエラーになります
Visual Basic(VBA)
-
5
VBA For Each 〜 複数条件について
Visual Basic(VBA)
-
6
EXCEL VBA Dictionaryで複数の値を格納→離れた位置に出力する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
エクセルVBAで実行時エラー...
-
VBA:同じ文字列データの比...
-
マクロを簡潔にしたいので教え...
-
VBAで複数シート選択
-
エクセルVBAについて
-
EXCELマクロで全シート対...
-
【WORD差し込み印刷】複数レコ...
-
シャープのアクオス sh-m25 を...
-
【VBA】UserForm1の中で使うワ...
-
Excel VBA インデックスの境...
-
VBAで作成する勤務表の合計を求...
-
Webクエリで困っています
-
VBA 最終行取得からの繰り返し貼付
-
excelの差込印刷で可視セルだけ...
-
SH704iに音楽を入れる方法を教...
-
パソコンからiPhoneに音楽を入...
-
SH906iTV SDを使って音楽を聴...
-
エラー出ているHDDからのデータ...
-
SH904iでiTunesの音楽を聴...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
エクセルVBA 別シートの複数の...
-
excelの差込印刷で可視セルだけ...
-
Excel VBA インデックスの境...
-
シャープのアクオス sh-m25 を...
-
VBA:同じ文字列データの比...
-
エクセル:VBAで月変わりで、自...
-
VBA別シートの最終行の下行へ貼...
-
エクセルVBAで 2種のリストを...
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
Excel VBAでシート内全体に非表...
-
歯抜けの時間を埋めて行の挿入
-
Excelマクロ データが上書きさ...
-
VBA 貼付先範囲(行)がいっぱ...
-
【WORD差し込み印刷】複数レコ...
-
EXCELマクロで全シート対...
-
エクセルVBAでの日付順のデ...
-
エクセル シート保護後コメン...
-
ノートパソコン 2in1について i...
おすすめ情報
早速のご回答、ご質問ありがとうございます。
情報不足で申し訳ございません。
1.あっています。
2.月毎のExcel表はありません。
(月毎に独立して作ろうと思っていますので)
注文日の年月は、必ずSheet2の年月に一致する前提で大丈夫です。
3.全くないケースもあり得ます。
御質問の意図を汲み取れているかわかりませんが宜しくお願いします。
なにか御質問があれば再度回答させていただきます。
以上