管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

ワークシート関数でlastIndexOfする(Excel)

ワークシート関数にはlastIndexOfに似た関数ないんですね...
というわけで、なんとか頑張ってみました。そして、そいつを使ってフルパスから拡張子を取得してみました。

# 「A1」セルの内容から、拡張子(最後の「.」より右側の文字列)を取得する式です
=RIGHT(A1,LEN(A1)-FIND("$",SUBSTITUTE(A1,".","$",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

' 以下はかみ砕いたやつです
=RIGHT(A1,                                                        '一番最後の探索対象文字(".")("$"に置換された)以降の文字列を求める(4)
       LEN(A1)-FIND("$","$"の登場位置を求める(3)
                    SUBSTITUTE(A1,".","$",                        ’対象の文字列の、一番最後((1)で求まる)の探索対象文字(".")"$"に置換(2)
                               LEN(A1)-LEN(SUBSTITUTE(A1,".","")) '対象の文字列から、探索対象文字(".")の登場回数を求める(1)
                              )
                   )
      )

以下は、上記ワークシート関数で、フルパスから拡張子を取得したもの

パス 拡張子
C:\Users\hoge\Documents\powershell\resize.ps1 ps1
C:\Users\hoge\Documents\powershell\resize720.bat bat
C:\Users\hoge\Documents\selection\P1130932.JPG JPG
C:\Users\hoge\Documents\selection\P1130947.zip zip
C:\Users\hoge\Documents\selection\P1130958.png png
C:\Users\hoge\Documents\selection\P1130965.jpg jpg