コマンド&関数を使用して、特定のファイル名を抽出してみよう!
こんにちは!アイシーティーリンクの村田です。
もう2回目のブログ当番がまわってきました、時が経つのは早い!
相変わらず画面とにらめっこの日々が続いていますが、
分かることも少しずつ増えてきたような気がしています。
そしてすっかり暑くなりましたね・・・我慢していたのですが
昨日ついにエアコンデビューしました!が!!
今朝出かけてから電源を切っていないことに気づいてへこんでおります!!
一度なら仕方ない!積み重ねは危険!!皆さんも気を付けましょう!!!泣
さて、今回は私が業務内で度々使う機会がある
ファイルサーバーのフルパス(エクスプローラーのアドレス)から
ファイル名のみを抽出できるExcel関数をご紹介いたします。
抽出するには以下の手順で実施します。
①dirコマンドを使用して、ファイルサーバーのフルパスを取得する
「テストA」フォルダ配下にある
「フォルダA」「フォルダB」「フォルダC」のフルパスを、
dirコマンドを使用して取得する
上述コマンドを入力すると、その下に「テストA」フォルダ配下の
各フォルダ・各ファイルのフルパス一覧が抽出されます。
(dirコマンドって本当に便利で知った時は感動しました・・・)
②Excel関数を使用して、フルパスからファイル名を抽出する
①で取得したフルパスをコピーしてエクセルに貼り付け、
以下関数を入力する
=RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))
ファイル名だけを抽出するには次のような計算で抽出します。
① フルパス全体の文字数を算出(LEN:緑文字)
② 最後の円マーク(\)だけを別の文字(*)に置換する(SUBSTITUTE:黄色文字)
③ 置換された別の文字(*)の位置が何文字目に現れるのかを算出する(FIND:青文字)
④ 全体の文字数から(*)が現れる位置を引き算することでファイル名文字数を算出する
⑤ 全体の文字の右から数えて④で算出したファイル名の文字数分を抽出(RIGHT:赤文字)
・RIGHT(ライト)関数:
文字列の右端(末尾)から指定した数の文字を取り出すことができる関数
「=RIGHT(文字列,[文字数])」
【例】C:\テストA\フォルダA\ファイルA-1.txt
【例】=RIGHT(A1,11)
例の場合、A1セルの右から11文字「ファイルA-1.txt」を取り出すことができます。
ただし、実際はファイル名は変化するため例のように「11」と数値指定せず、ファイル名文字数を抽出する関数を入れ込みます。
今回やりたいことは、抽出したいファイル名がこの”文字数”部分に該当します。
ファイル名の文字数はファイルによって変化するため、数値指定をせず、
"文字数"部分にはファイル名の文字をカウントする別の関数を入れ子にする必要があります。
◆ファイル名の文字数を抽出する方法
全体の文字数(LEN)から”*”が現れる位置(FIND)を引き算することでファイル名文字数を算出する
・LEN(レン)関数:
指定した文字列の文字数を求める関数
「=LEN(文字列)」
・FIND(ファインド)関数:
対象の文字列の中で探したい文字が最初に何文字目に現れるのかを検索できる関数
「=FIND(検索文字列,対象,[開始位置])」
・上述関数内の該当部分↓
LEN(A1) - FIND("*", SUBSTITUTE(A1,"\","*", LEN(A1)-LEN(SUBSTITUTE(A1,"\","")) ))
◆最後の円マーク(\)だけを別の文字(*)に置換する
・SUBSTITUTE(サブスティチュート)関数:
文字列中の指定した文字を別の文字に置き換える関数
「=SUBSTITUTE(文字列,検索文字列,置換文字列,[置換対象])」
※[置換対象]は何も入力しなければ、全ての検索文字列が置換文字列に置換されますが
数値を入力した場合、その数値の位置の検索文字列のみ置換されます
・上述関数内の該当部分↓
SUBSTITUTE(A1,"\","*", LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))
今回の場合[置換対象]は最後に現れる(\)のみを(*)に置換したいので
その場所が何番目の(\)なのかを算出する方法は
「全体の文字数」 - 「(\)を削除した全体の文字数」で、
削除された(\)の数が算出され、その数字が最後の位置ということになります。
・上述関数内の該当部分↓
LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))
◆最終関数
=RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))
これを入力してエンターをドン!!!
はあ~~~~長かった~~~できました!!!!!!!!
四則演算以外ほぼ関数を使用したことがなかったので
いきなり4つの関数組み合わせは大変でした、頑張りました!!!!
関数を知れば業務スピードがぐっとあがりますよね、
分かってはいるのですがなかなか難しい(泣)
ですが知識を身に着けられれば早い!楽しい!と思えるので
やりきった時の達成感があります。
これからも勉強の日々は続きますが、
楽しく仕事ができるように頑張ります。
また次回もよろしくお願いいたします~!!