[[20140821091717]] 『関数FINDで全角半角を問わない方法』(noro) ページの最後に飛ぶ

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

 

『関数FINDで全角半角を問わない方法』(noro)

次のような関数を使用しています。
B列の「(」をFINDするものですが、この場合半角を指定しているため、全角の「かっこ」だとエラーになってしまいます。全角半角どちらでもエラーにならないようにしたいのですが
記述方法を教えてください。

=IF(ISERR(LEFT(B2,LEN(B2)-(LEN(B2)-(FIND("(",B2,1)-1)))),B2,LEFT(B2,LEN(B2)-(LEN(B2)-(FIND("(",B2,1)-1))))

< 使用 Excel:Excel2013、使用 OS:Windows7 >


ASC関数で全角を半角にしてはいかがでしょう?
それとExcelが2013ならエラー回避にIFERROR関数をご利用になってみてはどうでしょうか?

=IFERROR(LEFT(B2,LEN(B2)-(LEN(B2)-(FIND("(",ASC(B2),1)-1))),B2)
(さとう) 2014/08/21(木) 09:42


 半角カタカナ使ってると全部ASCかJISで対応しないとダメっすね。
 あと、なんかややこしいことしてるね。

 =LEFT(B2,MIN(FIND({"(","("},B2&"(("))-1)
 
(GobGob) 2014/08/21(木) 10:47

さとうさんありがとうございました。
ASCを使うんですね。わかりました。
IFERRORはいまひとつ使い方がわからなくて敬遠していましたが参考にして使ってみたいと思います。

GobGobさんありがとうございました。
ややこしい…そうなんです。個別に作りながら当てはめていったら自分でもわかりにくくなってしまいました。詳しい人に別の記述方法を教えていただく機会を探していたので助かりました。
書いていただいたものに置き換えます。感謝します。

(noro) 2014/08/26(火) 11:03


 解決したようですが

 (さとう)さんの回答と(GobGob)さんの回答を利用して

  =LEFT(B2,FIND("(",ASC(B2)&"(")-1)
(By) 2014/08/26(火) 14:07

Byさんありがとうございます。
GobGobさんのものは、正直いってMINの使い方が私にはよくわかっていないため、今回はByさんのASKの方で使うことにします。MINはもう少し勉強してからにします。

(noro) 2014/08/27(水) 08:59


	元データ		結果	
	ドア(2m)		ドア	←データ半角、カッコも半角
	ドア(2m)	ドア(	←データ全角、カッコは半角
	ドア(2m)	ドア	←データ半角、カッコは全角
	ドア(2m)	ドア(	←データ全角、カッコも全角

 元データのカッコ前をそのまま返すの観点で考えて
 元データに半角カタカナあると、ASCとか不具合有りそうだったんで
 あえて使わなかったんだけど・・・

 まぁ、不具合ないようならOKっすね。
 
(GobGob) 2014/08/27(水) 11:17

 (GobGob)さんご指摘のように問題がありそうですね

 別解として
 =LEFT(B2,FIND("(",SUBSTITUTE(B2,"(","(")&"(")-1)
(By) 2014/08/27(水) 12:44

 >正直いってMINの使い方が私にはよくわかっていないため

 FIND("(",B2&"(")
 と
 FIND("(",B2&"(")
 の結果を比較して小さいほうを返してるんですな。

 たとえば B2に 「AA(あ)」 ってデータがあるとすると。

 FIND("(",B2&"(") → FIND("(","AA(あ)(") → 半角カッコが途中にある。 → 3
 FIND("(",B2&"(") → FIND("(","AA(あ)(") → 全角カッコが最後にある。 → 6

 これを比較して 小さいほうを返してま。

 本来なら =MIN(FIND("(",B2&"(") , FIND("(",B2&"("))

 って書き方なんやけど、カッコのところを配列定数にしたほうがスッキリするんで
 解答のようにしてますわ。
 
(GobGob) 2014/08/27(水) 16:24

たしかにASCは(GobGob)さんのいわれるようにカタカナが入ったときに問題が生じてしまいました。
例題は、かっこのある文字列のかっこ部分をのぞく文字列をかえすようにしているのですが
これと同じようにかっこの中だけ返したい場合も全角半角を意識しないようにしたいのですが。
つまり
AAA(BBB)
AAA(BBB)
(1)このふたつをひとつの式でAAAのみにする。
(2)このふたつをひとつの式でBBBのみにする。
ということになります。
MINについてはかっこの位置で判断させているんですね。(MINの意味が最小値を返すというのでかっこに最小値というのが結びつきませんでした)

※かっこの中だけ取り出す(これは全角だけになっています)
=SUBSTITUTE(REPLACE(B12,1,FIND("(",B12),),")",)
=MID(B7,FIND("(",B7,1)+1,FIND(")",B7,1)-FIND("(",B7,1)-1)

(noro) 2014/08/27(水) 21:43


 excel使えない環境なので深く考えずに
 ネストしてみた(笑)

 =substitute(substitute(replace(b2,1,min(find({"(","("},b2&"((")),""),")",""),")","")

(GobGob) 2014/08/27(水) 22:47


 A A(B  B      B)A  A
 みたいなのも考慮。

 =REPLACE(LEFT(A1,MIN(FIND({")",")"},A1&"))")-1)),1,MIN(FIND({"(","("},A1&"((")),"")
 
(GobGob) 2014/08/28(木) 08:21

お手数をかけます。
「みたいなのも考慮。」の方を使わせてもらいます。


コメント返信:

[ 一覧(最新更新順) ]


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