ツイッターへの投稿のため、エクセルマクロVBAの作成をお願いします。



ある商品シートがあります。(★具体例は追記の形で書きますのでそちらをまずご覧ください)

B列に商品名が入っています。
G列に商品PRが入っているか、数字の「1」が入っています。
Q列に商品URLが入っています。

商品リストは下にたくさんあります。

マクロをかけると、
A列のセル内に、

商品名―商品URL商品PR
(つまり順番はB列⇒全角―(ダッシュ)⇒Q列⇒G列です)

が連結されるようにしていただきたいのです。
(切り取りではなく、コピーの形で)


【注意点】
・G列内が1のときには、「お勧めです!」「ぜひご覧ください」「人気商品です」「●●」「▲▲」
などと、5つくらいの言葉がランダムで結合されるようにお願いします。言葉は書き換えられるように見やすく置いていただけるとたすかります。

・ご存知の通り、ツイッターは140文字投稿です(全角半角関係なし)
 140文字をセル内が超えたときは、A列の該当セルが黄色くなるようにしてください

・エクセルはB列に商品名が空白になった時点で止まるようにお願いします。


お手数をおかけしますが、
よろしくお願いいたします。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2010/08/19 18:17:18
  • 終了:2010/08/19 19:54:43

ベストアンサー

id:SALINGER No.2

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

ポイント100pt

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

おすすめの言葉の設定箇所もわかると思います。5つだけではなくそのまま増やすこともできます。

Sub Macro()
    Dim i As Long
    Dim h As Variant
    Dim stPR As String
    Randomize
    
    h = Array("お勧めです!", "ぜひご覧ください", "人気商品です", "お買い得です", "チャンス")
    
    i = 2
    While Cells(i, "B").Value <> ""
        If Cells(i, "G").Value = 1 Then
            stPR = h(Int(Rnd * UBound(h)))
        Else
            stPR = Cells(i, "G").Value
        End If
        Cells(i, "A").Value = Cells(i, "B").Value & "―" & Cells(i, "Q").Value & stPR
        If Len(Cells(i, "A").Value) > 140 Then
            Cells(i, "A").Interior.ColorIndex = 6
        Else
            Cells(i, "A").Interior.ColorIndex = xlNone
        End If
        i = i + 1
    Wend

End Sub
id:naranara19

完璧でした!!ご回答もわかりやすく、助かります。またお勧めコメントをもっと増やせるということころが気に入りました。大変嬉しいです。今回も本当に感謝します。

2010/08/19 19:52:59

その他の回答(1件)

id:lvbestbbs No.1

⒉o⒑ャ宅釹回答回数129ベストアンサー獲得回数02010/08/19 18:31:39

(はてなにより削除しました)
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692010/08/19 18:41:38ここでベストアンサー

ポイント100pt

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

おすすめの言葉の設定箇所もわかると思います。5つだけではなくそのまま増やすこともできます。

Sub Macro()
    Dim i As Long
    Dim h As Variant
    Dim stPR As String
    Randomize
    
    h = Array("お勧めです!", "ぜひご覧ください", "人気商品です", "お買い得です", "チャンス")
    
    i = 2
    While Cells(i, "B").Value <> ""
        If Cells(i, "G").Value = 1 Then
            stPR = h(Int(Rnd * UBound(h)))
        Else
            stPR = Cells(i, "G").Value
        End If
        Cells(i, "A").Value = Cells(i, "B").Value & "―" & Cells(i, "Q").Value & stPR
        If Len(Cells(i, "A").Value) > 140 Then
            Cells(i, "A").Interior.ColorIndex = 6
        Else
            Cells(i, "A").Interior.ColorIndex = xlNone
        End If
        i = i + 1
    Wend

End Sub
id:naranara19

完璧でした!!ご回答もわかりやすく、助かります。またお勧めコメントをもっと増やせるということころが気に入りました。大変嬉しいです。今回も本当に感謝します。

2010/08/19 19:52:59
  • id:naranara19
    【具体例】
    1,B,G,Q
    2,みかん,愛媛産のみかんです。とても甘くてお勧め♪,http://www.…2
    3,りんご,1,http://www.…3
    4,お米,新潟産コシヒカリはやはり最高です。最高品ではありませんが、魚沼産にも負けないコシを実現。ぜひ一度お試しください!,http://www.…4


    ↓マクロ後


    1,A
    2,みかん―http://www.…2愛媛産のみかんです。とても甘くてお勧め♪
    3,りんご―http://www.…3人気商品です
    4,お米―http://www.…4,新潟産コシヒカリはやはり最高です。最高品ではありませんが、魚沼産にも負けないコシを実現。ぜひ一度お試しください!

    ※B列以降は省略(そのままです)
    ※4行目のA4は140文字を超えて黄色くセル内が色塗られている。

  • id:SALINGER
    lvbestbbsという人の回答は宣伝広告の可能性が高いのでオープンしないほうがいいです。
  • id:SALINGER
    すいません。一箇所修正です。+1が抜けてました。
    stPR = h(Int(Rnd * UBound(h)))

    stPR = h(Int(Rnd * (UBound(h) + 1)))
  • id:naranara19
    ご配慮ありがとうございました。気をつけますね。はじめてでびっくりしました。

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

トラックバック

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

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

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