- ベストアンサー
エクセルマクロ重複した列を削除した結果を抽出
- エクセルマクロを使用して重複した列を削除し、抽出結果をA列に表示させたいです。
- セルの値を結合して重複を除いた結果をA列に表示するために、エクセルマクロを利用したいです。
- 何百行にもわたるセルの値から重複を除いた抽出結果をエクセルマクロで自動化したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 Sub Sample1() Dim i As Long, j As Long, str As String For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row For j = 2 To Cells(i, Columns.Count).End(xlToLeft).Column If InStr(str, Cells(i, j)) = 0 Then str = str & Cells(i, j) End If Next j Cells(i, "A") = str str = "" Next i End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (1)
- eden3616
- ベストアンサー率65% (267/405)
tom04さんのコードでしたら結合した文字列の中から新しい文字列が含まれているかどうかで重複判定されていますので 「かき くけ きく」等の場合は「かきくけ」となり「きく」が重複扱いになりそうですので 一応以下のコードもどうぞ。 Sub 文字列の結合() Dim i As Long, j As Long For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row For j = 1 To Cells(i, Columns.Count).End(xlToLeft).Column If 1 = WorksheetFunction.CountIf( _ Range(Cells(i, 1), Cells(i, j)), Cells(i, j)) _ Then Cells(i, 1) = Cells(i, 1) & Cells(i, j) Next j Next i End Sub ちなみにVBAコードの利用方法も記載しておきます (1)「Alt+F11」でMicrosoft Visual Basicを開きます (2)「挿入→標準モジュール」を選択します (3)右上のペインにVBAコードを貼付 (4)(1)を閉じる (5)「表示→マクロ」からマクロ名を選択して実行してください (上記コードでしたら「文字列の結合」を選択) 参考URL: http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_tejyun.html
お礼
どうも、ご丁寧にありがとうございます。 400行程のデータで確認をしましたところ、こちらのマクロとNo.1の方にご回答いただいたマクロで50行程のデータで違いがございました。 こちらのデータの方が、より欲しかった結果となります。 No.1のマクロもほとんど欲しい結果が得られていましたので、満足しておりましたが、こちらのマクロは、現在確認出来た範囲では、全てのセルで欲しい結果と完全一致しておりますので、感激しました。 No.1の回答を確認している間にご回答頂いた為、ベストアンサーに選ぶ時点で気付かず、申し訳ございません。こちらがベストアンサーとなります。
お礼
素早い回答、どうもありがとうございます。 ほとんどのデータで、欲しかった結果が得られました。 下記のようなケースで、No.2のマクロと違いがみられ、No.2のマクロの方が、より欲しかった結果とはなりますが、私の例の書き方が悪かったのだろうと思います。どうもありがとうございました。本当に助かりました。 例) 【抽出前データ】 セルB2:エリエール除菌ノンアルコール本体45枚【2014】 セルC2:エリエール除菌ノンアルコール本体45枚 【抽出結果】 マクロNo.1:エリエール除菌ノンアルコール本体45枚【2014】エリエール除菌ノンアルコール本体45枚 マクロNo.2:エリエール除菌ノンアルコール本体45枚【2014】