[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『[20170926142012]商品名の行を揃えますの変更』(akio)
mm様、[[20170926142012]]商品名の行を揃えます。のところで
お世話になりました。
教えて頂いたVBAのコードを実用的にいかしています。
ところが社内で項目が変わり自分でコードを感を働かせて変更するにも
VBAが素人の私にとって思うように行きません。
教えて頂けますか?
以前との変更は、小計の文字は変わりませんが小計の計算式は必要ございません。(違うシートで計算をしています。)只小計という文字はいります。
列の項目名が違っています。C列は値引き額が入ります。
小計の次の行に純売上高の文字が入ります。(純売上高の計算式B列−C列は必要ありません、こちらで計算をしています。)
下記の並びを参照ください。
最後に前回と同じように商品名を揃え、違う商品名との間を1行空けて頂く
VBAをお願いしたいのです。
ご無理を言って申し訳ありません。なにとぞよろしくお願いいたします。
A列 B列 C列 D列 F列 G列 H列 I列
今月 先月
商品名 金額 値引き額 購入者 商品名 金額 値引き額 購入者
水着 2,500 600 香川 水着 3,000 600 阪口
水着 1,900 吉田 水着 2,800 森山
水着 3,200 500 森 水着 4,500 500 井上
ゴーグル 1,000 佐藤 水着 1,800 中川
ゴーグル 800 品川 水着 2,300 播
ゴーグル 500 20 大田 ゴーグル 1,200 60 西
ゴーグル 600 加瀬 ゴーグル 1,000 東
ゴーグル 1,500 60 八雲 ゴーグル 900 北
鞄 16,000 泉 鞄 3,000 南
鞄 15,000 式村 鞄 13,000 2000 原
鞄 8,000 田口 鞄 9,000 八尾
小計 51,000 1180 鞄 12,500 1000 黒田
純売上高 49,820 鞄 8,000 山本
小計 63,000 4,160 純売上高 58,840
< 使用 Excel:Excel2013、使用 OS:Windows10 >
A列 B列 C列 D列 F列 G列 H列 I列
今月 先月 商品名 金額 値引き額 購入者 商品名 金額 値引き額 購入者
(akio) 2017/10/03(火) 06:21
Dim i As Long For i = Range("A" & Rows.Count).End(xlUp).Row To 3 Step -1 If Range("A" & i).Value <> Range("A" & i - 1).Value Then Rows(i).Insert End If Next i End Sub
(++) 2017/10/03(火) 09:16
For i = Range("A" & Rows.Count).End(xlUp).Row To 4 Step -1
小計と純売上高の間不必要なら
Cells(Rows.Count, "A").End(xlUp).Offset(-1, 0).EntireRow.Delete
小計と商品名の間不必要なら
Cells(Rows.Count, "A").End(xlUp).Offset(-2, 0).EntireRow.Delete
(++) 2017/10/03(火) 10:52
++様の1回目のコードで試しましたら(いいヒントを頂き下記の表に最後に純売上高総合計を追記しています)
思い通りにいかず確認をしましたら、その内、私の説明不足で、各商品名の下の行に小計、
その下の行に純売上高の表示が漏れていました。
また、下記の理想結果の表を作りこのサイトを見ましたときに2回目の回答で、私の思いが
載っていました。(空白が出来ているところの解除)
要は、下記のようにデータを揃えたいのです。
今月と先月のデータの分析を見やすくする為に、今月、又は先月の商品名データ(小計、純売上高含みます)の多い方に合わせた後、1行余白を入れて次の商品名を同じように揃える方法を教えて頂きたいのです。(下記データの計算式は、不要)1行余白を入れるコードのところを’で余白を入れる と書いて頂ければ有り難いです。後に2行に替える場合があるかもしれませんから、再度お聞きするには申し訳ございませんから‐‐
これが出来ますと仕事がかなり早くなり手間も省けます、楽しみにしています。
お忙しいところ申し訳ございませんが、よろしくお願いいたします。
?@今月 先月
商品名 金額 値引き額 購入者 商品名 金額 値引き額 購入者
水着 2,500 600 香川 水着 3,000 600 阪口
水着 1,900 吉田 水着 2,800 森山
水着 3,200 500 森 水着 4,500 500 井上
水着 1,800 中川 水着 2,300 播 小計 7,600 1,100 小計 14,400 1,100 純売上高 6,500 純売上高 13,300
ゴーグル 1,000 佐藤 ゴーグル 1,200 60 西
ゴーグル 800 品川 ゴーグル 1,000 東
ゴーグル 500 20 大田 ゴーグル 900 北
ゴーグル 600 加瀬
ゴーグル 1,500 60 八雲
小計 4,400 80 小計 3,100 60
純売上高 4,320 純売上高 3,040
鞄 16,000 泉 鞄 3,000 南
鞄 15,000 式村 鞄 13,000 2000 原
鞄 8,000 田口 鞄 9,000 八尾
鞄 12,500 1000 黒田 鞄 8,000 山本 小計 39,000 0 小計 45,500 3,000 純売上高 39,000 純売上高 42,500
純売上高総合計 xxx
(akio) 2017/10/03(火) 11:55
コーティングに考えないといけない場合
仕事中よっぽど暇じゃないと答えられません
結構私は単純作業しか答えていません
他の方のお答えを待つか 私が作るまで待って貰うか
どちらかです
申し訳御座いません
仕事合間の気分転換 若しくは暇つぶしですから
(++) 2017/10/04(水) 09:09
ただ 項目ごと1行あけて っていうから
書いただけです
(++) 2017/10/04(水) 09:16
(akio) 2017/10/04(水) 09:39
A列に純売上高で項目変更と考えまして
Sub Sample()
Dim rNm As Long
For rNm = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(rNm, 1).Value = "純売上高" Then Rows(rNm + 1).Insert
Next rNm
End Sub
(++) 2017/10/04(水) 13:56
'稼動条件: '先月列・今月列で商品種が同一であること(新規/廃止/売上ゼロなし) '先月列・今月列で商品順が同一であること Dim r1 As Range, r2 As Range, c1 As Range, c2 As Range, c As Variant, temp As String Sheets("Sheet2").Cells.ClearContents Set r1 = Sheets("Sheet1").Range("A3") Set r2 = Sheets("Sheet1").Range("E3") Set c1 = Sheets("Sheet2").Range("A3") Set c2 = Sheets("Sheet2").Range("E3") temp = r1.Value Do If r1.Value = r2.Value Then temp = r1.Value c1.Resize(, 4).Value = r1.Resize(, 4).Value: c2.Resize(, 4).Value = r2.Resize(, 4).Value Set r1 = r1.Offset(1) Set r2 = r2.Offset(1) Set c1 = c1.Offset(1) Set c2 = c2.Offset(1) Else If r1.Value = temp Then c1.Resize(, 4).Value = r1.Resize(, 4).Value Set r1 = r1.Offset(1) End If If r2.Value = temp Then c2.Resize(, 4).Value = r2.Resize(, 4).Value Set r2 = r2.Offset(1) End If If r2.Value <> temp And r1.Value <> temp Then For Each c In Array(c1, c2) c.Offset(1).Value = "小計" c.Offset(1, 1).Value = fsum(c.Offset(, 1)) c.Offset(1, 2).Value = fsum(c.Offset(, 2)) c.Offset(2).Value = "総売上高" c.Offset(2, 1).Value = fsum(c.Offset(, 1)) - fsum(c.Offset(, 2)) Next c Set c1 = c1.Offset(3) Set c2 = c2.Offset(3) End If Set c1 = c1.Offset(1) Set c2 = c2.Offset(1) End If If r1.Value = "" And r2.Value = "" Then Exit Do Loop Sheets("Sheet2").Range("A1:H2").Value = Sheets("Sheet1").Range("A1:H2").Value End Sub Function fsum(arg As Range) As Long Dim tot As Long Do If arg.Value <> "" Then Exit Do Else If arg.Row > 1 Then Set arg = arg.Offset(-1) Else Exit Function End If End If Loop Do tot = tot + Val(arg.Value) Set arg = arg.Offset(-1) If Val(arg.Value) = 0 Then fsum = tot: Exit Function Loop End Function (mm) 2017/10/04(水) 16:25
実行時エラー6 オーバーフローしましたと出ます。
(akio) 2017/10/04(水) 17:24
先程帰って来ました。
上記のコードでは、確かに純売上高の次に空白が入ります。
しかし当初からお伝えしているのは、当月のデータと先月のデータを各商品名の頭を揃えて
並べて頂くことでした。したがって当月の水着のデータの純売上高の次の行は空白ですが、
右の同じ行は、まだ水着のデータがあるのですが、水着の間の行が空白になります。
改めて、質問です。下記、1、を2、に並べて頂くコードを教えて下さい。(実際は、商品名は、沢山あります。)
1、
A列 B列 C列 D列 E列 F列 G列 H列 I列 1行目 当月 先月 2行目 商品名 金額 値引き額 購入者 商品名 金額 値引き額 購入者
水着 2,500 600 香川 水着 3,000 600 阪口
水着 1,900 吉田 水着 2,800 森山
水着 3,200 500 森 水着 4,500 500 井上
小計 7,600 1,100 水着 1,800 中川
純売上高 6,500 水着 2,300 播
ゴーグル 800 品川 純売上高 13,300
ゴーグル 500 20 大田 ゴーグル 1,200 60 西
ゴーグル 700 30 力石 ゴーグル 1,000 東
ゴーグル 600 加瀬 ゴーグル 900 北
ゴーグル 1,500 60 八雲 小計 3,100 60
小計 5,100 110 純売上高 3,040
純売上高 4,990
2、今月 先月
商品名 金額 値引き額 購入者 商品名 金額 値引き額 購入者
水着 2,500 600 香川 水着 3,000 600 阪口
水着 1,900 吉田 水着 2,800 森山
水着 3,200 500 森 水着 4,500 500 井上
小計 7,600 1,100 水着 1,800 中川
純売上高 6,500 水着 2,300 播
小計 14,400 1,100 純売上高 13,300
ゴーグル 1,000 佐藤 ゴーグル 1,200 60 西
ゴーグル 800 品川 ゴーグル 1,000 東
ゴーグル 500 20 大田 ゴーグル 900 北
ゴーグル 700 30 力石 小計 3,100 60
ゴーグル 600 加瀬 純売上高 3,040
ゴーグル 1,500 60 八雲
小計 5,100 110
純売上高 4,990
以上です。忙しいところすみませんが、よろしくお願いいたします。
(akio) 2017/10/04(水) 18:13
各々売り上げ数が違うから
各製品終了行が
ばらばらである
商品ごとグループ分けみたいに
段差をなくした見やすい形にする
以上がやりたいことだと 考えました
構成として 商品名から始まって純売り上げまで出来上がっていると
考えていいのですね?
(++) 2017/10/04(水) 18:48
(aklo) 2017/10/11(水) 09:30
他の質問者の方に伝えます。
当該での質疑応答は沢山ありますので、
改めての質問に切り替えたいとおもいますので、
よろしくお願いいたします。
(akio) 2017/10/28(土) 22:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.