MS Excelでファイル拡張子を取得する方法


10

ファイルパスを含む列があります。パスの拡張子のみを含む別の列を作成したいと思います。Microsoft Excelでこれを行うにはどうすればよいですか?


1
Googleスプレッドシートでどのようにこれに探している人にとっては、使用することができますREGEXEXTRACT(A1, "\.([^.]*)$")
ジョー・

回答:


20
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")

この式は、ファイル名に複数のドットがある場合に役立ちます


2
これは、4文字以下のファイル拡張子に対してのみ機能することに注意してください。
Tim Robinson

1
5を6などに変更できますよね?
Devil's Advocate

いいえ、問題が発生します。
Devil's Advocate

4

別の答えから引用(スペースではなくドットを探すように変更):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

御馳走を働かせます!迅速なコピー/貼り付けソリューションをありがとう。ファイル名にフルパスとネームスペース表記を使用した2〜7文字のファイル拡張子を持つファイル拡張子で機能します。
Zephan Schroeder 2015

2

Cyrilの回答は、拡張子が3または4文字で.、ファイル名に(ピリオド)がある場合にuser273281の回答が機能しない場合にのみ機能します。

したがって、私はこれを達成する新しい方法を見つけました、

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))

注:user273281のaswerは、ファイル名がの場合は機能しませんでした1. Macro based file.zip。戻る. Macro based file.zip


0

うまくフォーマットされた拡張子があると仮定すると、これはのようにすばやく実行できます=RIGHT(A1,3)。より堅牢なソリューションでは、右端のインデックスを見つけて.、残りの文字を抽出します。


私が答えたであろうあなたの質問を読んでください。
VerGuy 2010年

ここでの本当の質問は、右端の「。」を見つける方法だと思います。Excelで。
petersohn、

拡張子は常に3文字ではありません。@pertersohn:ええ、あなたは正しいです。
Nam G VU 2010年

0

私はこれに遭遇しました、これは私が見た中で最も簡単な解決策です...

=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")

それが機能するのは、最後のピリオドの後の文字を他のすべての文字から50ピリオドまたは選択した数だけ分離するためです。次に、拡張文字とピリオドの束以外は何も選択していないことを確認して、右端の50文字を選択できます。期間を置き換えれば、あなたは行く準備が整いました。

ソース

代替:XML解析


一般に文字列解析に時々使用する巧妙なトリックは、FilterXML()関数を活用することです(Excel 2013以降)。基本的な戦略はSubstitute()、XML文字列内の要素全体で解析されるように文字列をフォーマットするために使用し、xpath構文を使用して解析された要素を簡単にナビゲートすることです。この戦略を使用すると、拡張機能を取得すると次のようになります...

=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")

xmlに慣れていない場合、これは威圧的に見えるかもしれませんが、何が起こっているのかを理解できれば、len()、substitute()、セル参照が1つしかないため、これが優れている理由の1つです。

違法な文字

パスではなく、XMLで許可されている2つの文字があります&し、'

上記の式は、これらの文字が存在しない場合に機能します。それ以外の場合は、次のように処理する必要があります...

=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")

次のような厄介なファイルパスがあるとします。

C:\ Folder1 \ Folder2 \(醜い文字!@#$%^()_ + = {} ;;、 `)\ two.dots.LongExt

1.)Substitution()部分はそれを次のようなxml文字列に変換します...

<A>
    <p>
        C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
    </p>
    <p>
        .dots
    </p>
    <p>
        .txt
    </p>
</A>

2.)このようにフォーマットされたらp、xpath構文を使用して最後の要素を選択するのは簡単//p[last()]です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.