• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:exel行の中で一番初めに出てきたカタカナ単語抽出)

exelでカタカナ単語を抽出する方法

このQ&Aのポイント
  • exel行の中で一番初めに出てきたカタカナ単語だけを抽出するための式を教えてください。
  • 下の式を使用すると、カタカナ以外の文字も抽出されてしまいます。
  • マクロを含め各行にあるカタカナと他の文字が混じったテキストの中から一番初めに出てきたカタカナ単語だけを一括複数で抽出する式を教えてください。

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

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

>マクロの実行の仕方がわかりません 添付画像のように、標準モジュールを追加し、 掲示したコードを標準モジュールにコピペします。 シート上に、サンプル画像のように関数式を埋めます。 埋め方もわからない場合は ・リボンに開発を追加  https://office-hack.com/excel/development-tab/ ・VBEを開く  http://plus1excel.web.fc2.com/learning/l301/t101.html を参照 明示的な実行の操作はありません。 セルの関数式を埋めれば勝手に動作します。

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

その他の回答 (13)

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

#2のHohoPapaです。 先ほどのコードでは ジャパンなど、濁音などが混じると正しく動作しませんので、 差し替えます。 なお、この差し替え後の場合は 「ジ」や「パ」など、半角カタカナの濁音と半濁音が混じると正しく動作しません。 これを救うのはちょっと厄介なので今回は見送りました。 Function GetFastwordKana(MyText As String) As String    Dim wkText As String  Dim TextLen As Long  Dim i As Long  Dim MySwitch As Boolean  Dim S As Long  Dim E As Long    S = 0  E = 0   wkText = StrConv(MyText, vbWide)  TextLen = Len(wkText)  MySwitch = False    For i = 1 To TextLen   If ( _    (MySwitch = False) And _    ((AscW(Mid(wkText, i, 1)) >= 12450) And (AscW(Mid(wkText, i, 1)) <= 12534)) _    ) Then    S = i    MySwitch = True   ElseIf ( _    (MySwitch = True) And _    ((AscW(Mid(wkText, i, 1)) < 12450) Or (AscW(Mid(wkText, i, 1)) > 12534)) _    ) Then    E = i - 1    Exit For   End If   If E = 0 Then    E = TextLen   End If  Next i    If S > 0 Then   GetFastwordKana = Mid(MyText, S, E - S + 1)  Else   GetFastwordKana = ""  End If End Function

すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

こんなコードでいかがでしょうか。 Function GetFastwordKana(MyText As String) As String Dim wkText As String Dim TextLen As Long Dim i As Long Dim MySwitch As Boolean Dim S As Long Dim E As Long S = 0 E = 0 wkText = StrConv(MyText, vbNarrow) TextLen = Len(wkText) MySwitch = False For i = 1 To TextLen If ((MySwitch = False) And _ (Asc(Mid(wkText, i, 1)) >= 166) And _ (Asc(Mid(wkText, i, 1)) <= 221)) Then S = i MySwitch = True ElseIf ((MySwitch = True) And _ (Asc(Mid(wkText, i, 1)) < 166) Or _ (Asc(Mid(wkText, i, 1)) > 221)) Then E = i - 1 Exit For End If If E = 0 Then E = TextLen End If Next i If S > 0 Then GetFastwordKana = Mid(MyText, S, E - S + 1) Else GetFastwordKana = "" End If End Function

すると、全ての回答が全文表示されます。
回答No.1

そのエクセル送ってもらえないでしょうか 15年ほど実務でいろんな職業でエクセル使ってきてるのでそれなりには対処できると思います Googleドライブかなにか添付で送ってもらえれば調査しますよ

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

関連するQ&A