shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】LAMBDA関数とTEXTBEFORE関数の使い方(フルパス等の取得事例)

Microsoft365のExcelでは、新しい関数の中に、
・VBAを使用せず、カスタム関数を作成できるLAMBDA 関数
・指定した文字の前を抽出できるTEXTBEFORE 関数
・指定した文字の後を抽出できるTEXTAFTER 関数
があります。

これら新しい関数の使い方の備忘録として、Excelファイルの保存場所(フォルダ・フルパス等)を取得する関数を作成したメモ。

 

結論としては、次の印象。

LAMBDA関数は、複雑な数式では有用

TEXTBEFORE/ TEXTAFTER 関数は、従来のLEFT関数やFIND関数などの組み合わせより、シンプルに文字列を抽出可能

 

使用例

この事例の前提知識として、CELL(“filename”,A1)で、当該ファイルのフォルダ名、ファイル名、sheet名が次のように取得できる(活用の事例はこちらにも記載)。

例)C:\Users\aaa\Desktop\[売上データの統合.xlsm]設定
 ファイル名は、角括弧 [] で括られた範囲に記載。
 当該ファイルのシート名は、“]”の後に記載される。
 この事例では、シート名は“設定”

 

フォルダの取得例

次のような当該ファイルがあるフォルダ部分を抽出する。

例)C:\Users\aaa\Desktop\

 

従来の方法(LEFT関数、FIND関数の使用)

=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)

 

LAMBDA関数での方法(LEFT関数、FIND関数の使用)

上記の式が次のようになる。

=LAMBDA(x,LEFT(x,FIND("[",x)-1))(CELL("filename",A1))
任意で設定した変数xに、CELL(“filename”,A1)を代入。

なお、次のように変数に日本語(例:文字列)を利用しても適切に計算された(他への影響は未確認

=LAMBDA(文字列,LEFT(文字列,FIND("[",文字列)-1))(CELL("filename",A1))

 

TEXTBEFORE関数での方法

=TEXTBEFORE(CELL("filename",A1),"[")

今回の方法の中で、最もシンプルに抽出可能

 

ファイル名の取得例

次のような当該ファイルのファイル名を抽出する。

例)売上データの統合.xlsm

 

従来の方法(MID関数、FIND関数の使用)

=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1, FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)

 

LAMBDA関数での方法(MID関数、FIND関数の使用)

=LAMBDA(x,MID(x,FIND("[",x)+1, FIND("]",x)-FIND("[",x)-1))(CELL("filename",A1))

任意で設定した変数xに、CELL(“filename”,A1)を代入で、従来の方法より少しすっきりとする。

 

TEXTBEFORE/ TEXTAFTER 関数での方法

=TEXTBEFORE(TEXTAFTER(CELL("filename",A1),"["),"]")

こちらも、今回の方法の中で最もシンプルに抽出可能

 

フルパスの取得例

次のような当該ファイルのフルパスを抽出する。

例)例)C:\Users\aaa\Desktop\売上データの統合.xlsm

 

従来の方法(SUBSTITUTE関数、LEFT関数、FIND関数の使用)

=SUBSTITUTE(LEFT(CELL("filename",A1),FIND("]",CELL("filename",A1))-1),"[","")

 

LAMBDA関数での方法(SUBSTITUTE関数、LEFT関数、FIND関数の使用)

=LAMBDA(x,SUBSTITUTE(LEFT(x,FIND("]",x)-1),"[",""))(CELL("filename",A1))

 

TEXTBEFORE/ TEXTAFTER 関数での方法

=TEXTBEFORE(CELL("filename",A1),"[")&TEXTBEFORE(TEXTAFTER(CELL("filename",A1),"["),"]")


なお、 LAMDA関数は「名前の定義」と併せて利用するのが基本の考え方のようで、複雑な式、繰り返し利用する場面では有効と思う。

support.microsoft.com

 

以上、Excelファイルの保存場所(フォルダ・フルパス等)を取得する数式をLAMBDA関数とTEXTBEFORE/ TEXTAFTER関数を使用して作成したサンプルでした。