• ベストアンサー

同列で重複する文字をひとつとし別セルに順に表示

VBAコードを用い画像のようにA列で重複する文字は無視し違う文字のみ順に別セルに表示したいのですがどなたか解る方宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

上の行から順次下で繰り返し判別する。それは 「現在のセルの値」が、「A2から現在行までにおいて」COUNYIFで数を出し、1の場合はC列に持って行き、2以上なら持っていかないようにすれば仕舞。 最近これと同系統の質問が続くが、これがいちばんやさしい。 関数だけでも答えを挙げる人もいるだろう。 Sub test01() lr = Range("A100000").End(xlUp).Row j = 2 For i = 2 To lr x = WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, "A")) If x = 1 Then Cells(j, "C") = Cells(i, "A") j = j + 1 Else End If Next i End Sub

kuma0220
質問者

お礼

ありがとうございます。非常に助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#1です。もう1つ。 Sub test01() 'A1 以下にデータがあること。 'Sheet2があること。 'データのあるシートがアクチブなっていること Range("A1").CurrentRegion.Select Selection.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet2").Range("A1"), Unique:=True End Sub データのあるシートと同シートのF列に出すなら Sub test01() 'Sheet1のA1 以下にデータがあること。 'データのあるシートSheet1がアクチブなっていること Range("A1").CurrentRegion.Select Selection.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=Sheets("Sheet1").Range("F1"), Unique:=True End Sub Unique:=True  がポイント 元データの順序は、結果にも保存されるようだ。

kuma0220
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは Excelのバージョンにもよりますが、A列をコピーしてC列に貼り付けて データタブの重複の削除を行う作業をマクロに記録してコードを整理する だけでも良いと思います。 Sub Macro1() ' ' Macro1 Macro ' '   Range("A1").Select   Range(Selection, Selection.End(xlDown)).Select   Selection.Copy   Range("C1").Select   ActiveSheet.Paste   Application.CutCopyMode = False   ActiveSheet.Range("$C$1:$C$12").RemoveDuplicates Columns:=1, Header:=xlNo End Sub を下記のように整理します。 Sub test()   Range("A1", Range("A1").End(xlDown)).Copy Range("C1")   Range("$C:$C").RemoveDuplicates Columns:=1, Header:=xlNo End Sub

kuma0220
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 特定の文字を含むセルを探して別セルに表示させたい

    望んだ結果にならず困っています。 ご教授お願いします。 A列にいくつかの文字の入ったセルが並びます。 B1に探したい文字が入ります。 C1にB1に入れた文字を含むセルをA列から探し出し、表示させたいです。 A列の文字は重複しません。結果は必ず1個です。 A列は行数が10行~15行で変動します。 B1に入る文字は、A列のセルの一部です。 B1の文字が文字の一部なので、具体的に関数に探す文字を「*つてと*」と 入れてしまってもいいのですが、探す文字をセル指定(B1として) でできれば、より希望に沿うものとなります。 検索するセルが2個程度なら、望む結果が出せるのですが 複数のセルから探し出して、指定のセルに表示させるというのが どうもうまくできません。 よろしくお願いいたします。

  • 同列にある重複文字列のチェック方法

    Googleスプレッドシート上で同列にある文字列の重複をチェックする方法として、隣のセル(B列)に「=COUNTIF(A$2:A$999;A4)>1」と書く方法を使っています。この方法を使うとA列に重複した文字列を入力すると、重複した文字列横のB列にTRUEと表示されます。 しかしこのやり方だとA列に文字列を入力後、B列もエクセルで言うオートフィルみたいなことをしなければならず面倒なので、スクリプトで重複チェックできないものかと考えています。 ですがJavaScriptは初心者なので書き方が分からず苦戦中です。どなたか、手がかりとなるスクリプトやヒントをご教示いただけませんでしょうか。

  • エクセルでの重複セルの削除

    こんにちは いつもお世話になっています。 エクセル2003を使っています。 A列に文字列があり、条件付書式で重複データのセルに背景色を付けています。 A列は、ふりがなで昇順でソートしてあります。 条件付書式は数式に =COUNTIF(A:A,A1)>1としています。 B列にはA列の特定セルの行にだけ数字データがあります  A列の特定セルとはA列の重複セルの下側のセルです。 重複データは常に2つだけ出てきます。ソートしてあるのでB列にデータの無いセルが上側に配置されているのだと思います。 例えば、 A    B 事項 該当箇所 (見出しです) 愛知  秋田 秋田 12.23.34. 石川 愛媛 愛媛 5.68.78. (A列の秋田、愛媛のセルの背景色が条件付書式で黄色くなっています) という具合です。 ここで質問ですが、 重複セルの上側のセルだけを削除する方法を教えてください。上の例ではB列にデータの無い秋田、愛媛です。 フィルタオプションで「重複セルを無視する」にチェックをいれても重複セルの下側のセルが無視されてしまいます。また、検索で色つきセルだけを表示しようとしても条件付書式ではできないようです。 わかりにくい説明ですみません。よろしくお願いします。

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

  • 印でチェック項目を別セルに反映

    添付図のA列で丸印でチェックした右B列の項目を別セルD2より順に反映したいのですがどなたかVBAコードの解る方宜しくお願いします。

  • セルに入力したら、別の特定セルに文字表示させるには

    似たようなQ&Aはあったのですが、求めているものとは少し違うので質問させていただきます。 エクセルで、指定したセルに数値を入力したら、 別シートの特定セルに特定文字列を表示させる ということはできませんか。 例えば、sheet1のセルB3に「2」と入力したら sheet2のセルB5に「●」と表示 次に、sheet1のセルB4に「6」と入力したら sheet2のセルD11に「●」と表示 次に、sheet1のセルC3に「4」と入力したら sheet2のB9に「○」と表示           のようなかたちです。 sheet1の入力範囲は、B3:I85程度 sheet2の入力範囲は、B3:FZ170程度で、特定セルは重複しない 表示されるのは、「●」「○」などの文字列 です。 途中経過として、MATCH関数、ADDRESS関数を利用して sheet1のセルに数値入力をしたら sheet2の入力すべきセル番地を求めることまではできたのですが その求めたセルがすべて異なるので、それぞれのセルに移動させて 文字列を表示させることができずに困っています。 解決法をご存知の方、どうぞよろしくお願いいたします。

  • 複数セルの値が重複しているかどうかを調べたい

    A列に会社コード B列に商品コード が入っているExcelがあります。 会社コードと商品コードをあわせて複合キーとして 重複しているデータを抽出したいのですが やり方がわかりません。 たとえば、 会社コード 商品コード 01      001 02      001 01      002 01      001 0       1001 01      001 という値が入っているときに、 1行目と重複している行として4行目と6行目を検索したいのです。 A列とB列の文字列を結合させてFindを使用しようと思ったのですが そうすると、5行目も検索対象としてヒットしてしまいます。 (5行目は重複してるとはいいませんよね・・・) VBAでの実現を考えています(初級者です)。 どなたか教えてください。 よろしくお願いします。

  • 別のセルに定型の文字列を表示させたい

    別のセルに定型の文字列を表示させたい 例えば、 A1に数値を入力すると、 B1に、かならず「りんご」という文字列を表示させたいのですが、 いろいろやってみた結果どうもうまくいきません。 お知恵を拝借させてください。

  • エクセル セル内の重複する文字列を削除する方法

    エクセルでセル内の重複する文字列を削除する方法を教えてください。 例えばA1のセルに次のような文字列があります 斎藤(18) 武田(21) 稲葉(41) 田中(3) 斎藤(18) 金子(8) 田中(3) この中で重複している文字列(斎藤(18)田中(3))を削除し、以下のようにしたいと思います。 斎藤(18) 武田(21) 稲葉(41) 田中(3) 金子(8) 区切り位置にはカンマやスペースは入ってません。 (改行コードは入ってます) わかる方おられましたら教えていただけますと幸いです。 よろしくお願いいたします。

  • 特定の文字を含むセル周辺を別のシートに表示させたい

    お世話になります。 Excel2002で次のことをやろうとしているのですが、良い方法が見つかりません。 特定の文字を含むセルと、その周辺の一部のセルを別のシートに表示させたい。 どのようにしたら良いかお教えください。 [元]のシートの"A1:E112"のセルに文字や日付、数値など色々入っています。 その中に"目的の文字"という文字を含んだ文字列が入っているセルがあります。 そのセルには、"目的の文字"の後ろに":変化する日付"が入っています。 つまり、次のようになっています。 "目的の文字:2015年10月23日"(日付は変化します) そして、このセルの位置はそのときによって"A15:C112"のセルの中で変化します。 このセルを含む周辺の一部のセルだけを[抽出]のシートに表示させたいのです。 表示させたいセル範囲は、"目的の文字"を含むセルの2行上から2列右までで、3行3列計9個のセルです。 画像の例では[元]のシートの"A35:C37"です。 可能であれば関数だけで解決したいのですが、そのような方法はあるでしょうか? 無理でしたらマクロで実行する方法はあるでしょうか。 よろしくお願いします。