• ベストアンサー

文字抽出

エクセル初級者です。マクロは分かりません。 セルに ”漢字 半角スペース (ピンイン表記)” されています。 例)麻婆豆腐 (mápó dòufu) これから漢字とピンインを分けて抽出したい。 対象のセルの列には漢字は1~7文字で文字数に応じてピンインも変化します。 FIND,MID,LEFTなどの関数を調べてみましたが、所望には至りませんでした。 何かアドバイスいただければ有難く。

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

  • ベストアンサー
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

A1セルに 麻婆豆腐 (mápó dòufu) が有る場合の例で、 漢字の抽出式は、 =LEFT(A1,FIND(" (",A1)-1) ピンインの抽出式は、 =MID(A1,FIND(" (",A1)+2,FIND(")",A1)-FIND(" (",A1)-2) でいかがでしょうか。

noborito
質問者

お礼

早速のご指導ありがとうございます。 サラッと書かれていて驚いております。 小生、趣味の中国語の学習者です。 対象語が500くらいあり、なんとかエクセルでという事で相談した次第です。 ピンイン抽出式末尾のFIND関数の開始位置を-1にして完成しました。 今回のソースの漢字は簡体字で小生には無用なので別途、それぞれ繁体字化する予定です。

その他の回答 (1)

  • NuboChan
  • ベストアンサー率47% (745/1582)
回答No.2

>マクロは、分からない ワークシート関数での回答を希望していると思いますが マクロは不要とは回答されていないので 参考ではありますがマクロでの回答を記載します。 A列に 麻婆豆腐 (mápó dòufu) B列に 麻婆豆腐 C列に mápó dòufu Option Explicit Sub 指定文字の前方及び後方を取得() Dim arr As Variant Dim txt As String, txt1 As String, txt2 As String Dim c As Range Dim tlen As Integer For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp)) txt = c.Value txt1 = Left(txt, InStr(txt, "(") - 1) tlen = Len(txt1) txt1 = Left(txt1, tlen - 1) c.Offset(, 1).Value = txt1 txt2 = Mid(txt, InStr(txt, "(") + 1) txt2 = Mid(txt2, 1) tlen = Len(txt2) txt2 = Left(txt2, tlen - 1) c.Offset(, 2).Value = txt2 Next End Sub

noborito
質問者

お礼

早速のご助言ありがとうございます。 これを機にこの事例に沿ってマクロを学習したいと思います。 またご指導をお願いします。 ありがとうございました。

関連するQ&A

  • 文字抽出関数で対象が2個あって困っています。

    検索でいろいろ調べたのですが、HITせず困り果てています。 仕事で、1つのセルに箱のサイズを入力しています。 別の用件で、サイズから体積を出すように指示があったので 計算する為に1つずつのセルに分けようと・・・ LEFT関数とFIND関数を使って横幅の数値は抜き出すことは出来たのですが、 縦幅と奥行きの数値が抽出できません。 セルには、800×1500×300 と入力してあります。 FIND関数やMID関数では1つの×は見つかるのですが 2つあるのでどうしても上手く抽出が出来ません。 どなたか、ご教授お願いします。 宜しくお願いします。

  • 指定した文字数分の文字列を抽出し、検索(VBA)

    いつもお世話になっております。 指定した文字数分の文字列を抽出し、他のシートから抽出した文字列を検索して表示するのに セルBB2に =IF(AW2="",VLOOKUP(LEFT(N2,2),商品マスタ!$M$21:$N$67,2,0)) という数式を入れています。 セルBB2のみではなくBB列でずっと同じ処理をするため、マクロで処理しようと思うのですがなにぶん未熟でいい方法がわかりません。 Mid関数を使えばいいのかな、とは考えましたが、どう書けばいいのかわからず前にすすめません・・・・ どなたかご教授いただければ幸いです。

  • エクセル 文字列で右から一文字づつ文字を抽出したい

    エクセル2010を使用しています。 mid(抽出したいセル,左からの文字数,抽出したい文字数)と作業を行ってきましたがmid関数は常に左から抽出されるようです。 そこでright(抽出したいセル,抽出したい文字数)と試みましたが、一番右はOKですが2文字目、3文字目とどのように抽出してよいかわかりません。 どなたかご教授いただけませんでしょうか。

  • Access Left$関数で全角半角が混在したデータの抽出 バイト数がずれる

    AccessクエリーでのLeft$関数について教えてください。 半角英数字と漢字文字列が混在したフィールドから Left$関数で17バイト抽出したいのですが、 漢字を一文字=1バイトで換算した結果がかえってしまいます。 例) 1001-500本aaa-GG-りんご ⇒ 1001-500本aaa-GG-り 1002-500mLaaa-GG-みかん ⇒ 1002_500mLaa-GG ※[本]が漢字で[mL]は半角英数です。 後で抽出が自由にできるように、 [GG]以前の文字列のバイト数を固定にしていたのですが 全角・半角が混在していると抽出にずれがでてしまうことを知りませんでした。 ※[4バイト]+"-"+[8バイト]+"-"+[GG]+"-"としていました。 GGを含むGGより以前の文字列を抽出するにはどうすればよいでしょうか? (漢字1文字を2バイトと換算しながらLeft$で抽出するには?) よろしくおねがいいたします。

  • ACCESS 文字の抽出方法

    ACCESS2000で開発しています。 簡単なことだと思うのですが、ある文字列のなかから"/"以外の文字を抽出するにはどうすればよいですか? 例)年月日 テキスト ”2008/06/23”               ↓            ”20080623” LEFT関数やMID関数でできるのですが、できれば上記の方法でやりたいと思っています。 よろしくお願いします。

  • エクセル 抽出

    どうぞ宜しくお願いします A1B1C1のセルが結合してあり セルの中にはカタカナ、ひらがな、漢字、記号、アルファベット、が 30~60文字ぐらい記入されています。 その中のアルファベットが、1文字だけ大文字で必ず書いてあります。 大文字ではありますが、半角の場合も全角の場合もあります そのアルファベットの1文字だけE1に抽出表示させたいのです。 A1B1C1にはアルファベットも残したまま1文字だけE1に抽出表示させたいのです。 出来るのであれば、ですが、大文字の半角で表示させたいのです。 PC初心者です、よろしくお願いします

  • Excelの文字数が決まっていない文字列の抽出

    教えてください。Excelで、文字数の決まっていない文字列を抽出したいのですが、例えば、 セルA1 : プロジェクト1 簡単な文章 2352 PD_JOK セルA2 : プロジェクト13 複雑な文章列とは決まっていない 2453 AO_JKI ・・・・・・ というセルから、 プロジェクト名から、半角数字前までの文字数が決まっていない文字列「簡単な文章」や「複雑な文章~」をセルB列に抽出する方法を教えていただきたいのですが、 そして、半角数字後の半角英字「PD_JOK」をセルC列に抽出する方法も同時に教えてください。 万単位でデータがあるので、関数を使わないと難しいです。 よろしくお願い致します。

  • Excelセル内の改行を含む文字列の1行目抽出

    Excelセル内の改行を含む文字列があり、関数を使って、その1行目だけ抽出したい。 たとえば、下記のような式を書きました。「改行コード」おかしみたいで動作しません。 Left("A1", Find(vbCrLf, "A1")) (改行コードをさがして、そこまでの文字列を切り取る) これをVBAで書く方法があれば、コードを教えてください!

  • 特定文字列の抽出

    VB6の質問です。 桁数、データが不定の文字列中から特定文字を抽出したいのでが、方法を教えていただけないでしょうか? 抽出したいデータの桁数が毎回不定でMid, Left, Right関数が使用できません。 Dim Buffer As String Buffer = "A12345...B678910.TRAGET..C" '桁数、データが不定の文字列がBufferに入ります。 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 InStr関数で、位置を特定して、Mid関数などで抽出するれば、良いと思うのですが これをどんな桁数のときも対応できるようにルーチン化にできないでしょうか?

  • 文字列の分解

    1つのセルに入力された文字列を分解したいのです。 例えばφ20 +0.010/+0.001と有る場合別のセルにφ20、+0.020、+0.001と分解したいのです。 =MID(C1,1,FIND(" ",C1)-1) =MID(C1,FIND(" ",C1)+1,6) =MID(C1,FIND("/",C1)+1,FIND("/",C1)) としているのですが、文字列に” ”や”/”がない場合は#VALUE!となり表示出来ませんし、+0.010の部分の桁が増減すると上手く表示が出来なく成ります。 何かいい方法は無いでしょうか?

専門家に質問してみよう