
お世話になります。拙い説明になりますが、よろしくお願いします。
Excel2007で、↓のような表があります。
列A | 列B | 列C | 列D | 列E
0か1|40種類重複あり|10種類重複あり|ユニーク|ユニーク
(100行くらい)
この表に対して、列A, B, Cの値が同じである行を列ごとに結合するマクロを書きたいです。
例…
0|a|x|名前1|日付1
0|a|x| 名前2|日付2
これがA1から始まっていたとしたら、A1とA2、B1とB2、C1とC2を結合していきます。
結合する行は3行以上のこともありえます。
最初、変数 i 行目と i + 1 行目のA~C列が同じだったら、i 行目と i + 1 行目を結合する作業をループ…という風に書いたのですが、
i + 2 行目も結合すべき行だった時、前の行が結合された時点で i + 1 行目がEmptyになっているため、うまくいきませんでした。
どのように書いたら上手くいきますでしょうか。
よろしくご教授ください。
No.1ベストアンサー
- 回答日時:
こんばんは!
最終行から上に遡ってループさせた方が簡単だと思います。
Sub Sample1()
Dim i As Long
For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If Cells(i, "A") = Cells(i - 1, "A") And _
Cells(i, "B") = Cells(i - 1, "B") And _
Cells(i, "C") = Cells(i - 1, "C") Then
Application.DisplayAlerts = False
Range(Cells(i - 1, "A"), Cells(i, "A")).Merge
Range(Cells(i - 1, "B"), Cells(i, "B")).Merge
Range(Cells(i - 1, "C"), Cells(i, "C")).Merge
Application.DisplayAlerts = True
End If
Next i
End Sub
こんな感じではどうでしょうか?m(_ _)m
こんばんは!お返事をありがとうございます。
教えていただいたコードを試したら、意図した通りに動きました!
勉強になりました。ありがとうございました。
No.2
- 回答日時:
こんにちは
普通に考えると、重複データが必ず連続しているとは限らなそうなので、例えば、
1)A列、B列、C列をキーにデータをソート
2)各列で、同じデータが並ぶセルを結合
といった手順になりそうですが、並べ替えなどは必要ないのでしょうか?
また、一度この処理を行ったデータで、もう一度同じ処理にかけたいなどという場合は、上記のままではうまくいきません。(データが追加されたりして、もう一度整理したい(?)場合など)
何度でも、同じ処理ができるようにするには、上記に加えて
0)列内の結合を解除し、各セルに値をセット
( 2)の逆処理のようなもの)
といった処理も加えておく必要があるのかも知れませんね。
こんにちは!お返事ありがとうございます。
今回のデータでは、並べ替えはできないのです><
結合の処理をしてから、データが追加されることもないので、大丈夫でした。
細やかなご指摘をありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) この関数と同じ処理をVBAで行うにはどうしたら良いでしょうか? これは、1列の中に同じ値が複数存在し 21 2022/07/07 07:48
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 表に書いてある単語を1つの行に重複させないで書き出したい。 複数の列行にそれぞれ職種が入力されている 6 2022/05/25 04:49
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
このQ&Aを見た人はこんなQ&Aも見ています
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
複数の列の値を結合して別の列へ返す
Visual Basic(VBA)
-
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
6
【Excel】【VBA】空白のセルに上のデータを入力する方法
その他(Microsoft Office)
-
7
VBAで重複データを合算したい
Excel(エクセル)
-
8
複数行の同列に同じ値があったら、1行に纏める
Excel(エクセル)
-
9
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
10
VBA 数式を最終行までコピー
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
VBAで別ブックの列を検索し、該...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
ListViewで列を指定して表示さ...
-
VBA 指定した列にある日時デー...
-
アクセス 取り込み時に、桁数(...
-
Excelの行数、列数を増やしたい...
-
エクセル 1つのシートを日付で...
-
土日の列幅の自動変更を教えて...
-
エクセル 任意の列数で分割する...
-
エクセルで複数列の検索をマク...
-
エクセル 重複 隣の列 一番...
-
エクセルのシートの大きさを変える
-
エクセル マクロ 範囲指定で...
-
エクセル マクロ 範囲の値を上...
-
列方向、行方向の定義
-
☆Excel VBAでAVERAGE関数を使う...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
VLOOKUPの列番号の最大は?
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセルのソートで、数字より...
-
列方向、行方向の定義
-
VBAで別ブックの列を検索し、該...
-
エクセル マクロ 範囲指定で...
-
CSVファイルの「0落ち」にVBA
-
エクセルマクロPrivate Subを複...
-
エクセルで最初の行や列を開け...
-
最近急にVBAの処理速度が遅くな...
-
VBA
-
Excel文字列一括変換
-
エクセルで複数列の検索をマク...
-
エクセル マクロ 範囲の値を上...
-
横軸を日付・時間とするグラフ化
-
Alt+Shift+↑を一括で行うには、...
おすすめ情報