• 締切済み

VBA(マクロ)を使わずファイル名の数字のみ抽出

ファイル名の抽出方法は、ググったらわかりましたが、ファイル名からの数字のみ抽出する方法は可能でしょうか? =MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-5) =MID(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1))+1,FIND("]",CELL("filename",$A$1))-FIND("[",CELL("filename",$A$1))-5) 例: 123abc456.xls → 123456 sample123.xls → 123   マクロは考えていないです。よろしくお願いします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

作業列を使う方法です。 以下の例では使用するファイル名の最大を拡張子をのぞく16文字としています。 もっと長いファイル名を使うときはそれに合わせて変えて下さい。 A1にファイル名が入っているとします。 D1に↓を入れてS1までコピーします。 =IFERROR(MID($A1,COLUMN(A1),1)*1,"") B1セルに↓を入れて下さい =IFERROR((D1&E1&F1&G1&H1&I1&J1&K1&L1&M1&N1&O1&P1&Q1&R1&S1)*1,"")

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 前回の投稿では操作が判らない部分があると思います。 >Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに は >Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに です。 どうも失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 関数で何とかやってみようとしましたが、 作業用の列をたくさん使わなくてはならない方法しか思いつきませんので お望みの方法ではないと思いますが、ユーザー定義関数を作ってみました。 Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト Function 数値抽出(検索 As String) 'この行から Dim k As Long, str As String, buf As String For k = 1 To Len(検索) str = Mid(検索, k, 1) If IsNumeric(str) Then buf = buf & str End If Next k 数値抽出 = buf End Function 'この行まで Excel画面に戻り、↓の画像ではC1セルを選択 → アドレスバーの左側のfxのアイコンをクリック → 「関数の分類」の右側▼で 「ユーザー定義」を選択 → 「数値抽出」というユーザー定義関数が選択されているはずですので → OK 「検索」の窓に A1 と入力(A1を選択) → OK これをフィルハンドルで下へコピーしてみてください。 ※ 関数で簡単に出来る方法があればごめんなさいね。m(_ _)m

関連するQ&A

  • excelでファイル名を自動入力する方法

    excelでファイル名をセルに自動入力する方法を探しています。 =MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-5) 上記の方法で自動入力可能なのですが、あとから同時に他のファイルを開いたりすると、そのファイル名がセルに入力されてしまい、困っています。 複数ファイルを同時に開いても、当該ファイル名を入力するようにはどうしたらよいでしょうか? 【詳細】 ファイル1.xlsのセルA1に上記式をセットしてある状態でファイル1.xlsを開くと、セルA1には「ファイル1」と入力されているが、あとからファイル2.xlsを開くと、セルの内容が「ファイル2」に変わってしまう。

  • 別ファイルのシート名表示

    教えてください。 シート名表示ですが、開いているファイル(製造データ1.xls)の シート名表示 =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31) にて可能ですが、別ファイル(製造データ2.xls)のシート名を関数にて表示させる方法を教えてください。 製造データ1.xlsのA1セルに表示させたいのですが・・・ (製造データ2.xlsのシートは1つのみです) 製造データ1と製造データ2は同一フォルダに格納されてます。 よろしくお願いします。

  • フォルダ名表示をするには?

    D:\1111\2222\3333\aaa.xls という状態の時、Excelのセル内に「2222」を表示させるにはどのようにすればよいでしょうか? 自ファイルのあるフォルダ「3333」の表示は =MID(CELL("filename"), FIND("♪",SUBSTITUTE(CELL("filename"),"\","♪",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"\",""))-1))+1, FIND("♪",SUBSTITUTE(CELL("filename"), "\","♪",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"\",""))))-FIND("♪", SUBSTITUTE(CELL("filename"),"\","♪",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"), "\",""))-1))-1) という形で出来るということは検索して出てきました。 開始位置と文字数の問題だと思いますが、どこをどう調節すれば上の階層のフォルダ名取得になるのかわかりません。 ご教授のほどお願い致します。  注:マクロを使う予定はありませんのでエクセルVBAマクロを使っての解答はお控えください。

  • 別のbookのシート名を自動に貼り付ける

    http://www2.odn.ne.jp/excel/waza/sheet.html#SEC8 参考にして、シート名をセルに表示させたいです。 参考book [s.xls]シート名はそれぞれa,b,c,とあるとします。 表示させたいbookは[x.xls] こちらのシート名はd,e,fとします。 x.xlsの各シートa1の欄に、s.xlsのシート名を自動で表示させたいです。 dのシートにaのシート名 eのシートにbのシート名 fのシートにcのシート名 2枚目のシートが変更できませんでした。 すべてaのシート名が表示されてしまいます。 =MID(CELL("filename",s.xls$A$1),FIND("]",CELL("filename",s.xls$A$1))+1,31) にしました。 よろしくお願いいたします。

  • エクセル2003マクロ

    特定のフォルダに同じサンプルNoのファイルがA~Dまで4種類ずつあり、これらから必要なデータを抽出し、同一Noに対して一つの集計ファイルを作成するマクロを作りたいと思っています。 ユーザーフォームで1台ずつサンプルNoを入力すれば、抽出→集計まで処理できるコードはできたのですが、サンプルNoを指定せずにコマンドボタン1発でフォルダ内のサンプル全てを同様に処理できる方法が分かりません。色々なサイトを覘きましたが、妥当な例がなく困っています。 ファイル名はそれぞれ、 A-1.xls、B-1.xls、C-1.xls、D-1.xls、A-2.xls、B-2.xls・・・という規則でついていて、全て同じフォルダに保存されています。 どなたか良い知恵をお貸し下さい。

  • 【その2】エクセルのシート名をひっぱる方法ありますか?

    午前中に質問させていただき、おかげさまで解決しました。 ↓こちらが教えていただいたものです。 =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31) 実は、教えていただいた関数の他に もっと簡単なものが合った気がするという 情報がありました。 興味があるので、もしご存知の方が いらっしゃいましたらご連絡下さい。 宜しくお願いします。

  • VBAについて教えてください。

    パス、ファイル名、参照シート、セルを各変数に入れ、その後に指定のセルに 以下の様な出力結果を出力したいのですがどうしても上手く出来ません。 どうか力をお貸しください。 ちなみに下記の様なイメージで書き込みを試みたのですが、全然駄目でした、、、 PathName = \\Sample\ FileName = SampleFile.xls SheetName = SampleSheet Cell = !$I$19 ThisWorkbook.ActiveSheet.Cells(5, 2).Value _ = "= '& PathName & [FileName] & 参照シート'& Cell" ⇒駄目でした 出力結果(理想) ='\\Sample\[SampleFile.xls]SampleSheet'!$E$19 ⇒こう出したい。 宜しくお願い致します。

  • ExcelのマクロでExcelファイルを抽出して開きたい

    あるフォルダ内にある複数のExcelファイルの中から、希望のExcelファイルを開くマクロをつくりたいと思っています。 フォルダ名は任意の数字、ファイル名は任意の数字(フォルダ名と同一)+版数データです。 例) C:\excelsheets\1234567890_1\1234567890_1_0_2_Sheet.xls 「_整数」の部分が版数データ。 動作としては、マクロを実行したら、任意の番号を入力してExcelファイルを開くという流れを考えています。 ちなみに、開くファイルは、 希望A 指定した番号の最新のファイルだけを開く。 希望B 指定した番号のファイルを、版数に関係なく全て開く。 を考えています。(AがダメならB) マクロの自動保存で出来たマクロに手を加えて出来たのが下記です。 Sub test() Dim Select1 As Double Select1 = Application.InputBox("Noを入力してください", "No. Select") ChDir "C:\excelsheets\" & Select1 & "_1" Workbooks.Open Filename:= _ "C:\excelsheets\" & Select1 & "_1\" & Select1 & "_1_0_2_Sheet.xls" End Sub ただし、これだと版数の変化についていけないので、試しに、    "C:\excelsheets\" & Select1 & "_1\*.xls" と、ワイルドカードが使えるか試したらエラーになりました。 初歩的な事かもしれませんが、マクロの勉強を始めたばかりで試行錯誤しながらやってます。ご助言、よろしくお願いします。

  • ネット上Excelで、シート名をセルに表示するに

    Excel2003です。ネットワーク上に保存してあるExcelのA1セルに拡張子なしのファイル名を表示するにはどうしたらいいでしょうか? 自分のPCに保存してある場合は以下で表示出来るのですがネットワーク上に保存すると表示されなくなってしまいます。=REPLACE(LEFT(CELL("filename",$A$1),FIND(".",CELL("filename",$A$1))-1),1,FIND("[",CELL("filename",$A$1)),)

  • マクロ VBA ファイル名を連番でつけたいのですが

    マクロ初心者なので教えて頂けるとうれしいです。 保存先フォルダにファイル名を自動で名前をつけて保存させるところまでできたのですが、 保存先フォルダに同名フォルダがある場合に、 もともと指定しているファイル名のお尻に連番をつけていくようにしたいのですが・・・ 例) 選択したシートをコピーして、 「A1+B1+見積書.xls」 という名前をつけて毎回保存していくのですが、 同名のファイルがある場合、 「A1+B1+見積書+1.xls」 「A1+B1+見積書+2.xls」 「A1+B1+見積書+3.xls」    …というふうにお尻に自動で連番をつけて 保存できるようにしたいのです。 宜しくお願い致します!