• 締切済み

セル内の重複英単語を削除したいです。

セル内の重複英単語を削除したいです。 A列にある3000行くらいをB列に重複削除でお願いいたします。 削除作業時は以下のような条件でお願いいたします。 単語と単語の間は、半角スペースか全角スペース(重複削除時に半角スペースに統一で構いません)。 大文字と小文字の区別なしで削除(apple Apple APPLEはすべて重複とする)。 1つのセルで重複はほとんど1つ(同じ英単語が2つ)なので、1つの重複削除作業でも可。 重複削除する場合、最初の英単語を残し後の英単語を削除。 例 apple orange Apple ↓ apple orange 以上です。 Windows7 エクセル2010。

みんなの回答

  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.4

重複のパターンが多くなければ「置換」で処理したほうがわかりやすくて、速いです。 ととえば、 検索する文字列(置換対象文字列)を apple orange Apple 置換後の文字列を apple orange とします。 置換オプションでは、 □大文字と小文字を区別する □半角と全角を区別する のチェックをはずしておいたほうがいいと思います(デフォルトではチェックは外れている)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

関数を使って対応する方法です。 A列のセルには英単語が5つまで入力されている場合の一例です。 初めにA列を選択してから「データ」タブの「区切り位置」をクリックし、表示の1/3の画面で「次へ」、2/3の画面で区切り文字の項の「スペース」にチェックをして「次へ」、3/3の画面で表示先の窓には$C$1と入力して「完了」をクリックします。 C列からG列までにA列に入力されている単語が並びます。 そこでI1セルには次の式を入力してM1セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A1="","",IF(COUNTIF($C1:C1,C1)=1,IF(COLUMN(A1)=1,ASC(C1),H1&" "&ASC(C1)),H1)) 最後にB1セルには次の式を入力して下方にドラッグコピーします。 =M1 作業列になっている列が目障りでしたらそれらの列を選択して右クリックし、「非表示」を選択すればよいでしょう。 なお、作業列を削除したい場合にはB列を選択して「コピー」し、その後にB1セルがアクティブ状態のままで、「形式を選択して貼り付け」で「値」にチェックをして貼り付けを行います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! やっているコトはNo.1さんとほとんど一緒ですが・・・ A1セルからデータがありB列に表示するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, buf As String, myArray, tmp Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row tmp = Replace(StrConv(Cells(i, 1), vbNarrow), " ", ",") myArray = Split(tmp, ",") For k = 0 To UBound(myArray) If InStr(UCase(buf), UCase(myArray(k))) = 0 Then buf = buf & myArray(k) & " " End If Next k Cells(i, 2) = Left(buf, Len(buf) - 1) buf = "" Next i Application.ScreenUpdating = True End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

いわゆる、マクロです。 Sub sample() Dim myDic As Object, myKey As Variant Dim temp As Variant, myStr As String Dim i As Long, j As Long     For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row         myStr = ""         Set myDic = CreateObject("Scripting.Dictionary")         temp = Split(StrConv(StrConv(Cells(i, 1), vbNarrow), vbLowerCase), " ")         For j = 0 To UBound(temp)             On Error Resume Next                 myDic.Add temp(j), temp(j)             On Error GoTo 0         Next j         myKey = myDic.keys         For j = 0 To myDic.Count - 1             myStr = myStr & myKey(j) & " "         Next j         Cells(i, 1) = myStr         Set myDic = Nothing     Next i End Sub やっていることは ・A列の全データに対し ・半角に変換、さらに小文字に変換したものを ・スペース「" "」で区切ったものを配列に格納 ・それぞれを「重複無し」のDictionaryに格納  (ここで前にあったものは格納されない) ・Dictionaryに格納された文字列を結合 ・元のセルに入力 という処理です。 ただし、各セルに対しで全て小文字変換しますので、 「最初に出るパターンが大文字なら大文字のまま返す」 ということは出来ていません。 配列配列で頑張らせているので、3000行で3秒ほどかかってしまうのが難点ではあります。 ワークシート関数での処理をお望みの場合は、賢人の出現をお待ち下さいませ。

関連するQ&A

  • excel使用 2つの英単語リストを比較して重複単語を削除したい

    excelを使って、「2冊の英単語帳(英単語リスト)を比較して、重複して記載されている単語を削除する」という作業をしたいのですが、何かいい方法をご存知の方はおりませんか?

  • OpenOfficeで半角英数字のみ入力セルにしたい

    OpenOffice使用歴1ヶ月です。(エクセルは仕事で使っています) 縦の列(A列)には英単語だけを入れるので、セルに「半角英文字」だけを入れるようにしたいのですがどうすればいいのでしょう? 日本語全角と半角英数字を手動で切り替えることは出来ますが、必ず半角英文字だけを入れる列なので切り替えずに自動で切り替わるようにしたいのです。

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

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

  • exelの列で英単語をすべて選択する

    exelの列で英単語をすべて選択する方法を教えて下さい 半角、全角が混じっているテキストです 

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

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

  • エクセルで左端のスペースを削除したいです。

    こんにちは いつもお世話になっています。 エクセル2003を使っています。 A列に人名の文字列があります。左端に半角のスペース、文字列の中に全角のスペース、右端にスペースはありません。文字の個数は人名のため様々です。 ここで、左端の半角スペースだけを削除したいのです。 Ltrim関数というのが当てはまるのでしょうか。 半角スペースの削除の方法を教えてください。

  • あいまい検索で英文字の全角半角を区別しない

    いつもお世話になっております。 あいまい検索で、英文字の全角・半角も区別しないように結果を出したいんですが、どういった方法でできますでしょうか。 大文字小文字の区別なしの曖昧検索だと、 ILIKEという専用演算子を使えばいいとわかったのですが、 全角と半角の区別がついてしまいます。 英文字の全角でも半角でも検索結果をだしたいです。 どなたかご教授お願いいたします。

  • 【エクセル】セル内の右側のみ半角スペース削除

    セル内にある半角スペースのうち、右側にあって、文字に囲まれていないものを一括削除する方法をさがしています。 例)※␣と?は半角スペース。?のみを削除する。       列A 行1 test01??? 行2 test02␣01???? 行3 ␣test03␣114? 宜しくお願いします。

  • エクセルで重複するセルを削除したい

    エクセル2000で同じ内容のセルが複数あったとき、ひとつだけを残し他を削除する方法を教えてください。 ただし少し条件があります。 データーは5列100行位からなっています。 A列にある重複したデーターのセルを削除したいのですが、A列は同一なのですがB列は異なっています。B列に数字が入っているセルとうでないセルがあるのですが、数字が入っているものを残したいのです。 具体例は次のとおりです。 A列に 「ホンダCIVIC」 B列 「-」と書かれた行と A列に 「ホンダCIVIC」 B列 「2」と書かれた行、 A列に 「ホンダCIVIC」 B列 「5」と書かれた行、 のA列だけを見ると重複した3行が有ったとします。 B列に「5」または「2」の入った行ひとつだけ残し、他を削除したいのです。 何かよい方法があればお教えください。よろしくお願いします。

  • エクセルのセル内の重複文字列処理について

    よろしくお願いいたします。 セル内にスペースで区切られた文字列(単語)があり、文字列の数は不確定です。 その文字列の中で重複する文字列があり、それらを1つにまとめたいという要望です。 セルの行数は約6000ほどあります。 例 A1セル:リンゴ リンゴ みかん B1セル:リンゴ みかん A2セル:みかん バナナ みかん バナナ みかん B2セル:みかん バナナ ・・・ よろしくお願いいたします。 Windows7 HomePremium Office2010

専門家に質問してみよう