EXCELで参照シート名含む計算式の変更マクロ

このQ&Aのポイント
  • EXCELで参照シート名を含む計算式の変更について、マクロを使用して拠点ごとにシート名を変更する方法について教えてください。
  • マクロを使用して、EXCELの複数シート間で参照される計算式のシート名を拠点ごとに変更する方法について教えてください。
  • EXCELのマクロを使用して、参照シート名を含む計算式を拠点ごとに変更する方法について教えてください。
回答を見る
  • ベストアンサー

EXCELで参照シート名含む計算式の変更マクロ

マクロを作成しておりますして、わかりづらいか質問もしれませんが宜しくお願いします。 (1)マクロを配布し先方(複数拠点)で持っているブックに変更をかけ  たい。 (2)そのブック内には複数シートがあり、計算式で他シートを参照して  いる。 (3)その計算式を変更かけたい。が(2)でいう参照シートのシート名を各  拠点にて変更しているので、計算式も変更後のシート名が入って  いる。 例えば、 シート1のA1セルに「=(xxxxx)!B1/C5」という式を埋め込みたい。    ※(xxxxx)はシート名。 でも、(xxxxx)のシート名は拠点によってシート名がことなることが 問題。尚、シート名以降の計算式は全拠点共通。 そこで、こんなことがやれればのイメージですが イメージ1: シート1の他のセル(D1)で(xxxxx)と同じシート名を参照している 式が必ず存在している。拠点毎にシート名は異なるがセル(D1)の 場所は共通。 このセル(D1)の式からシート名を抽出し、上の「=(xxxxx)!B1/C5」 の(xxxxx)に入れて、シート1のA1セルにこの計算式を記載する マクロを作る イメージ2: もし「=(xxxxx)!B1/C5」の(xxxxx)部分に仮名称を入れたものを マクロでシート1のA1セルに書き込んだあと、各拠点にて(xxxxx) →それぞれ拠点で使っているシート名に置換する ような方法があ るか?(存在しない参照シート名のまま書き込むとファイル指定の ダイアログが開くので、開かないような汎用的な記述を一旦仮置き できないか?) 以上宜しくお願いしたします

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

数式からシート名の抽出例 数式の、= 直後にシート名がある場合です。 Dim f As String Dim n As Integer f = Sheets("シート1").Range("D1").Formula n = InStr(f, "!") MsgBox Mid(f, 2, n - 2) とか Dim f As String f = Sheets("シート1").Range("D1").Formula MsgBox Split(Split(f, "=")(1), "!")(0) D1セルの数式からシート名を抽出 参照シート名を当てはめてからA1に書き込む というようにすればどうでしょうか。 Dim f As String Dim ws As String f = Sheets("シート1").Range("D1").Formula ws = Split(Split(f, "=")(1), "!")(0) Sheets("シート1").Range("A1").Formula = "=" & ws & "!B1/C5"

bxd00263
質問者

補足

ありがとうございます。教えていただいた  Dim f As String  Dim ws As String  f = Sheets("シート1").Range("D1").Formula  ws = Split(Split(f, "=")(1), "!")(0)  Sheets("シート1").Range("A1").Formula = "=" & ws & "!B1/C5" で、うまくいきそうです。 Splitは知らなくてネット見ても今一使い方が?なんで、宜しければ意味が分かればと・・・ 4行目の「f」→対象も文字列、「"="」→区切り?、「(1)」「(0)」の 意味は?  

その他の回答 (1)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

こちらでどうでしょうか。 Split関数で文字列を区切る http://officetanaka.net/excel/vba/tips/tips62.htm

bxd00263
質問者

お礼

ありがとうございました とても助かりました!

関連するQ&A

  • ExcelのマクロによるVLOOKUPの参照シートの変更について

    ExcelのマクロによるVLOOKUPの参照シートの変更について ブックAのSheet1のセルA1にドロップダウンリストを作成し、アルファベットの"J"、"M"、"A"が選択できるようにしてあります。 ブックAのSheet2のセルB1には、以下の式が入力してあり、別のブック(ブックB)から情報を読み込んでいます。 =VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]国語'!$B$4:$V$30,4,FALSE) やりたい事は↓ ブックAのSheet1のセルA1にある、ドロップダウンリストを変更すると、ブックAのSheet2のセルB1にある式(上記式)の参照シート(上記式では「国語」の部分)が変更さえるマクロを作りたいのですが、うまくできません。 ちなみに、ドロップダウンリストの"J"を選択した場合は、ブックBのシート"国語"を参照し、リストの"M"を選択した場合は、ブックBのシート"数学"を参照し、リストの"A"を選択した場合は、ブックBのシート"美術"を参照するようにしたいです。 よろしくお願いします。 また、マクロを使わずして出来るようでしたら、その方法も合わせて教えて下さい。

  • Excelのシート間の参照

    Excelでシート間のセルの参照をしたいのですが、どのシートを参照するのかを すぐに変えることのできるようにしたいのです。 具体的には、A、B、Cという名前のシートがあり、シートDにおいて A1セルにA、B、Cいずれかの文字を入力すると、その下のセルの参照先が シートAのB1セルになるようにしたいのです。 とりあえず色々式を入れてみたのですが、すべて拒否されてしまいました。 たとえば ='A1'!B1 ='"A1"'!B1 とかです。 よろしくお願いします。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • エクセルのシート名の参照

    エクセルでブック1とブック2があり、それぞれ日付別に1~31のシートがあります。 ブック1は日報のような内容となっており、ブック2でブック1のデータを参照して、計算をしております。 ブック2の計算式が月ごとに変わるのですが、ブック2のシート1に数式を入力し2~31にコピー&ペーストし、置換を使用して参照シート名を1から2~31へと置換しているのですが、間違いや変更のたびにやりなおしとなり、かなり手間となっています。 何か良い方法は無いでしょうか? 分かりにくくてすいません。

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • シート名だけを変えてコピーしたい

    Excel 2003を使用しています。 添付画像は、一時的に数式を表示するようにしています(どのセルに今どのような計算式が入っているか)。 Sheet6 の セルB2からセルF2迄、データ1の値を参照する計算式が入っていますが、 これを、3行目から6行目まで、シート名の違う、計算式をコピーしたいのですが、 どのようにすれば良いでしょうか? 縦にコピーした後、参照式のシート名と行番号を変更しています。 例えば、セルB2をセルB3にコピーしたら、セルB3の参照式は データ1!A2となっています。 これをデータ2!A1としたいのです。 実際に計算式の入っているシートは、もっと沢山の参照式が入っているので元の計算式の方法を 変更は難しいです。

  • Excelで参照するシート名を計算で求めることは可能ですか?

    前置き 本当は邪道だと思うのですが・・・・。 Excelでとある見積書を部品ごとにシートを分けて作成しており、 そのシートは80シートにも及びます。 この見積書の合計部分のみを集めた、統括表の様なシートを別途作成 してその表に80シートの合計部分のみを自動参照(リンク)させて計算 したいのですが、計算式をコピーしてもセル参照は変わってもシート名だけは 変わってくれず、ひとつひとつシート名を手修正している次第です。 ファイルはたくさんあるのでこのままでは、日が暮れてしまいそうで 困り果てております。 シート名の部分をこのセルの値を参照するというように計算で求めることは 可能でしょうか?教えてください。

  • ExcelのマクロでSheetに記載のファイル名に変更するには

    Excel2003のマクロで、Sheet1のセルb1~b***(***の値はマクロで末尾を認識させたい)に記載されているファイル名をDドライブのフォルダ名「TEST1」から検索してAAのセルC1~C***に記載のファイル名にリネームするマクロで、「TEST1」フォルダにSheet1のセルに記載のファイルがない場合はエラーにしないで無視して次に進むようにしたいのですが、初心者でうまくできません。ご指導宜しくお願いします。

  • エクセル2003 マクロ シート名

    エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。

  • エクセルのマクロで、セルの値を参照してジャンプ

    エクセルのマクロで、セルの値を参照して、 別シートにジャンプして貼り付けたいと思っています。 <Sheet1>  |  A  B  C ------------------------------------ 1|  A1  あ  100 2|  B5  い  50 3|  C7  う  80 4|  D3  え  20 5|  E9  お  40 <Sheet2>  |  A  B  C  D  E ------------------------------------ 1|  あ 2|  100 3|         え 4|         20 5|    い 6|    50 7|       う 8|       80 9|            お 10|            40 といったイメージです。(お分かり頂けますか?) Sheets1!B1:C1を選択し、A1のセルの値を参照して、Sheets2!A1にジャンプして、 行列入れ替えて貼り付ける、といったマクロを組みたいのですが、 セルの値を参照する部分が分かりません。 実際はSheets2の様なシートは複数あり、1つのリストから複数の形式を変えた表を 作りたいと思っています。 Sheets2以降のシートに見出し行を加え、VLOOK関数を組み込んだ表を作っておき、 結果を貼り付けて見出し行を削除する、といったマクロは組めるのですが、 セルを参照してジャンプして貼り付けてくれると便利だと思い質問させて頂きました。 どなたかお知恵を拝借できましたら嬉しいです。 宜しくお願い致しますm(_ _)m

専門家に質問してみよう