- ベストアンサー
VBAを使用してエクセルの同じ内容のセルの行を合わせる方法
- エクセルで売上集計表を作成しており、同じ内容のセルの行を合わせる作業を毎日手動で行っています。VBAを使用してこの作業を自動化したいのですが、方法がわかりません。
- 売上データをエクセルで集計した後、商品コード別に数量を入力し、同じ内容のセルの行を合わせる作業が必要です。現在は毎日手動で行っていますが、VBAを使ってこの作業を効率化したいです。
- 売上集計表には商品コードが入力されており、毎日の売上データを商品コード別に入力しています。同じ商品コードの行の位置を合わせるために、空白のセルを挿入する作業が必要です。この作業をVBAで処理したいですが、方法が分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ 試してみて 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
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
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
お礼
ご回答いただき有難うございます。 やりたいことが、とても簡単に出来るようになりました。 大変、とっても助かりました。(^▽^)♪
お礼
すぐに回答いただきまして有難うございます。 やりたいことにも、コード違いの対処まで 考えていただき、大変助かりました。(^▽^)♪