アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロで処理を自動化したいのですが、作ることができません。
技術のある方、お助け下さい。

D列で上下のセルの値が同じ場合、A列、B列、C列のセルを統合する。
A2、A3を統合しますが、データは残す。A2、A3のデータは改行する
B2、B3を統合しますが、データは残す。B2、B3のデータは改行する。
C2、C3を統合します。データも統合する。
以降は同じ要領です。画像をご参照下さい。

※画像は1ファイルしか添付できないため、A-D列の実行結果をF-I列に表示していますが、
A-D列に表示(統合)させたいです。

「マクロ(Excel)で上下のセルの値が同」の質問画像

A 回答 (5件)

もしかして、こういうこと?


tom04さんのマクロの方が、遥かに高機能ですが・・・。

Sub sample()
Dim i As Long
For i = Cells(Rows.Count, "D").End(xlUp).Row - 1 To 2 Step -1
If Cells(i, "D") = Cells(i + 1, "D") Then
Cells(i, "A").Value = Cells(i, "A").Value & vbLf & Cells(i + 1, "A").Value
Cells(i, "B").Value = Cells(i, "B").Value & vbLf & Cells(i + 1, "B").Value
Rows(i + 1).Delete
End If
Next i
End Sub
    • good
    • 0
この回答へのお礼

まさに求めていた結果です。
とても感謝しております。

お礼日時:2018/07/15 23:26

No3です。


>A列が同じであれば、C列、D列も同じ(1つ)になります。
ということなので、No2の方のマクロで問題ないかと思います。

No2の方の返信で、
>提示して頂いたコードを実行したところ、一見セルが統合されているのですが、
>例としてA2-3をコピーして別セルに張り付けると、1行不要なセルがコピーされます。
>A4-6については2行不要なセルがコピーされます。
とありますが、どのようなことでしょうか。

こちらで確認した範囲では正常です。
A2-3をコピーして、G2-3に張り付け
A4-6をコピーして、G6-8に張り付けました。(添付図参照)

どのようにくずれるのか、画像を提示していただけると、わかりやすいかと。
「マクロ(Excel)で上下のセルの値が同」の回答画像4
    • good
    • 0

C列統合とのことですが、異なる場合は、改行を付加して連結ですか。


例えば、図で、C4=”大”ですが、C4=”中”の場合は、
結合セルは


のようになりますか?

D列も同様です。
例えば、D3="果実類"ですが、D3="果実類特別"の場合は
結合セルは
果実類
果実類特別
のようになりますか?
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
C列については、きゃべつの場合は必ず「大」になります。
D列についても、きゃべつの場合は必ず「野菜類」になります。
A列が同じであれば、C列、D列も同じ(1つ)になります。

お礼日時:2018/07/07 01:12

こんばんは!



>統合する。
は「セル結合」ですね。

画像ではC・D列(サイズと分類列)は必ず同じデータになっていますので、
C・D列はそのまま結合します。

一例です。

Sub Sample1()
 Dim i As Long, cnt As Long
 Dim myStr1 As String, myStr2 As String
  For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
   If Cells(i, "D") = Cells(i + 1, "D") Then
    myStr1 = Cells(i, "A")
    myStr2 = Cells(i, "B")
     cnt = 1
     Do While Cells(i, "D") = Cells(i + cnt, "D")
      myStr1 = myStr1 & vbCrLf & Cells(i + cnt, "A")
      myStr2 = myStr2 & vbCrLf & Cells(i + cnt, "B")
      cnt = cnt + 1
     Loop
      Application.DisplayAlerts = False
       With Cells(i, "A").Resize(cnt)
        .ClearContents
        .Merge
        .Value = myStr1
       End With
       With Cells(i, "B").Resize(cnt)
        .ClearContents
        .Merge
        .Value = myStr2
       End With
       Cells(i, "C").Resize(cnt).Merge
       Cells(i, "D").Resize(cnt).Merge
      Application.DisplayAlerts = True
       i = i + cnt - 1
   End If
  Next i
End Sub

こんな感じではどうでしょうか?

※ 細かい検証はしていませんので
不具合が出たらごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
お願いごとで申し訳ないのですが、もう1点教えて頂けないでしょうか。
提示して頂いたコードを実行したところ、一見セルが統合されているのですが、
例としてA2-3をコピーして別セルに張り付けると、1行不要なセルがコピーされます。
A4-6については2行不要なセルがコピーされます。

お礼日時:2018/07/07 01:05

具体的にどこがわからないの?


処理フローくらいは書ける?
セルの結合?文字の結合?繰り返し文?
今、どこまで出来てるの?
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。
レベルは条件分岐、繰り返し処理の問題を多少解ける程度です。

お礼日時:2018/07/07 01:00

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