• ベストアンサー

エクセルで連続した同じアルファベットを持つ単語を抜き出す

こんにちは いつもお世話になっています。 エクセルで連続した同じアルファベットを持つ単語のセルを抜き出す方法を教えてください。 A列に英単語があります。例えば、「commit」のように同じアルファベットが連続した部分を持つ単語を抜き出して(選択して?)B列に「重複」の文字を挿入したいのです。 アルファベットの重複は連続していればいくつでも構いませんし、単語のどの部分にあるかも問いません。  よろしくお願いします。

  • 5goma
  • お礼率82% (265/321)

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

  • ベストアンサー
  • mimeu
  • ベストアンサー率49% (39/79)
回答No.5

No.4 の訂正です。 アワテモノでお恥ずかしいです。 If InStr(i0 + 1, s0, Mid$(s0, i0, 1)) Then を If Mid$(s0, i0, 1) = Mid$(s0, i0+1, 1) Then に変えれば連続になります。

5goma
質問者

お礼

mineu 様 ありがとうございました。 御陰様で成功しました。 お忙しいところ、迅速な回答を頂き痛み入ります。 コードの作り方も大変勉強になりました。 簡単で恐縮ですが、お礼申し上げます。

その他の回答 (4)

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.4

手作り関数をワークシートで使う、って手もありますよ。 試し方 (1) 手作り関数を作る    (1-1) Alt + F11 でVBAコードの編集画面を表示する    (1-2) 左の窓でお使いのBook名を選択する    (1-3) メニュー > 挿入 > 標準モジュール でモジュールを表示する    (1-4) そこに以下のVBAプログラムを貼り付ける Public Function 重複(範囲 As Range) As String   Dim i0 As Integer, i9 As Integer, s0 As String   重複 = ""   s0 = 範囲.Text   i9 = Len(s0)   If i9 < 2 Then Exit Function   For i0 = 1 To i9 - 1     If InStr(i0 + 1, s0, Mid$(s0, i0, 1)) Then       重複 = "重複"       Exit Function     End If   Next i0 End Function (2) ワークシート画面に戻り A1セルから英単語が入ってるとすれば   B1セルに   =重複(A1)   と入力し、それを適宜下方にコピーする もし英単語がとても多ければ、少し遅いと思いますけど。 (^-^) Function ではなく Sub にすれば少しは速くなるかもしれません。

5goma
質問者

お礼

mimeu様 ありがとうございました。  まことに恐縮ですが、部分的に手直しを教えていただけないでしょうか。アルファベットの重複のあるセルに対応するものの、「連続」という条件が含まれていないようです。不連続での重複のデータも取ってきてしまいます。このままでも、今後利用させていただきたいのですが、今回は「連続」した「重複」データを取りたいのです。  取りあえず御礼まで

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

B列に重複の文字でしたね。その場合にはB1セルへの入力の式は次のようになりますね。 =IF(A1="","",IF((IF(LEN(A1)>=1,IF(MID(A1,1,1)=MID(A1,2,1),1,0),0)+IF(LEN(A1)>=2,IF(MID(A1,2,1)=MID(A1,3,1),1,0),0)+IF(LEN(A1)>=3,IF(MID(A1,3,1)=MID(A1,4,1),1,0),0)+IF(LEN(A1)>=4,IF(MID(A1,4,1)=MID(A1,5,1),1,0),0)+IF(LEN(A1)>=5,IF(MID(A1,5,1)=MID(A1,6,1),1,0),0)+IF(LEN(A1)>=6,IF(MID(A1,6,1)=MID(A1,7,1),1,0),0)+IF(LEN(A1)>=7,IF(MID(A1,7,1)=MID(A1,8,1),1,0),0)+IF(LEN(A1)>=8,IF(MID(A1,8,1)=MID(A1,9,1),1,0),0)+IF(LEN(A1)>=9,IF(MID(A1,9,1)=MID(A1,10,1),1,0),0))>0,"重複",""))

5goma
質問者

お礼

KURUMITO 様 ありがとうございました。  お陰さまで成功しました。長いコードでお手数をおかけしました。 簡単で恐縮ですが、お礼申し上げます。

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

B1セルに次の式を入力し下方にオートフィルドラッグします。 =IF(A1="","",IF((IF(LEN(A1)>=1,IF(MID(A1,1,1)=MID(A1,2,1),1,0),0)+IF(LEN(A1)>=2,IF(MID(A1,2,1)=MID(A1,3,1),1,0),0)+IF(LEN(A1)>=3,IF(MID(A1,3,1)=MID(A1,4,1),1,0),0)+IF(LEN(A1)>=4,IF(MID(A1,4,1)=MID(A1,5,1),1,0),0)+IF(LEN(A1)>=5,IF(MID(A1,5,1)=MID(A1,6,1),1,0),0)+IF(LEN(A1)>=6,IF(MID(A1,6,1)=MID(A1,7,1),1,0),0)+IF(LEN(A1)>=7,IF(MID(A1,7,1)=MID(A1,8,1),1,0),0)+IF(LEN(A1)>=8,IF(MID(A1,8,1)=MID(A1,9,1),1,0),0)+IF(LEN(A1)>=9,IF(MID(A1,9,1)=MID(A1,10,1),1,0),0))>0,A1,"")) この式は文字が10までの文字列に対応しています。より多くの文字が考えられる場合には式を追加してください。

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

こんにちは! 参考になるかどうか判りませんが・・・ かなり無理矢理って感じの方法です。 ↓の画像のように作業用の列を使わせてもらいます。 C列には「aa」・「bb」・・・「zz」 と全てアルファベットを二文字入力した列を作っておきます。 結局C2~C27までがアルファベットのデータになります。 そして、作業列B2セルに =IF(OR(ISNUMBER(FIND($C$2:$C$27,A2))),ROW(A1),"") これは配列数式になってしまいますので、 B2セルに貼り付け後、F2キーを押す、又はB2セルをダブルクリック、又は数式バー内で一度クリックします。 編集可能になりますのでShift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このB2セルをオートフィルで下へずぃ~~~!っとコピーします。 最後に結果を表示させるセルE2セルに =IF(COUNT($B$2:$B$100)<ROW(A1),"",INDEX($A$2:$A$100,SMALL($B$2:$B$100,ROW(A1)))) (これは配列数式ではありません。) としてオートフィルで下へコピーすると画像のような感じになります。 これで同じアルファベットが二文字以上続いているものが表示されると思います。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m

5goma
質問者

お礼

tom04様 ありがとうございました。  とても参考になりました。わかりやすく画像まで付けていただき助かりました。また、勉強させていただきます。 簡単で恐縮ですが、お礼申し上げます。

関連するQ&A

  • エクセル アルファベットの並び替え(単語帳)

    エクセルで英単語帳を作っていて、これをアルファベット順に並べたいのですが、どのようにすればよいでしょうか? A列に英単語、B列に和訳、C列に英文例を入れています。 A列のみの並べ替えはできるのですが、B列、C列がついてきません。 (エクセルを使いこなせていない実力のせいもあるかもしれませんが。) よろしくお願いいたします。

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

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

  • 英単語をアルファベット順に

    英単語をいくつか入力し、それをアルファベット順に並べ替えるプログラムが作りたいのですが。アルファベットをaから順に小さくなっていくようにし、英単語の頭文字を取り出し大きい順に並べ替えるというふうな感じにしたいのですが、なかなかうまくいきません。誰か教えていただけませんか?

  • EXCELのセルの単語の類義語を自動入力するマクロ

    こんにちは お世話になります。 エクセルで、[A列に並んでいる単語の類義語をExcelの類義語検索機能で3つほど選択してB列に記述されている文の後尾に結合させる] ということをしたいと思っております。 具体的に説明しますと、 A列セルにずらりと英単語、B列セルにずらりと左の語に対応する意味が入力されておりまして、 Excel校閲機能にあります類義語検索機能によって類義語を適当に上から3つほど選択して そのB列セルに書かれた意味の後にスペースを置いて連結したいのです。(同じB列のセル内で) Excelは2013です。 画像に示しますところの1~3行目(deficient ethics ease)のような具合です。 語の数が膨大であり、手作業ではどうにもならないので、マクロを組んだほうがスムーズに事を進められると考えました。 この作業要件を満たすマクロを作成できる方がいらっしゃいましたら、 どうかそのお力をお貸しただけないでしょうか。 よろしくお願い致します。

  • Excelの1つのセルに入力されたアルファベットと数字を分けるには?

    Excelの1つのセルに「CHSK200510-3」 というような文字が入っていたとします。 それを、「CHSK」と「200510-3」のセルに分けることは出来ますでしょうか? ただし、「CHSK」の部分は毎回4文字ではなく、5文字や6文字、7文字の アルファベットの場合もありイレギュラーなのです。。。 文字の個数が決まっていれば文字列関数で出来たと思うのですが、 取り出す文字数が決まっていない場合はどうすればよいでしょうか? どうぞよろしくお願い致します。

  • 英単語を構成するアルファベットを調べるには

    様々な英単語を調べると、先頭から2番目にくるアルファベットは母音であることがが多いと思います。 では、2番目にくるアルファベットで子音では何が多いかということを調べようと思った時、どうやった方法を用いればいいでしょうか? エクセルの関数などを使えば可能でしょうか? 実際答えをお知りならそれを教えて頂いてもけっこうですし、そういうデータがあるサイトを教えて下さってもけっこうです。 先頭のアルファベットごとに2番目にくるアルファベットが調べられればと思っています。 例 先頭がaではじまる英単語の2番目にくるアルファベットは母音以外なら多い順で、 n・m・k・l・p・・・のようになる――といった感じで。

  • エクセル関数について

    エクセル関数の質問です。 AA列にAからEまでの文字がランダムに重複して20行入っています。 AC列に人名が20人分重複しないで入っています。 AA列のたとえばBに対応するAC列の人名を1つのセルに連続して取り出すにはどのような関数を使用すればよいですか? たとえば ”太郎、花子、次郎、・・・”のように、 LOOKUP関数では1つの文字列しか取り出せません。 教えてください。

  • エクセルで英単語の大文字を小文字にしたい

    エクセルのセルに英単語があります。 すべての大文字を小文字に直したいのですが、 どうすればよいでしょうか? WinXP,Office2003です。 よろしくお願いします。

  • エクセルで連続した増加、減少を数えたいのですが

    エクセル2010で、列方向に数字が入っていくのですが、4回連続して増加(減少)した場合に数字が赤字になるような書式設定をしたいのですが。 現在は例えばA列に数値を入力するとして、B,C列を挿入して、B列にはA列の値が増加したら「B列の上のセル+1」、でなければ「0」、C列には逆に減少したら「C列の上のセル+1」でB列もしくはC列が4以上の場合、入力セルの数値が赤字になるように書式設定(B+C>4)してアラームを出すようにしているのですが、対象セルが多い表だと、表が横に大きくなってしまう事と、何よりも作業に非常に手間がかかるので全部のシートには適用できない状況です。 どなたか列を挿入せずに何とか上記の目的を達成する方法を教えてください。

  • エクセルのハイパーリンク

    お世話になっております。 エクセルのセル内の文字列にハイパーリンクをはることはできるでしょうか?  ワードだと、右クリックをすると、ハイパーリンクの項目が出てくるのですが、エクセルの場合、セル内の単語を選択して右クリックしてもハイパーリンクのコマンドが出てきません。

専門家に質問してみよう