
売上集計表があり、A列に全商品のコードが表示されてます。
毎日の売上商品のデータを商品コード別に数量を入力して同じ内容のセルの行の位置を合わせる作業を毎日行っています。
毎日の売上データはエクセルで集計されたデータを貼り付けて行っています。これをなんとかVBAで処理したいのですが、どうしたらいいのかわかりません。
内容としてはA列に全商品の商品コードが既に入力されています。
月のはじめは、B列とC列に一日の集計データそのまま貼り付けます。
A列の商品コードと同じ商品コードの行に合うまで空白のセルを挿入していきます。
次の日は、D列とE列、その次はF列とG列と右に貼り付けしていきます。
商品コードは約3000件、毎日の集計データ数は約500件です。
どうか教えてください。
完成例)
A列 B列 C列 D列 E列 F列 G列 H列 I列
商品コード 10/1分 10/2分 10/3分 10/4分・・・続く
商品コード 数量 商品コード 数量 商品コード数量
CZ1.000 CZ1.000 10 CZ1.000 20
CZ1.005 CZ1.010 15 ←セルの挿入で
CZ1.010 CZ1.010 30 CZ1.020 30 下げる作業を
CZ1.015 CZ1.030 10 毎日行ってます。
CZ1.020 CZ1.020 11 CZ1.020 20 CZ1.040 40
CZ1.025
CZ1.030 CZ1.030 11 CZ1.030 10
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちわ
試してみて
Sub 商品コード配置()
Dim Dic商品コードと行 As Object
Dim 配列商品コード数量, 編集前商品コード数量
Dim 最終行 As Long
Dim i As Long, j As Long, k As Long
Dim 商品コード As String
Sheets("Sheet3").Activate '実際のシート名に変更
最終行 = Cells(Rows.Count, "A").End(xlUp).Row
配列商品コード数量 = Cells(3, "A").Resize(最終行 - 2, 1).Value
Set Dic商品コードと行 = CreateObject("Scripting.Dictionary")
For i = 1 To 最終行 - 2
Dic商品コードと行.Add 配列商品コード数量(i, 1), i
Next i
For i = (31 * 2) To 2 Step -2 '最大31日 一日二列
ReDim 配列商品コード数量(1 To 最終行 - 2, 1 To 2)
k = Cells(Rows.Count, i).End(xlUp).Row
If k > 2 Then
編集前商品コード数量 = Cells(3, i).Resize(k - 2, 2).Value
For j = 1 To k - 2
商品コード = 編集前商品コード数量(j, 1)
If 商品コード <> "" Then
If Dic商品コードと行.exists(商品コード) Then
配列商品コード数量(Dic商品コードと行.Item(商品コード), 1) = 商品コード
配列商品コード数量(Dic商品コードと行.Item(商品コード), 2) = 編集前商品コード数量(j, 2)
Else
MsgBox "商品コード " & 商品コード & " に間違いがあります。"
End If
End If
Next j
Cells(3, i).Resize(最終行 - 2, 2).Value = 配列商品コード数量
End If
Next i
Set Dic商品コードと行 = Nothing
End Sub
すぐに回答いただきまして有難うございます。
やりたいことにも、コード違いの対処まで
考えていただき、大変助かりました。(^▽^)♪
No.2
- 回答日時:
3行の一番右に値がある列とその1つ左の列を対象に並び替えます。
あくまでもサンプルですのでエラー処理等は入れていません。あしからず。
Sub Sample()
Dim nData(), nPos()
Dim nRight, nDown, i
'3行目一番右の列を対象
nRight = Cells(3, Columns.Count).End(xlToLeft).Column
nDown = Cells(Rows.Count, nRight).End(xlUp).Row
ReDim nData(nDown - 3)
ReDim nPos(nDown - 3)
For i = 0 To (nDown - 3)
'移動先の行をワークシート関数のMatchで調べる
nPos(i) = WorksheetFunction.Match(Cells(i + 3, nRight - 1), Range("A:A"), 0)
nData(i) = Cells(i + 3, nRight)
Next i
'元のデータを消す
Range(Cells(3, nRight - 1), Cells(nDown, nRight)).ClearContents
For i = 0 To (nDown - 3)
'移動先に代入
Cells(nPos(i), nRight - 1) = Cells(nPos(i), 1)
Cells(nPos(i), nRight) = nData(i)
Next i
End Sub

ご回答いただき有難うございます。
やりたいことが、とても簡単に出来るようになりました。
大変、とっても助かりました。(^▽^)♪
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
- Excel(エクセル) エクセル 関数について 4 2022/08/05 11:03
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) vbaマクロについて シート1のA列にある商品コードが シート2のB列にある商品コードに該当する場合 2 2023/05/17 13:41
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
EXCELで2列を参照し、重複するものを横に並べたい
Excel(エクセル)
-
VBAでの行数を揃える方法
Visual Basic(VBA)
-
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
-
4
EXCELで重複行の横並びについて教えて下さい
その他(Microsoft Office)
-
5
エクセルで同じ名前の人が同じ列にくるように並べ替えたい
Excel(エクセル)
-
6
VBAで重複データを合算したい
Excel(エクセル)
-
7
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
access2021 VBA メソッドまたは...
-
オートフィルタで抽出結果に 罫...
-
JavaScriptの定数名が取り消し...
-
【VB6】実行ファイルとした後、...
-
C# コードビハインドについて
-
Excel VBAでOpenTextのFieldInf...
-
Exel VBA 別ブックから該当デ...
-
PreviewKeyDownイベントが2回...
-
Nullの使い方が不正です。
-
エクセルに見えない文字(JISX0...
-
改ページ
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
access2003 クエリSQL文に...
-
2つのチェックボックスを制御
-
UWSCでMOUSEORG関数が上手く処...
-
AccessでReplace関数を使うときに…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
access2021 VBA メソッドまたは...
-
JANコードとPOSコードは同じ?
-
access2003 クエリSQL文に...
-
Excel VBA素人です。VBAで図形...
-
1、Rstudioで回帰直線を求める...
-
Nullの使い方が不正です。
-
JavaScriptの定数名が取り消し...
-
PreviewKeyDownイベントが2回...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
ACCESSユニオンクエリでORDER B...
-
Exel VBA 別ブックから該当デ...
-
VBAでファイルオープン後にコー...
-
VBA リストボックス(複数条件...
-
ASCIIコードを文字に変換したい
-
【VB6】実行ファイルとした後、...
-
VBA 現在のセル番地を記憶、復...
-
COBOLの文法
おすすめ情報