プロが教える店舗&オフィスのセキュリティ対策術

例えば表1のように同じ品番のデータが別行に重複して入力されています。このデータを表2のように同じ品番は同じ行に、また重複している品名も1つにまとめて集計したいのですが、うまく行きません。どなたか教えていただけないでしょうか
表1
品番 品名1 品名2 品名3 品名4 品名5
50 15      32  45
50     15  52      32
20 33  87          67

表2
品番 品名1 品名2 品名3 品名4 品名5
50 15  32  45  52
20 33  87  67  

A 回答 (4件)

意味が判らない点があるが以下でやって見ました。


数字は品番コードと解釈し、品名1 品名2 品名3 品名4 品名5とその下のコードとは関係ないものとした。
分解(test01前半)-ソート(test01の最後)-再組み立て(test02)の過程でやっている。
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
d = sh1.Range("A65536").End(xlUp).Row
' MsgBox d
k = 1
For i = 2 To d
For j = 2 To 5
If sh1.Cells(i, j) = "" Then
Else
sh2.Cells(k, "A") = sh1.Cells(i, "A")
sh2.Cells(k, "B") = sh1.Cells(i, j)
k = k + 1
End If
Next j
Next i
MsgBox k
sh2.Activate
sh2.Range(Cells(1, "A"), Cells(k - 1, "B")).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _
key2:=Range("B1"), Order2:=xlAscending
End Sub
Sub test02()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet2")
Set sh2 = Worksheets("sheet3")
d = sh1.Range("A65536").End(xlUp).Row
' MsgBox d
k = 1
j = 2
m1 = sh1.Cells(1, "A")
sh2.Cells(k, "A") = sh1.Cells(1, "A")
sh2.Cells(k, j) = sh1.Cells(1, "B")
m2 = sh1.Cells(1, "B")
j = j + 1
For i = 2 To d
If sh1.Cells(i, "A") = m1 Then
If sh1.Cells(i, "B") = m2 Then
Else
sh2.Cells(k, j) = sh1.Cells(i, "B")
m2 = sh1.Cells(i, "B")
j = j + 1
End If
Else
k = k + 1
j = 2
sh2.Cells(k, "A") = sh1.Cells(i, "A")
sh2.Cells(k, j) = sh1.Cells(i, "B")
j = j + 1
m1 = sh1.Cells(i, "A")
m2 = sh1.Cells(i, "B")
End If
Next i
End Sub

この回答への補足

うまく表現できなくてご迷惑をおかけしました。早速詳しいプログラムをいただき、本当に感謝しています。
何度もお手数をおかけして、誠に恐縮ですが、お時間の許す限りで結構ですので、今一度ご指導願えたら幸いです。

やりたいことを以下に順をおって書いてみます
1.各店舗から品番(1列目の数字)ごとに売れた品名  (2列目以降の数字)が記録されたデータがあります  が、各店舗で品名を適当な列にいれているため、同じ品 名のコードが入っている列が店舗ごとにばらばらです

2.そこで、例えば表1の品番50は2行になっています が、これを1行にまとめたい

3.このとき、表1の1行目と2行目で共通している品名 のコード15,32は15、15、32、32のように 重複して集計するのではなく表2のように1つにまとめ たい
・・・・ということなのですが、
実際のデータは数百件あり、とても手作業では困難なので
マクロ処理できればとてもたすかります。
ご迷惑おかけしますが、アドバイスねがえれば幸いです

補足日時:2005/01/03 21:27
    • good
    • 0

>今一度ご指導願えたら幸いです。



というのは、imogasiさんのマクロを実行してみたのですか?それともマクロの意味が分からなかったのですか?あるいは実行の仕方が分からなかったのですか?
もしVBAについてあまり知識が無いのならば、実際のシートに合わせてマクロを微調整したりするのも難しいかと思います。折角なので一度勉強してみてはいかがですか?

この回答への補足

補足が舌足らずでご迷惑おかけします。
imogasiさんのマクロは実行してみましたが、意図する結果と違っていました。しかし、参考にするところは多々あり、感謝しています。
VBAの基本的なところは理解できますし、自分でも色々試してみたのですが、私の能力を超えるみたいなので質問させていただきました。でもこれ以上いろんな方
の手をわずらわせるのも気がひけますので、おっしゃるとおり、自分で挑戦したいと思います。

補足日時:2005/01/04 08:34
    • good
    • 0

確認したいのですが、品名1~5に入力されているデータは、どの列に入力されているかは関係なく、数字だけが意味を持つデータなのでしょうか?


また、表2では品番50において品名52よりも品名45の方が先に来ていますが、この並び順はどんな順番でも良いのでしょうか?

この回答への補足

意味がはっきりしなくてすみません。品番は数字だけに意味があり、入力されている列は無関係です。また、品番の数値の並びも大小に関係なく、とにかく重複した数字があれば1つにまとめたいだけです。
よろしくお願いします。

補足日時:2005/01/03 18:14
    • good
    • 0

表1


品番 品名1 品名2 品名3 品名4 品名5
50 15      32  45
50     15  52      32
20 33  87          67

表2
品番 品名1 品名2 品名3 品名4 品名5
50 15  32  45  52
20 33  87  67  

これがさっぱり意味が分からん。
誰か訳してくれ。

この回答への補足

うまく表現できなくてご迷惑をおかけしました。
やりたいことを以下に順をおって書いてみます
1.各店舗から品番(1列目の数字)ごとに売れた品名  (2列目以降の数字)が記録されたデータがあります  が、各店舗で品名を適当な列にいれているため、同じ品 名のコードが入っている列が店舗ごとにばらばらです

2.そこで、例えば表1の品番50は2行になっています が、これを1行にまとめたい

3.このとき、表1の1行目と2行目で共通している品名 のコード15,32は15、15、32、32のように 重複して集計するのではなく表2のように1つにまとめ たい
・・・・ということなのですが、
ご迷惑おかけしますが、アドバイスねがえれば幸いです

補足日時:2005/01/03 20:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!