advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 295 for cell filename (0.001 sec.)
cell (1170), filename (1984)
[[20120512104710]]
#score: 11157
@digest: b295df3004f0948e8c23a36ed5440227
@id: 58877
@mdate: 2012-05-14T10:26:06Z
@size: 4012
@type: text/plain
#keywords: getnumofbook (29523), regexpmatch (29523), checknum (22494), 方参 (11194), 後方 (7232), 字- (7064), 現調 (6955), レ? (4741), 規表 (4432), 正規 (4162), 、(? (3899), filename (3497), 様へ (2956), 数見 (2868), cell (2347), execute (2241), 分自 (1914), pattern (1579), 字小 (1435), 表現 (1406), vbscript (1333), replace (1159), は- (1002), 数字 (932), lookup (920), ク名 (840), function (827), gobgob (743), 小文 (657), seiya (647), thisworkbook (639), 大文 (633)
『ファイル名から数字を取り出す方法』(できるかな?)
windows Xp Excel 2000 or 2003 ファイル名にバージョンのような数字を入れてあります。 この数字のみを取り出す方法はありますでしょうか? 例。v2-Pg.xls から2のみを抽出する。 宜しくお願いします。 ---- どういう状況で、結果がどこへどのように取り出されれば良いのか、 詳しく書いてほしいし、例も一つでは、少なすぎるような気がします。 開いたブック自体のブック名を取り出すのか、任意のフォルダの閉じたブック名 から処理したいのかでやり方はずいぶん変わりますし、 数字も特定の位置にあるのか、任意の位置にあるのかによっても 処理方法は違うと思います。 (みやほりん) ---- 関数でもできると思いますが、マクロの例です。 標準関数に下記を置いて、適当なセルや数式の中で =getNumOfBook() のように使ってどうでしょうか。 (Mook) Function getNumOfBook() Dim RE, regExpMatch With CreateObject("VBScript.RegExp") .Pattern = "¥d+[¥.]¥d*" .Global = True Set regExpMatch = .Execute(ThisWorkbook.Name) If regExpMatch.Count > 0 Then getNumOfBook = regExpMatch(0) Else getNumOfBook = "No Number" End If End With End Function ---- みやほりん様へ V数字-PG.xls の形です。最初にVで始まりその後に数字が入ります。その後ろは-PG.xlsです。ブックは自分自身です。 宜しくお願いします。 Mook様へ 試してみます。ありがとうございます。 ---- 関数例です。 =LOOKUP(99^9,--LEFT(SUBSTITUTE(MID(CELL("filename"),FIND("[",CELL("filename"),1)+1,FIND(".",CELL("filename"),1)-FIND("[",CELL("filename"),1)-1),"v",),ROW($A$1:$A$20))) (みやほりん) ---- =-LOOKUP(1,-RIGHT(REPLACE(CELL("filename",A1), FIND("-PG.xls",CELL("filename",A1)),100,""),ROW($1:$100))) (GobGob) ---- UDF 第一引数と第二引数の間の数字のみを抽出 =CheckNum("v","-") Function CheckNum(ByVal str1 As String, ByVal str2 As String) With CreateObject("VBScript.RegExp") .Pattern = "(" & str1 & ")(¥d+)(?=" & str2 & ")" CheckNum = .Execute(ThisWorkbook.Name)(0).submatches(1) End With End Function (seiya) ---- 皆様、返信ありがとうございます。 Mook様へ ファイル名から数字が検出されませんでした。 みやほりん様へ うまくいきました。 GobGob様へ コピーの仕方が悪かったのかな?うまくいきませんでした。 2行を1行につないでやってみたのですが・・・・・ Seiya様へ うまくいきました。 できればマクロでやりたいと考えています。上記の方法ですと正規表現を使用しているとおもわれます。 これからのメンテナンス等で正規表現が自分に扱えるかが心配です。(できるかな?) ---- 正規表現は一見難しそうに思えますが、基本を習得してしまえば数式のようなものです。 VBA 正規表現 メタ文字 等で検索すると、詳しく説明されたサイトが多数見つかると思います。 (seiya) ---- >GobGob様へ >コピーの仕方が悪かったのかな?うまくいきませんでした。 >2行を1行につないでやってみたのですが・・・・・ ↓ もしかして、コレ? (大文字小文字) >例。v2-Pg.xls から2のみを抽出する。 >V数字-PG.xls の形です。最初にVで始まりその後に数字が入ります。その後ろは-PG.xlsです。ブックは自分自身です。 =-LOOKUP(1,-RIGHT(REPLACE(CELL("filename",A1), SEARCH("-PG.xls",CELL("filename",A1)),100,""),ROW($1:$100))) (GobGob) ---- 返信ありがとうございます。 正規表現調べてみましたが、(?=-)の意味がわかりません。 Seiya様、教えていただけるとありがたいです。(できるかな?) ---- ◆これでいかがでしょう =-LOOKUP(1,-LEFT(REPLACE(CELL("filename",A1),1,SEARCH("[V",CELL("filename",A1))+1,),{1,2,3})) または、 =-LOOKUP(1,-LEFT(REPLACE(CELL("filename",A1),1,LEN(INFO("directory"))+2,),{1,2,3})) (Maron) ---- (? で始まる部分は、「後方参照をしない」、という意味です。 この場合 (?=-) ですよね? -が次に続く文字列だけど、"-"自体は後方参照の必要がありませんよ、 という意味です。 .Execute(ThisWorkbook.Name)(0) でマッチ全体を表示させた場合でも "v"は残りますが、"-"は含まれません。 長いPattern 文字の場合、(? で後方参照から除外しておくと、メモリの節約にもなりますし、 多少高速になるはずです、 (seiya) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201205/20120512104710.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97054 documents and 608269 words.

訪問者:カウンタValid HTML 4.01 Transitional