エクセルVBA作成をお願いします。


あるエクセルシートがあり、

G列に商品名、O列に名前が入っています。

1行目が見出しで、下に向かってずっとはいっています。


マクロをかけると、もしO列内で同じ名前(値)があったときには、上の方の名前の行のG列内に集中して商品名が入るようにしてほしいのです。


 G,O
1,商品名,名前
2,りんご,佐藤一
3,みかん,鈴木二
4,お米,田中四
5,スイカ,近藤五
6,オレンジ,佐藤一
7,納豆,鈴木二
8,おくら,佐藤一


とあったとします。マクロをかけると、
 G,O
1,商品名,名前
2,りんご、オレンジ、おくら,佐藤一
3,みかん、納豆,鈴木二
4,お米,田中四
5,スイカ,近藤五
6,空白,佐藤一
7,空白,鈴木二
8,空白,佐藤一


となるようにしていただきたいのです。
同じ名前の一番上に商品名がすべて入る形です。商品名と商品名の間は、「、」(全角)で区切ります。

6,7,8にある空白というのはスペースも入らず、商品名を切り取って貼り付ける形の残りのイメージです。

O列の名前に連続して0(ゼロ)が入った時点でマクロが止まるようにお願いします。

よろしくお願いいたします。

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/08/18 19:50:06
  • 終了:2010/08/18 20:49:49

ベストアンサー

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/08/18 20:41:42

ポイント100pt

こんな感じでどうでしょうか。

仕様どうりで連続して0が入っていないとマクロが止まらないので必ず0を入れてください。

Sub Macro()
    Dim r As Long
    Dim count As Integer
    Dim i As Long
    Dim f As Boolean
    r = 3
    While count < 2
        If Cells(r, "O").Value = 0 Then
            count = count + 1
        Else
            If Cells(r, "O").Value <> "" Then
                f = False
                For i = 2 To r - 1
                    If Cells(r, "O").Value = Cells(i, "O").Value Then
                        f = True
                        Exit For
                    End If
                Next i
                If f Then
                    Cells(i, "G").Value = Cells(i, "G").Value & "," & Cells(r, "G").Value
                    Cells(r, "G").Clear
                End If
                count = 0
            End If
        End If
        r = r + 1
    Wend
End Sub
id:naranara19

ありがとうございました。完璧でした。いつも、いつも迅速かつご丁寧な回答感謝しております。

お歳暮の一つでも送りたいくらいです。本当に助かっております。

2010/08/18 20:49:32

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません