• ベストアンサー

セル内の英語と漢字を正しく分解したい。

関数、VBAとも6年ほど前から扱っていますが、多忙で技術が向上しません。今回、英語と日本語のかみ合わせのデータを単語ごとに分解する作業が発生しました。 [例] 東日本旅客鉄道株式会社・・・East Japan Railway Company 英語は空欄がありますので、何とかなりそうですが、漢字(送り仮名などのひらがなも含まれます)は続いていますので、分解できるのでしょうか。 希望の結果は、 [日本語] 東日本 旅客 鉄道 株式会社 [英語] East Japan Railway Company です。英語は自分で作ってここで見てもらおうと思いましたが、ちょっと稚拙ですので思いとどまりました。 関数またはマクロを使って、多くのデータを分解したいのです。 とくに漢字については、関数・マクロでは不可能でしょうか。人工知能のようなプログラムがないと無理でしょうか。 それから、英語の分類についても見本を示して頂ければ有難いです。 データはA列に漢字B列に英語が1行から1000行まであります。 よろしくお願いします。

noname#18526
noname#18526

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

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

これは仮名漢字変換方式の難しさから考えても、サンデープログラマ程度のスキルでは、ろくなものができないと思います。 出来合いのソフトがないか探すことでしょう。 例えば、ジャストシステムのようなところの技術者・経験者でないと、無理でしょう。辞書があること、自由に操れることも必要でしょう。 エクセル関数ごときでは、もちろん歯が立ちません。 私もできたらいいなと夢想したことがあります。 ーーーー 私のアイデアは、文字コード(帯)から、漢字、ひらがな、カタカナかの区別方のプログラムを勉強する。 漢字続き+カタカナ続き(連続2文字以上)の文字列を、セルにリストアップする。 質問の文章の一部では、英語 自分 稚拙 関数 マクロ 分解 漢字 関数 マクロ 分解 に分離する。 ダブりの、分解、マクロは除く、仕掛けにする。 (「有難い」が有難になるなどの欠点もありますが) これを人間が一読して、自分 稚拙 などビジネス見地から捨てるものにサインを立てる。 捨てるものはプログラムで後刻に、一斉削除。 表現の規則性に乗っかった、あいまいな面のある方法ですが、事実上 使えるものになるような気がする。 ーー もうひとつ、既回答にも出てますが、ワードに文章を貼り付け、WordVBAで Sub tst16() For Each para In ActiveDocument.Paragraphs For i = 1 To para.Range.Words.Count MsgBox para.Range.Words(i).Text Next i Next para End Sub の結果を何か処理できないか考えるのも途かも知れません。 細かく(助詞まで)分解して表示しますが、人間が見て、NOを応答して捨てる仕組みでやれば、一読する時間+アルファの時間で要素語が抜き出せる気がします。

その他の回答 (4)

回答No.4

cherry_islandさん、はじめまして。 VBA で任意の文字列を分割されたいようですが、 どんな環境を想定されていますか? 実行環境をExcel 2000/XP/2003として回答します。 違っていたらゴメンなさい。 (案) 区切り文字(カンマなど)で区切られていない日本語 の文字列を区切るには、自前の辞書などを用意して 処理しないと、ExcelのVBAだけでは難しいと思いま す。 そこで、Wordの単語を切り出す機能を利用する案で サンプルを紹介したいと思います。 こちらも完全にはご期待にそえる結果にはならない と思いますが、自前の辞書を駆使するよりはかなり 楽になると思います。 1. ExcelのVBAに参照設定を追加する VBAの[ツール]メニューから「参照設定...」を選択し、 参照設定画面のリストから以下の項目にチェックして [OK]ボタンをクリックします。  Microsoft Word 11.0 Object Library  ※"11.0" の部分はインストールしているWordの   バージョンによって表示が異なります。   "11.0" は、Word2003です。 Sub Sample() Dim docObj As Word.Document Dim myObj As Variant Dim jpStr As String Dim enStr As String jpStr = "東日本旅客鉄道株式会社" enStr = "East Japan Railway Company" Set docObj = New Word.Document 'Wordのオブジェクトに文字列を設定する(日本語) docObj.Paragraphs(1).Range.Text = jpStr 'Wordのオブジェクトから単語を切り出す For Each myObj In docObj.Paragraphs(1).Range.Words If myObj.Text <> jpStr Then Debug.Print myObj.Text End If Next 'Wordのオブジェクトに文字列を設定する(英語) docObj.Paragraphs(1).Range.Text = enStr 'Wordのオブジェクトから単語を切り出す For Each myObj In docObj.Paragraphs(1).Range.Words If myObj.Text <> enStr Then Debug.Print myObj.Text End If Next End Sub 出力結果は以下の通りになります。 --------------------------------------------- 東日本 旅客 鉄道 株式 会社 East Japan Railway Company

  • TK1961
  • ベストアンサー率35% (16/45)
回答No.3

漢字部分の分割ルールを、そちらの業界に通じていない人(例えば私)に、口で説明出来ますか? それならば、なにかしらプログラミング化のヒントを差し上げられる可能性があるかも知れませんので、 補足してみてください。  それが出来ない(ルールに例外が多過ぎ、論理的でない)のであれば、手でやった方が早いです。  特殊な例外処理用のデータベースが必要となるでしょうから、おそらく、そのデータベースを 構築する時間で、元の作業を手で出来てしまうことでしょう。  それよりも発想を変えて、分解の区切りは人が入れるけれど、その他の部分を自動化した、 「作業補佐ツール」を開発したほうがいいかも知れませんね。 (一例) 「漢字部分が表示される」 「人がマウスなどで、チェックを入れる」 「OKボタンをクリックすると、文字列をチェックの入った所から分解して、各セルにコピーする」 「次の漢字文字列が表示される」 (以下、くりかえし)

noname#22222
noname#22222
回答No.2

スーツのデザイナーでプログラマではありません。 よって、あくまでも、参考意見として... 英語と日本語の対応をデータベース化するしかないと思います。 East Japan=東日本 ただし、 East=東 も登録される可能性を前提に検索ルーチンを組むべきかも知れません。 1、英語部分は split関数 を使えば、簡単に配列に代入できます。 (1) ピリオド、ビックリマーク等をブランクに置換する。 (2) ブランクで分割して配列に取り込む。 2、日本語部分は、英語の配列を手掛かりにして分割する。 この方式の難点は、予め既知の字句しか分割できないことです。 が、 東、日本、旅客、鉄道、株式、会社 東日本、旅客鉄道、株式会社 東日本旅客鉄道、株式会社 のどれが正しいか異論のある所でしょう。 よって、任意分割と看做さざるをえません。 <データベース辞書>を推奨する理由です。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

英単語の方は、VBAを使わなくとも、スペースで区切られているので、分割したいデータの範囲を選択し、メニューのデータ~区切り位置で、カンマやスペースなど…で、スペースにチェックを付けて完了です。 でも漢字の方は無理なのでは? ととえば大日本多村産業株式会社は、 大日本、多村、産業? 大日、本多村、産業?  誰も区別できないですよね?

関連するQ&A

  • central Japan

    友人に 「central Japan railway companyを和訳すると,何故,NEXCOのように,"中日本"にならずに,東海旅客鉄道(株)になるんですか?」 と聞かれ,私は答えられませんでした。(汗) どのように説明すれば,よかったのでしょうか? また 海外の新聞等の情報媒体で,東海旅客鉄道が取り上げられた時は, やはり[central Japan railway company]で紹介されていますか? お願いします。

  • East Japan とEastern Japan

    「東日本」の訳語としては、East Japan とEastern Japanの両方が使われているようですが、どのように使い分ければよろしいのでしょうか?通常の文脈では、どちらが妥当ですか? 検索してみましたが、手頃な情報が出て来ません。出来れば、和文でも英文でも結構ですので、わかりやすく解説したサイトを教えて頂けると有難いです。東・西・南・北いずれの英訳語についてでも結構です。 尚、英英辞典(オンライン)では、次のようになっていますね。 east: (adj.) 1 [only before noun]in the east or facing the east: I don't know the east coast well. He was born in East Jerusalem. 2 an east wind comes from the east eastern: (adj.) 1 in or from the east of a country or area: the eastern shore of the island farmers in eastern England 2 in or from the countries in Asia, especially China and Japan: Eastern religions 3 in or from the countries in the east part of Europe, especially the countries that used to have Communist governments: Eastern Europe East Japan Railway Company(JR東日本)のような用例もありますが、 私の意見としては、Eastern Japanの方が一般的かなと思いますが、如何でしょうか?

  • 就職と大学の学部との関係について

    今高3の受験生なんですが、将来は東日本旅客鉄道などの鉄道関係の職業に就きたいと考えています。 しかし、どのような大学でも、そちらへの就職というものは、とても少ないようです。 そんな中で、東日本旅客鉄道に入ることができる可能性が高い大学や学部などってあるんでしょうか?? 知っている方がいましたら、教えていただければ助かります!!

  • 英語の文章を分解する

    英語の文章を単語ごとに分解し、アルファベット順に並び替えて、使用頻度などのデータに利用したいと思います。 一回に500~1000 waord を考えています。 文章は、Word またはメモ帳から取ります。 この処理で私にできるのは、エクセルのひとつのセルに貼り付けて、マクロにより、単語ごとに分解し、あとでソートする方法です。 たとえば、「This is a pen.」という文章をA1のセルに貼り付け、マクロを起動して、 A2 This A3 is A4 a A5 pen というように単語を入れていきます。 できれば、「.」「"」「?」「!」「,」などの記号は同時に削除したいのです。 自分でも、いい加減なマクロは作れますが、仕事に使いますので上手な方のものを使わせていただきたいと思います。 よろしくお願いします。

  • 中国人に英語で漢字を説明するには

    こんにちは。日本人と中国人がコミュニケーションを取る場合、昔は筆談が多かったと思うんですが、今では英語を仲介言語にすることも多いのではないでしょうか? 日本人と中国人は折角漢字を共有しているのに少し皮肉な気がしなくもないんですが。 さて、中国人と英語で会話する時、漢字をどのように説明したらいいでしょうか? Aが中国人、Bが日本人とします。 A: Did you come from Japan or Korea? B: I came from Japan. A: What part of Japan are you from? B: I'm from Shizuoka. A: How do you wrire Shizuoka in Chinese character? B: Huh.... Shizu is quiet, and oka is hill...... 多分、日本と中国では漢字の意味も微妙に違うだろうし、中国人が必ずしも「静岡」という字を漢字を思い浮かべるとは限らないと思います。 英語の得意な皆さんはどう説明しますか?

  • 漢字の熟語について

    数学の「幾何学」という言葉は、英語のgeometryの「音写」として中国で考案されたものを日本が輸入して使っている、と聞きました。 他にも「関数」という言葉も、英語のfunctionの中国語で音写されたものを輸入した、と聞きました。 では、「幾何」という言葉にgeometryの訳語としての意味があるのでしょうか? 「関数(関と数)」という漢字は、英語のfunctionの訳として、音訳以外に、何か漢字としての意味があるのでしょうか? もし、幾何や関数に「日本語の漢字としての意味」があるのでしたらいいですが、 ないのだとしたら、なぜ一見して日本語の漢字としての(ただの音訳ではない)意味が分かる漢字を使わないのでしょうか? 教えてください。

  • セル内の文字列が日本語か英語かを厳密に識別したい

    セル内(C3)にある文字列に、漢字・ひらがな・全角カタカナ・半角カタカナのうち、1個でもあれば、その文字列すべてを、右隣のセル(C4)に移し、それ以外の場合はさらにその右隣(C5)に移したいのですが、 たとえば、 (C3)「AMERICA/JAPAN」の場合は、(C5)に「AMERICA/JAPAN」と移します。 (C3)「AMERICA/Japan」の場合は、(C5)に「AMERICA/Japan」と移します。 (C3)「AMERICA/JAPAN#$%?<>」の場合は、(C5)に「AMERICA/JAPAN#$%?<>」と移します。 しかし (C3)「日本とアメリカ#$%?<>」の場合は、(C4)に「日本とアメリカ#$%?<>」と移します。 (C3)「日本/america」の場合は、(C4)に「日本/america」と移します。 (C3)「日本/アメリカ」の場合は、(C4)に「日本/アメリカ」と移します。 (C3)「Japanとamerica」の場合は、(C4)に「Japanとamerica」と移します。 VBAで処理する場合、文字コード、Chr関数、Mid関数を使えばいいと思ってプログラムを組むところです。 ところが、漢字のコード番号が何番から何番までか、よくわかりません。カタカナ・ひらがなは調べられます。 正確でなくとも<>=の数値処理の範囲指定ですので、漢字コードの範囲を教えてくださいませんか。 また、この処理目的のために、よりシンプルなプログラムがありましたら教えてくださいませんか。 よろしくお願いします。 ※簡単に言いますと、セル内が日本語の文章か英語の文章かを識別する作業です。

  • 業務用のJR時刻表について

    表紙が東日本旅客鉄道と書かれている場合、JR東日本しか時刻が載っていないのでしょうか。

  • エクセル、関数でセル内の半角カタカナ漢字、を分けて他のセルへ表示する方法

    下記のようにA列の1つのセル内に、半角カタカナ漢字がつながって入力されてるデータがあります。これを関数でD列にカタカナ姓、E列にカタカナ名、F列に漢字姓、G列に漢字名と分解して表示させたいのですが、難しくできませんでした。どうかよろしくお願いします。      A 1 スズキ イチロウ鈴木 一郎 2 ヤマダ タロウ山田 太郎

  • エクセル。複数行あるセルの分割はできますか?

    こんにちは。 教えてください! たとえば、B1のセルに次のように3行でデータが入力されていたとします。 B1「日本   アメリカ   イギリス」 これをそれぞれ分割して次のようにできる関数はありますか? B1「日本」 B2「アメリカ」 B3「イギリス」 それが簡単にできると仕事がスムーズになるので助かります。 もし次のことも解決できる方法があれば教えてもらえませんか? A1「8月30日」 B1「日本、アメリカ、イギリス(3行で入ってます) C1「出発」 というようなデータがあって、B1をそれぞれの国で分割して、A1とC1のデータをアメリカが入っている行、イギリスが入っている行に自動的にコピーされる。 これは関数ではなくて、マクロになるのかな?とも思うのですが、「分割が行われた行までコピー」というやり方がさっぱりわからないでいます。(その前に分割する方法が分からないんですけど・・・) ちなみに、データがずらーっと並んでいるリストの一部にあるB1のようなデータを整理したいというのが、目的になります。 どうぞ宜しくお願い致します。

専門家に質問してみよう