2017-05-29 12 views
-1

マージに関して多くの質問がありましたが、この特定の質問に答えるために(私のエントリーレベルの能力で)操作できるものは何もなく、ずっと感謝していますあなたの専門知識と助けのために!"0"を除くセルが同じ値を持つ列をマージする

私は、特定の範囲で同じ値のセルの異なるグループをマージしようとしています。

以下は、入力の例と望ましい結果です。私は "0"と "いいえ"が表示されないようにフォーマットされたファイルを持っていますが、実際の説明(50%オフのように置換されています)はかなり長く、単一のセルでは見ることができません。セルをマージして情報をよりよく表示する。新しい店舗が毎週追加される複数の店舗もありますので、手動でのマージは避けてください。

入力

Month     January February March  April  May 
Store 1 Campaign Period no  yes  yes  yes   no 
Campaign Details   0  50% off 50% off 50% off  0 
Store 2 Campaign Period no  no  no  yes  yes 
Campaign Details   0  0   0 spring fling spring fling 

所望の出力

Month     January February March April  May 
Store 1 Campaign Period no  yes   yes yes  no 
Campaign Details   0   50% off    0 
Store 2 Campaign Period no  no   no  yes  yes 
Campaign Details   0  0   0  spring fling  
+1

こんにちは、ようこそ。助けを得るためには、マクロを書く際の個人的な試みを示す必要があります。基本的には、テーブル内のセルにまたがって、同じ行にある同じセルのセットに同じ「説明テキスト」がある場合は、それらをマージします。既に開始している場合は、これを開始するか、現在のコードを投稿してください。完了するのを手伝っていただきます。 –

+0

フィードバックありがとうございます!私は以下のコードを入力すると、私は「メモリ不足」のエラーが表示さ –

+0

がここに申し訳ありませんが、それは次のとおりです。サブsbMergeColumns()細胞に、私のために = 16(Rows.Count、1).END(xlUp).Row 場合、範囲( "ディ:BDI")<> "0" か範囲( "ディ:BDI")<> "" そして、後藤16 レンジ( "ディ:BDI")。(true)をマージ 次の 終了サブ –

答えて

1

これはあなたが始める必要があります。データは "Sheet1"にあると想定されます。列 'A'の「キャンペーンの詳細」でラベル付けされた行のセルをマージします。マージは、同じ値を持つ隣接行セルに対して実行されます。同じ値を持つ2つ以上の隣接セルがマージされます。

Option Explicit 

Sub MergeSameDetails() 
    Dim sht As Worksheet 
    Set sht = Worksheets("Sheet1") 

    Application.DisplayAlerts = False 

    With sht 
    Dim lastrow As Integer, i As Integer, j As Integer, cnt As Integer 
    Dim val As Variant 
    lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    For i = 1 To lastrow 
     If .Cells(i, "A").Value = "Campaign Details" Then 
     cnt = 1 
     val = .Cells(i, 2).Value 
     For j = 3 To 7 
      If val = .Cells(i, j).Value Then 
      cnt = cnt + 1 
      Else 
      If cnt >= 2 And val <> "0" Then 
       .Range(Cells(i, j - cnt), Cells(i, j - 1)).Merge 
       .Cells(i, j - cnt).HorizontalAlignment = xlCenter 
      End If 
      cnt = 1 
      val = .Cells(i, j).Value 
      End If 
     Next 
     End If 
    Next 
    End With 

    Application.DisplayAlerts = True 

End Sub 
+0

すぐに感謝してくれてありがとう!私はこのコードを "Campaign Details"の列 "C"で始まり、 "D:BD"からのj範囲に調整しようとしましたが、 "Subscript out of range"というエラーを受け取ります。私は "キャンペーンの詳細"が列 "A"にあったが、同じエラーを受けたように私のExcelシートを編集しました。あなたは助けてもらえますか? –

+0

ああ、心配しないで!私はそれを少し楽しんで列の設定を調整し、それは働いた!あなた大好き! –

関連する問題