[[20171002232311]] 『[20170926142012]商品名の行を揃えますの変更』(akio) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『[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 >


上記のデータは、きれいに配置してアップしたのに後で見ればひっついて見にくく
なっています、すみませんでした。
配置は、下記のとおりです。先月の文字は、F列にきます。
C列とH列は、数字が入っていない箇所もあります。

A列  B列  C列   D列    F列   G列  H列  I列

 今月                                 先月 
 商品名 金額 値引き額  購入者        商品名    金額  値引き額  購入者

(akio) 2017/10/03(火) 06:21


Sub Macro1()
  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


++様、
上記解答が、頂けないのは、私が当初の表から変更し
それに関して質問も変更したからでしようか?
(ako) 2017/10/04(水) 04:08

私の中でチャチャット答えられるならお答えしますが

コーティングに考えないといけない場合
仕事中よっぽど暇じゃないと答えられません

結構私は単純作業しか答えていません

他の方のお答えを待つか 私が作るまで待って貰うか
どちらかです

申し訳御座いません 
仕事合間の気分転換 若しくは暇つぶしですから

(++) 2017/10/04(水) 09:09


前回の質問 ?o様のコード 稲葉様のアドバイス等
実はまったく読んでません

ただ 項目ごと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


Sub main()
    '稼動条件:
    '先月列・今月列で商品種が同一であること(新規/廃止/売上ゼロなし)
    '先月列・今月列で商品順が同一であること
    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

mm様有難うございます。

実行時エラー6 オーバーフローしましたと出ます。
(akio) 2017/10/04(水) 17:24


++様
早速返答を頂き有難うございます。
この文章を打ってアップしようと思ったら上記mmさんと重なってアップ出来ませんでした。

先程帰って来ました。

上記のコードでは、確かに純売上高の次に空白が入ります。
しかし当初からお伝えしているのは、当月のデータと先月のデータを各商品名の頭を揃えて
並べて頂くことでした。したがって当月の水着のデータの純売上高の次の行は空白ですが、
右の同じ行は、まだ水着のデータがあるのですが、水着の間の行が空白になります。

改めて、質問です。下記、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


1シート
今月 A-D先月E-H
各々独立している

各々売り上げ数が違うから
各製品終了行が
ばらばらである

商品ごとグループ分けみたいに
段差をなくした見やすい形にする
以上がやりたいことだと 考えました

構成として 商品名から始まって純売り上げまで出来上がっていると
考えていいのですね?
(++) 2017/10/04(水) 18:48


はい、その通りです。
お願いします。
(akio) 2017/10/04(水) 19:09

++様
おはようございます。週水曜日に++さんは、
構成として 商品名から始まって純売り上げまで出来上がっていると
考えていいのですね?と言って下さったのであてにして
先週木曜日から今までこのサイトをずーっと見ていました。
仕事が忙しいと、聞いていましたから催促はしないようにと思っていました。
しかし何の連絡もありません。
いつ頃出来ますか?

(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.