Deprecated: Assigning the return value of new by reference is deprecated in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 25

Deprecated: Assigning the return value of new by reference is deprecated in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 30

Warning: Cannot modify header information - headers already sent by (output started at /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php:25) in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 81
科学好き者の日々::エクセル FIND関数エラー

エクセル FIND関数エラー

エクセルで文字列の処理をすることがあります。
文字列のなかにある文字を探すときFIND関数(SEARCH関数でもできますが)を用いますね。
例として/(スラッシュ)を探したいときです。

adsafd/asd というときは /asd と表示し
adsafdasd  というときは 表示しない(ブランクを表示する)としたい場合がありました。

A列に元の文字列が入っています。
B列に =FIND("/",A2) (2行目で処理をしているものとします。)を書くと /が見つかればその位置を返します。見つからないと #VALUE! エラーになります。
C列に =IF(ISERROR(B2),"",MID(A3,FIND("/",A2),LEN(A2)-FIND("/",A2)+1)) を書きます
ISERROR関数はエラーがあれば真となりますので、エラーがあれば(/が文字列になければ#VALUE!エラーになりますので)真の場合のブランクを表示するために "" とし、
偽であれば(/が文字列にあれば)何桁目にあるかがFIND関数で求まるので、文字列からFIND関数で求めた場所から、/があった場所からの文字列の長さ+1(/の分)をMID関数で抜き出せばいいことになります。

これで動作はするのですが、どうも釈然としません。
FIND関数の仕様として、見つからなかったときにエラーになるというのでいいのでしょうか?
見つからなかったら位置として0を返す。とすれば、分り易いし、
=IF(FIND("/",A2)=0,"",MID(A3,FIND("/",A2),LEN(A2)-FIND("/",A2)+1))
としてB列は不要にできるのですが。。。。


Calendar
<< May 2024 >>
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
262728293031
search this site.
tags
archives
recent comment
recent trackback
others
admin