電子書籍の厳選無料作品が豊富!

お世話になります。
各行で、重複したセルを除いた文字列を結合してA列へ表示させたいのですが、全然わからず困っています。宜しくお願い致します。

【抽出前】
セルB2:あいうえお セルC2:かきくけこ セルD2:さしすせそ セルE2:あいうえお
セルB3:たちつてと セルC3:らりるれろ セルD3:たちつてと
        ・
        ・
        ・


【抽出後】 ※重複した部分を除いた抽出結果を、A列に表示させたい
セルA2:あいうえおかきくけこさしすせそ
セルA3:たちつてとらりるれろ
        ・
        ・
        ・

【補足】
※列数は決まっていません。値が入っているところ迄、となります。例では最長E列迄になっておりますが、もっと長い場合もあれば、B列だけの場合もあります。
※行数は、数100行あります。こちらも値が入っているところ迄、抽出結果をA列のA2から順番に表示させたいです。

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
    • good
    • 0
この回答へのお礼

素早い回答、どうもありがとうございます。
ほとんどのデータで、欲しかった結果が得られました。

下記のようなケースで、No.2のマクロと違いがみられ、No.2のマクロの方が、より欲しかった結果とはなりますが、私の例の書き方が悪かったのだろうと思います。どうもありがとうございました。本当に助かりました。

例)
【抽出前データ】
セルB2:エリエール除菌ノンアルコール本体45枚【2014】
セルC2:エリエール除菌ノンアルコール本体45枚

【抽出結果】
マクロNo.1:エリエール除菌ノンアルコール本体45枚【2014】エリエール除菌ノンアルコール本体45枚

マクロNo.2:エリエール除菌ノンアルコール本体45枚【2014】

お礼日時:2014/05/23 20:28

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/v …
    • good
    • 0
この回答へのお礼

どうも、ご丁寧にありがとうございます。
400行程のデータで確認をしましたところ、こちらのマクロとNo.1の方にご回答いただいたマクロで50行程のデータで違いがございました。
こちらのデータの方が、より欲しかった結果となります。
No.1のマクロもほとんど欲しい結果が得られていましたので、満足しておりましたが、こちらのマクロは、現在確認出来た範囲では、全てのセルで欲しい結果と完全一致しておりますので、感激しました。
No.1の回答を確認している間にご回答頂いた為、ベストアンサーに選ぶ時点で気付かず、申し訳ございません。こちらがベストアンサーとなります。

お礼日時:2014/05/23 20:15

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