売上管理シート作成
現在売上管理シートをを作成していて、連番と重複を1行にまとめるコードをを調べながら書いてる途中です。
下記の項目機能を作成したいのですが、全くわからないので下記の項目が動くコード教えてもらえると幸いです。
・「No」は1からの連番を振り、1回の会計で1つのNoとする
・1商品毎1行で表記する(同一会計内において、「No」と「販売日時」は垂直方向でセル結合をする)
・「販売日時」は「会計」ボタンをを押した時点の日時とし、「YYYY/MM/DD hh:mm」の形式とする
・価格を表示する部分は「¥9,999(¥は半角文字)」の形式とし、数字は整数表記とする
・「販売額」は [単価×販売数]で計算する
会計ボタンを押すと、明細シートのA1セル「商品コード」B1セル「商品名」C1セル「単価」の下に情報が記入された後に、売上管理シートに「No」「販売日時」「商品コード」「商品名」「単価」「販売数」「販売額」データを反映したいです。
削除ボタンがあるので、会計ボタンを押した後は明細シートの情報を消します。
会計ボタンを押した後の明細シート↓
現在の売上管理シート↓
売上管理シート完成見本↓
会計ボタン
VBA
1'会計 2Sub Total() 3'売上管理のシートにNo、販売日時、商品コード、商品名、単価、販売数、販売額を記入 4 Dim lngNo As Long 5 Dim strNitiji As String 6 strNitiji = Format(Now, "YYYY/MM/DD hh:mm") 7 Dim lngEndRow: lngEndRow = Worksheets("売上管理").Cells(Rows.Count, 1).End(xlUp).Row 8 Dim Arow As Long 9 Dim i As Long, j As Long, k As Long 10 k = 0 11 Dim myDic As Object 12 Dim mykeys, myItems 13 Dim varArrayItems As Variant 14 Dim ProductCode, ProductName, Tanka, Hanbaisuu, Hanbaigaku 15 'Setステートメントで戻り値をオブジェクト変数に代入する 16 Set myDic = CreateObject("Scripting.Dictionary") 17 18 'A列でリストの最終行を調べる 19 Arow = Worksheets("明細").Cells(Rows.Count, 1).End(xlUp).Row 20 21 With Worksheets("明細") 22 For i = 2 To Arow 23 ProductCode = .Cells(i, 1).Value 24 If myDic.Exists(ProductCode) = False Then 25 ProductName = .Cells(i, 2).Value 26 Tanka = .Cells(i, 3).Value 27 Hanbaisuu = Application.WorksheetFunction.CountIf(.Range("B:B"), .Cells(i, 2).Value) 28 Hanbaigaku = Tanka * Hanbaisuu 29 varArrayItems = Array(ProductName, Tanka, Hanbaisuu, Hanbaigaku) 30 myDic.Add ProductCode, varArrayItems 31 End If 32 Next 33 End With 34 With Worksheets("売上管理") 35 .Cells(lngEndRow, 2).End(xlUp).Offset(1).Value = strNitiji 36 For j = 0 To myDic.Count - 1 37 mykeys = myDic.Keys 38 myItems = myDic.Items 39 '販売日時、商品コード、商品名、単価、販売数、販売額を表示する 40 .Range("A" & j + 2).Value = lngNo + 1 41 .Range("B" & j + 2).Value = strNitiji 42 .Range("C" & j + 2).Value = mykeys(j) 43 .Range("D" & j + 2).Value = myItems(j)(k) 44 .Range("E" & j + 2).Value = myItems(j)(k + 1) 45 .Range("F" & j + 2).Value = myItems(j)(k + 2) 46 .Range("G" & j + 2).Value = myItems(j)(k + 3) 47 k = 0 48 Next j 49 End With 50 51 'Dictionaryを初期化 52 myDic.RemoveAll 53 54End Sub
補足情報(FW/ツールのバージョンなど)
office365Excell
回答1件
あなたの回答
tips
プレビュー