ここから本文です

=RIGHT(CELL("filename",B2),LEN(CELL("filename",B2))-FIND(...

oki********さん

2018/2/1317:15:53

=RIGHT(CELL("filename",B2),LEN(CELL("filename",B2))-FIND("]",CELL(&quo

t;filename",B2)))

という関数で、シート名をセルに表示しているのですが、どういうアルゴリズムなのかが理解できていません。
これはどういうアルゴリズムで動いているのかご教授頂けませんでしょうか?

また、もっと簡単な関数でシート名をセルに同期させる事が出来る場合は教えて頂ければありがたいです。

閲覧数:
77
回答数:
4
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

set********さん

2018/2/1319:00:23

貴殿の数式、
=RIGHT(CELL("filename",B2),LEN(CELL("filename",B2))-FIND("]",CELL("filename",B2)))

例えば、貴殿の、
①エクセルファイルのパス名が、
「C:\Users\aaaa\Desktop」として、
②エクセルファイル名が、
「売上集計表.xlsx」として、
③その数式が入ったシート名が、
「1月売上」とすると、

④先ず、
CELL("filename",B2) では、
「C:\Users\aaaa\Desktop\[売上集計表.xlsx]1月売上」
の文字列(パス名+ファイル名+シート名)が求められます。

⑤そして、
LEN(CELL("filename",B2)) では、
上記④の文字列の文字数”38”が求められます。

⑥さらに、
FIND("]",CELL("filename",B2) では、
上記④の文字列の中で最初に”]”が出てくる位置の”34”が求められます。

⑦そして、
”38”-”34”により、シート名が”4”文字ということになりますので、
RIGHT関数により、上記④の文字列の右から”4”文字のシート名を取り出している、
ということになります。

この数式をもう少し簡単な関数に置き換えるなら、
⑧ =MID(CELL("filename",B2),FIND("]",CELL("filename",B2))+1,20)
の式でも、ご希望のシート名が求められるかと思います。
・なお、最後の「20」は、シート名が20文字以内であろうという想定で20としていますので、10文字以内が確実なら「10」としても大丈夫です。

質問した人からのコメント

2018/2/15 14:30:09

大変にわかりやすく解説して頂き、更により簡易な数式を教えて頂き誠にありがとうございました!
ベストアンサーとさせて頂きたいと思います!

他の方もご丁寧にありがとうございました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tai********さん

2018/2/1402:21:00

アルゴリズムというほど大げさなものじゃないと思うが。

A1セルに
=CELL("filename",A1)

と書き出しておけば分かりやすく、別のセルに

=RIGHT(A1,LEN(A1)-FIND("]",A1))

とか

=MID(A1,FIND("]",A1)+1,30)

とか

=REPLACE(A1,1,FIND("]",A1),"")

など、

"]"の文字の位置の後ろを取り出すだけの操作です。上の数式にA1の数式を代入するだけです。

プロフィール画像

カテゴリマスター

2018/2/1317:57:06

とりあえず =cell("filename", A1) としてみましょう。ファイルパス[ファイル名]シート名 という構造になってるのがわかるはずです。"]"より後ろがシート名ですから、

・mid関数で"]"の1文字後ろから適当に長く取る

というのが常道なんですが、あなたは「全体の文字数から"]"までの文字数を引き算してright関数で取り出す文字数を決める」というcell関数を3回使う方法を見つけたわけです。

nan********さん

2018/2/1317:32:07

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる