1

ファイルのタイトルに基づいて列の内容を調整する Excel マクロ/VBA コードを作成しようとしています。現在、入力した URL に基づいて csv ファイルをダウンロードするマクロをセットアップしています。マクロは、ファイルを自動的にフォーマットし、名前を付けます。ファイルの名前/タイトルの最初の 5 文字を使用して、追加のセルを自動的にフォーマットしたいと考えています。

たとえば、ファイル名は 48GHY_fjfdkjfe33.RHRH-msadklfjeiojo です。ファイルに name+type という列があります。「名前」行とタイトルを組み合わせて、フィールドに入力したいと考えています。以下の 2 つの画像は、前後の画像です。

データベースの前

データベースの後

現在、最初の 5 文字を別のフィールドに入力してから、="48GHY"&a2 関数を使用する必要があります。

Excel/VBAでこれを行う方法はありますか?


元の質問には回答がありましたが、マクロに入れようとするときに追加のヘルプを求めています。それはまだ同じ質問なので、別の投稿が必要だとは思いません。

これが現在使用しているマクロ/VBA です。これを実行すると、#VALUE! と表示されます。セルで。2 つのコード セットの唯一の違いは、A 列と B 列が J と K になったことです。

' Insert Column after name and then rename it name+type

Rows(1).Find("name").Offset(0, 1).EntireColumn.Insert
Rows(1).Find("name").Offset(0, 1).FormulaR1C1 = "name+type"

' 一番上の行をフリーズ

Rows("1:1").Select
With ActiveWindow
    .SplitColumn = 0
    .SplitRow = 1
End With
ActiveWindow.FreezePanes = True

'ファイルを保存

ActiveWorkbook.Save

'name+type列に内容を追加

Range("K2").Select
ActiveCell.FormulaR1C1 = "=LEFT(MID(CELL(""filename"",RC[-1]),SEARCH(""["",CELL(""filename"",RC[-1]))+1,SEARCH(""]"",CELL(""filename"",RC[-1]))-SEARCH(""["",CELL(""filename"",RC[-1]))-1),5)&RC[-1]"
Range("K2").Select
Selection.Copy
Range("K2:K8294").Select
ActiveSheet.Paste

' すべての列を自動調整

Columns("A:AK").Select
Selection.Columns.AutoFit

サブ終了

※追加コメントです。マクロで提供されたコードを変更しましたが、実行後の各セルでは、次のコードが列 k にあります。

=LEFT(MID(CELL("filename",J2),SEARCH("[",CELL("filename",J2))+1,SEARCH("]",CELL("filename",J2))-SEARCH("[",CELL("filename",J2))-1),5)&J2

*最後のメモ。ファイル名は 48GHY_fjfdkjfe33.RHRH-msadklfjeiojo#csv.txt として保存されています (何か関係があるのでしょうか?)

4

2 に答える 2

5

これをB2に入れて

=LEFT(MID(CELL("filename",A2),SEARCH("[",CELL("filename",A2))+1, SEARCH("]",CELL("filename",A2))-SEARCH("[",CELL("filename",A2))-1),5)&A2

編集

説明

この式=CELL("filename",A2)からファイル名が得られます。例えば

C:\Users\Siddharth Rout\Desktop\[Book1.xlsx]Sheet1

そしてこの式

=MID(CELL("filename",A2),SEARCH("[",CELL("filename",A2))+1, SEARCH("]",CELL("filename",A2))-SEARCH("[",CELL("filename",A2))-1)

上記からファイル名だけを取り出して、Book1.xlsx

Left()、指定した文字数に基づいて、テキスト文字列の最初の文字を返します。

HTH

于 2012-06-25T15:44:30.363 に答える
3

VBAさえ必要ないかもしれません。このようなものが私にとってはうまくいきました。

=MID(CELL("filename",A2),FIND("[",CELL("filename",A2))+1,5) & A2

ファイル名がどのように機能するかを理解するために、セル式を参照してください。

于 2012-06-25T15:46:52.067 に答える