• 締切済み

Excel関数:末尾4文字を取り除きたい

Excel2002の関数についてお伺いします。 A列に拡張子の付いたファイル名が入力されています。 ===================== (例) A1→君が代.wma A2→ぞうさん.mp3 A3→メリーさんの羊.aac ===================== 末尾4文字(拡張子)を除いた「曲名のみ」になった値をB列に返すには どのような関数を使用すればいいでしょうか。 ===================== (完成) B1→君が代 B2→ぞうさん B3→メリーさんの羊 ===================== どうぞ、よろしくお願いします。

みんなの回答

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.5

何度もすみません。 #4で提示した式もダメでした。 "."が残ってしまいます。 ↓に訂正します。 =LEFT(A2,FIND(".",A2,1)-1)

hgsdakhr
質問者

お礼

検証したところできました。 ありがとうございました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

#2です。式が間違ってました。 >=LEFT(A2,LEN(A2)-FIND(".",A2,1)) ↓でお試しください。 =LEFT(A2,FIND(".",A2,1)) ※FINDは、検索対象文字が左から何文字目か、 を検索します。 複数含まれる場合は左から見て一番はじめに出てきた 時の何文字目か、になります。

hgsdakhr
質問者

補足

FIND関数の説明、ありがとうございました。

noname#58440
noname#58440
回答No.3

  貴方の関数の理解は合ってます。 あとは関数をどの様に組み合わるかだけですネ LEFT関数は左から○○文字を取り出す関数です。 また、LEN関数で総文字数を調べ4引くと「総文字より4文字少ない文字数」がかります。 これで貴方がしたい「右の4文字を削除」と同じ意味の文字数が出来たので、LEFT関数で必用な文字数だけを取り出したのです。  

hgsdakhr
質問者

補足

解説ありがとうございます。 >LEN関数で総文字数を調べ4引くと 引くときは常に末尾からなのか?と疑問が湧いたので、 教えていただいた関数を「left」と「right」両方で試してみました。 ==================================== A3 →どうしておなかがへるのかな.mp3 (数式あ)RIGHT(A3,LEN(A3)-4) (結果あ)おなかがへるのかな.mp3 (数式い)left(A3,LEN(A3)-4) (結果い)どうしておなかがへるのかな ==================================== 演算結果から、引きたい方側(左か右)から、 指定した文字数を残した結果が返されると理解したのですが、 この認識であっていますでしょうか?

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

拡張子でしょうか? 曲名に"."が含まれないなら"."の位置を取得して その左側を切り出します。 =LEFT(A2,LEN(A2)-FIND(".",A2,1)) 右側4文字を削除していいなら =LEFT(A1,LEN(A1)-4) ※拡張子は3文字とは限りません。

hgsdakhr
質問者

補足

ありがとうございます。 b4330様と同回答の「=LEFT(A1,LEN(A1)-4)」の関数ではできたのですが、 「FIND」関数を使用したほうは正しく答えが導かれませんでした。 (例) A2セル A Bencao, Bahia.mp3  ↓ (入力した数式)=LEFT(A2,LEN(A2)-FIND(".",A2,1)) ↓ (返された値)A B ちなみにFIND関数だけを抜き取って =FIND(".",A2,1) とすると「16」という値になります。 また、LEAN関数だけを抜き取って =FIND(".",A2,1) とすると「19」という値になります。 この二つの関数を組み合わせたのは、 1)ピリオドを含めた、ピリオドの位置から末尾までの文字数をカウントし、 2)A2セル全体の文字数から1)の値を差し引く という意図だと思うのですが、 19-16=3 で、4になりません。 お手数ですが、補足をお願いいたします。

noname#58440
noname#58440
回答No.1

  B1に =LEFT(A1,LEN(A1)-4) を入れて下にコピーして下さい。  

hgsdakhr
質問者

補足

教えていただいた関数をコピペしたら、望みどおりの形になりました! ありがとうございます。 LEFTは「文字列の左端から指定した文字数だけ取り出す。」 LENは「文字数を数える」 と理解していますが、なぜこの二つの組み合わせで、 「末尾から指定文字数を削除」というコマンドになるのでしょうか。 よろしければ重ねて教えてください。

関連するQ&A