人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセル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(ゼロ)が入った時点でマクロが止まるようにお願いします。

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

●質問者: naranara19
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:みかん りんご イメージ エクセル オレンジ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●100ポイント ベストアンサー

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

仕様どうりで連続して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
◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ