お世話になります。拙い説明になりますが、よろしくお願いします。
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
行方向の同じ値のセルを結合するマクロ
その他(Microsoft Office)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
-
4
(VBAにて)列のセルの結合について
Excel(エクセル)
-
5
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
6
エクセルVBAのEntireRow.Hiddenをスピードアップしたいのですが・・・。
Excel(エクセル)
-
7
エクセルでエラーが出て困っています。
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
10
Excel にて条件付き書式の色にさらに上塗りをしたいです。
Excel(エクセル)
-
11
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
12
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
13
複数行の同列に同じ値があったら、1行に纏める
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
えABのある列って
-
エクセルで複数列の検索をマク...
-
VLOOKUPの列番号の最大は?
-
VBAで結合セルを転記する法を教...
-
データシートビューのタイトル...
-
エクセル マクロ 範囲指定で...
-
csvデータの列の入れ替えができ...
-
(VBA)Excelの特定の範囲にデー...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
Excelの行数、列数を増やしたい...
-
Excel VBA マクロで複数列が共...
-
EXCELの「行列を入れ替える」マ...
-
VBA 指定した列にある日時デー...
-
エクセルで最初の行や列を開け...
-
CSVファイルの「0落ち」にVBA
-
文字の一部分一致のデータをVlo...
-
ExcelVBAで動的配列の部分取り出し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
Excel文字列一括変換
-
VBA
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報