[[20080206232623]] 『かっこの切り抜き』(PONTA) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『かっこの切り抜き』(PONTA)

 いつもお世話様です。
 かっこ内の文字列切抜きについて質問させていただきたいのですが
 
 例えばA1に
 りんご(中)青森
 という文字列から、下記の数式で 中 を切り抜くことは出来るのですが
 =IF(A1="","",MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)))
 りんご(中)青森  右が全角かっこ
 りんご(中)青森  左が全角かっこ
 りんご(中)青森  左右とも全角かっこ
 の場合どうすれば短くてすっきりとした数式となるでしょうか?

 =IF(ISERROR(MID(A2,FIND("(",A2)+1,FIND(")",A2)-FIND("(",A2)-1))
 ,MID(A2,FIND("(",A2)+1,FIND(")",A2)-FIND("(",A2)-1)
 ,MID(A2,FIND("(",A2)+1,FIND(")",A2)-FIND("(",A2)-1))

 というようにISERRORを使って、繋げることは可能ですが、かっこの種類が
 4パターンになるので数式が長くなりすぎです。
 短い数式を教えていただけませんか?よろしくお願いします。

 SUBSUTITE関数で置き換えてしまうのはどうでしょう?
 
 (キリキ)(〃⌒o⌒)b

ASC関数やJIS関数はいかがですか?

(くぁ)


 なるほど!
 ASC関数なんてのもありますね〜
 存在を忘れてましたw
 
 ってことで、考えてみましたb
 =IF(A1="","",MID(REPLACE(A1,FIND(")",ASC(A1)),LEN(A1),),FIND("(",ASC(A1))+1,LEN(A1)))
 
 (キリキ)(〃⌒o⌒)b

(キリキ)さま (くぁ)さま

 ASCやREPLACEを使うとは思いもよりませんでした。ありがとうございます。
 すごく短くて分かりやすい数式ですね!大変参考になりました。
                                  PONTA

 対象文字列の中にカタカナが含まれている場合が、心配です。
 =LEN(ASC("ゴ"))は、2が戻ります。
 数式は、下のようなことも考えられますので、ご確認ください。     (6UP)

  A	     B
 リンゴ(中)青森	)
 リンゴ(中)青森	中
          ↑
 =REPLACE(LEFT(A1,LOOKUP(9^9,FIND({"",")",")"},A1))-1),1,LOOKUP(9^9,FIND({"","(","("},A1)),)

 (6UP)さま

 確認しました。おっしゃられる通り、カタカナでは
 REPLACE(LEFT(A1,LOOKUP(9^9,FIND({"",")",")"},A1))-1),1,LOOKUP(9^9,FIND({"","(","("},A1)),)
 でないと駄目でした。ありがとうございます。

 ご教示いただきました、数式を理解しようとヘルプを確認し
 REPLACE(文字列,開始位置,文字数,置換文字列)や
 LOOKUP(検査値,検査範囲,対応範囲)を見てみましたが、どうしても理解できませんでした。
 もしよろしかったら数式の意味を教えていただけませんか?                            (PONTA) 

 この数式を説明します。
 =REPLACE(LEFT(A1,LOOKUP(9^9,FIND({"",")",")"},A1))-1),1,LOOKUP(9^9,FIND({"","(","("},A1)),)

 A1にリンゴ(中)青森としますと、
 FIND({"",")",")"},A1)は、{1,#VALUE!,6}です。FIND("",A1)は、括弧が含まれていない場合の措置です。

 LOOKUP(9^9,{1,#VALUE!,6})は、6。A1の文字列の右括弧の左からの位置を戻しています。
 LOOKUP(配列のどれよりも大きい数値,単配列)で、単配列の一番奥を抽出しています。

 LEFT(A1,6-1)で、右括弧までを分割しています。リンゴ(中"を戻しています。
 括弧が含まれていない場合には、LEFT(A1,0)で空白が戻ります。

 LOOKUP(9^9,FIND({"","(","("},A1))は、LOOKUP(387420489,{1,4,#VALUE!})ですので、4です。

 したがって、最初の数式は、=REPLACE("リンゴ(中",1,4,)ということになります。
 リンゴ(中の左から1桁から4桁分を空白に置換え削除していますので、中が、戻ります。

 ASC("ゴ")は、半角カタカナは、文字化けが生じますので全角で書きますが、コ゛と2文字になります。
 桁数を調査する場合この関数を使用するには、特別な配慮が必要です。          (6UP)


 (6UP)さま

 丁寧なご説明、ありがとうございます。良く理解できました。 (PONTA) 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.