• ベストアンサー

exelでアルファベットの単語を抽出

exelで多数のアルファベットの単語を他のセルに抽出する方法を教えて下さい マクロでも式でもよいです

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

求めている仕様がぼやーっとしているので 期待通りか、はなはだ疑問ですが、 後記コードで関数を用意し、添付画像のように使う方法はいかがでしょうか Option Explicit Function PicEiTango(tgText As String) As String    Dim ColCnt As Long  Dim MySw As Boolean  Dim wkText As String  Dim HitFlg As Boolean    PicEiTango = ""  wkText = ""  MySw = False  HitFlg = False  For ColCnt = 1 To Len(tgText)   If MySw = False Then    If isEiji(Mid(tgText, ColCnt, 1)) = True Then     MySw = True     If HitFlg = True Then      wkText = wkText & "," & Mid(tgText, ColCnt, 1)     Else      wkText = wkText & Mid(tgText, ColCnt, 1)     End If     HitFlg = True    Else     MySw = False    End If   Else    If isEiji(Mid(tgText, ColCnt, 1)) = True Then     wkText = wkText & Mid(tgText, ColCnt, 1)     MySw = True    Else     MySw = False    End If   End If  Next ColCnt    PicEiTango = wkText End Function Function isEiji(Moji As String) As Boolean  If ((Asc(Moji) >= &H41) And (Asc(Moji) <= &H5A)) Or _    ((Asc(Moji) >= &H61) And (Asc(Moji) <= &H7A)) Or _    ((AscW(Moji) >= &HFF21) And (AscW(Moji) <= &HFF3A)) Or _    ((AscW(Moji) >= &HFF41) And (AscW(Moji) <= &HFF5A)) Then   isEiji = True  Else   isEiji = False  End If End Function

nakanakaokwave
質問者

お礼

感謝いたします

その他の回答 (2)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

同じような内容の質問をされているので、以下に回答しました。 他の方の回答にもあるように単語かどうかの判定はできません。 https://sp.okwave.jp/qa/q9815038.html

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

「アルファベットの単語」の「単語」は、エクセルでは、少しVBAをやったぐらいでは、判別できないだろう。 Word VBAを使って、英語的に,各語の間に、区切りのスペースでも入っているのなら なお良いが、可能性があるかも。 英単語には、複数形、3単変化、動詞の活用などもあり、これを含めて考えるのは 言語の専門家でもないとむつかしいし。(ワードには「英単語の異なる活用形も検索」あるようだが、詳しくないので略) しかし、WordVBAは、WEBなどでの情報が少ないという意味で、むつかしいのだ。 また、英単語辞書などは、確認や参照用に使おうとしても、おいそれと使えないので、難しいだろう。 ーー この質問に、少数の、実例さえも上げないで、安易に質問しているが、人間には、判断が易しくても、コンピュターで処理するとなると、相当高度な経験・技量・技法が必要と思う。 関数などでやれるものではないだろうと思う。 ーー Wordの文書に(出鱈目な例だがご容赦) 例文 早くから、WordVBAに勉強したいと、思っていた。 しかしTimeがなくてできず。 Todayは少し時間ができてBookをよんだ。 日本版RomeoAndJulietだと言っていた。 コロナCovidが流行している。 ーーー Wordの標準モジュールに Sub 文書に含まれる単語をExcelに書き出す() Dim dic As Object 'Scripting.Dictionary Dim wrd As Word.Range Dim key As Variant Dim xls As Object 'Excel.Application Dim i As Long ' 連想配列に単語を登録 On Error Resume Next Set dic = CreateObject("Scripting.Dictionary") For Each wrd In ActiveDocument.Words If Left(wrd, 1) Like "[A-z]" Then dic.Add wrd.Text, "" End If Next wrd On Error GoTo 0 '-- i = 1 For Each key In dic.keys MsgBox key i = i + 1 Next key End Sub をいれて、実行。 ーー 英字綴りの文字列がMsgBoxに表示され、拾えると言えるのでは。 先頭1文字だけが英字なら、英単語とみなしている。意味のない綴りも捨てられてない。 (一部WEB記事から借用) このMSGBOXで出しているデータをワードの表などに出すのはたやすい。 エクセルのシートの表に移すのも。しかし特異な話題なので略。

関連するQ&A