• ベストアンサー

Excelの外部参照

外部参照の数式→〔Book1.xls〕Sheet1!A1 の最後のA1の数字の部分を変えていきたいのです 複数のセルをいっぺんに変えたいのですがどうすれば良いのでしょうか? いちいち手で変えていくのにはウンザリです・・・ どうか助けてください

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

  • ベストアンサー
  • a999a999
  • ベストアンサー率68% (11/16)
回答No.4

毎日やるようなら一括で変更する方法を考えてみました。 良かったら、下のものを試してみて下さい。 マクロですが、簡単です。 最初だけ準備に少し手順が必要ですが その後はボタン一つです。ご協力下さい。 参照する「参照元ファイル」 参照される「参照先ファイル」 の二つが必要です。 補足にあるような表形式を想定しています。 ABCの3列のみ、10行だけ、を指定により更新。 どの列を参照するか指定します。 1と指定すると、シート1、2、3の各A列を参照する式に変えます。 31だとAE列を参照します。列を番号を指定して下さい。 参照元、先、の両方を開いた状態でスタートして下さい。 以下の手順でお願します。 「マクロの貼り付け」 「準備」 「実行」 「マクロの貼り付け」 1.参照元のブックを開いて 2.Alt + F11 を押して VBE を起動して下さい。 3.ツールバーの「挿入」-「標準モジュール」 を選んで下さい。 4.出てきた白紙に下のソースを貼りつけて下さい。 5.ツールバーの「ファイル」-「終了してエクセルに戻る」 を選択してエクセルに戻って下さい。 「準備」 1.参照元ファイルの、シートをアクティブにしてから (参照式の入っている、または式を入れたいシート) 2.ツールバーの 、「ツール」-「マクロ」-「マクロ」を選んで 中から「準備」を選択して、実行して下さい。 これで準備完了です。 「実行」 作られた、ボタンを押すとスタートします。 ボタンは右クリックすると移動やサイズ変更ができます。 適当な位置に配置して下さい。 下のマクロを貼りつけて下さい。 Sub 参照ズレズレ() ズレ = InputBox("1は、1日(A列)。31は、31日(AE列)。", "日、または 列", "1") ブック名 = "Book2" 'ここを変更して下さい。 シート名1 = "Sheet1" '参照先の ブック名、シート名は シート名2 = "Sheet2" 'ここで決まります。 シート名3 = "Sheet3" '実行前にここを変えて下さい。 For 行 = 1 To 10 式 = "=+[" & ブック名 & "]" & シート名1 & "!R[" & 0 & "]C[" & ズレ - 1 & "]" Cells(行, 1).FormulaR1C1 = 式 式 = "=+[" & ブック名 & "]" & シート名2 & "!R[" & 0 & "]C[" & ズレ - 2 & "]" Cells(行, 2).FormulaR1C1 = 式 式 = "=+[" & ブック名 & "]" & シート名3 & "!R[" & 0 & "]C[" & ズレ - 3 & "]" Cells(行, 3).FormulaR1C1 = 式 Next End Sub Sub 準備() 'ボタン作成 Range("D10:D11").Select ActiveSheet.Shapes.AddShape(msoShapeRectangle, 159.75, 158.25, 165.75, 27). _ Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Shadow.Obscured = msoTrue Selection.ShapeRange.Shadow.Type = msoShadow18 Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.ForeColor.SchemeColor = 11 Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.ForeColor.SchemeColor = 45 Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Fill.OneColorGradient msoGradientHorizontal, 2, 1# Selection.Characters.Text = "スタートボタン" With Selection.Characters(Start:=1, Length:=7).Font .Name = "MS Pゴシック" .FontStyle = "太字" .Size = 16 .ColorIndex = 7 End With Selection.HorizontalAlignment = xlCenter Selection.OnAction = "参照ズレズレ" Range("D8").Select End Sub この上までを貼りつけて下さい。 ブック名、シート名は固定になってます。 事前に上のマクロの先頭部分にある指定を変更しておいて下さい。 今は、"Book2"の"Sheet1""Sheet2""Sheet3"を参照先にしています。 ブック名 = "Book2" シート名1 = "Sheet1" シート名2 = "Sheet2" シート名3 = "Sheet3" ここを変えてほしい、ここが違うなど 何か不満、要望がありましたら連絡下さい。 できるだけ希望に近いものを作ります。

yukinojyou7
質問者

お礼

お礼が遅れてしまい、申し訳ありませんでした 教えていただいたマクロの応用で少し時間がかかってしまいましたが、 一発で変更することができました 本当にどうもありがとうございました また質問させていただく際はよろしくお願いします

yukinojyou7
質問者

補足

こんなに詳しい回答をしていただいてありがとうございます! 感激です!! ・・しかし一つ訂正があります 「4/1:Book1のSheet1のA1~A10をBook2のSheet1のA1~A10にリンク    Book1のSheet2のA1~A10をBook2のSheet1のB1~B10にリンク    Book1のSheet3のA1~A10をBook2のSheet1のC1~C10にリンク                 ・                 ・                 ・  4/2:Book1のSheet1のB1~B10をBOOK2のSheet1のA1~A10にリンク    Book1のSheet2のB1~B10をBOOK2のSheet1のB1~B10にリンク    Book1のSheet3のB1~B10をBOOK2のSheet1のC1~C10にリンク                 ・                 ・                 ・                」 としましたが、実は 「4/1:Book1のSheet1のA1~A10をBook2のSheet1のA1~A10にリンク     Book1のSheet2のA1~A10をBook2のSheet1のB1~B10にリンク     Book1のSheet3のA1~A10をBook2のSheet1のC1~C10にリンク                 ・                 ・                 ・  4/2:Book1のSheet1のB1~B10をBOOK2のSheet2のA1~A10にリンク     Book1のSheet2のB1~B10をBOOK2のSheet2のB1~B10にリンク         Book1のSheet3のB1~B10をBOOK2のSheet2のC1~C10にリンク                 ・                 ・                 ・                   」 でした それでも上のマクロは変わらないのでしょうか?? 実は他のことで忙しくまだ試せていません ただ、お礼と訂正をお知らせしようと思いました 明日実際に使用してみますので、またその後お返事します

その他の回答 (3)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Book2のどこかに、差し障りのない空きセルを探します。例えば、それをセルH1とします。 Book2の A1 に =OFFSET([Book1]Sheet1!$A$1,ROW()-1,$H$1-1) B1 に =OFFSET([Book1]Sheet2!$A$1,ROW()-1,$H$1-1) C1 に =OFFSET([Book1]Sheet3!$A$1,ROW()-1,$H$1-1) として下にコピーします。(フィルハンドルを引っ張ってもいいです) H1が『1』ならBook1のA列、『2』ならB列、『3』ならC列・・・となります。 算式を換える必要はないはずです。『H1』をかえるだけでBook2の値は変化します。 ご参考に。

yukinojyou7
質問者

お礼

回答ありがとうございます 上の補足でも書きましたが、具体例が少し違っていました スイマセン この関数を使ったやり方も是非試させていただきます もういい人ばっかりで恐縮しっ放しです

  • a999a999
  • ベストアンサー率68% (11/16)
回答No.2

たくさんの参照位置を変更したいというのは どういう状況でしょうか。 ブック1の参照位置をずらすというのは ブック1自体に変更があったのではないでしょうか。 もしそうなら、同時に参照先と参照元の両方のブックを 開いて更新作業を行うと ブック1に挿入などの位置ズレが あっても参照側も一緒にズレます。 上とは違い、単独の場合、たとえば 縦に並んだ A1 A2 A3 を A2 A3 A4 のように変えたいなら 仮に同名のブックを作成して 同時に開きます。 同名ブックでA1に下へ挿入するさぎょうを行います。 これで参照側に反映していると思います。 あとはマクロです。 強力にたくさんある場合はこれです。 どのような変更か分かれば もう少し具体的に説明できるかもしれません。 良かったら教えて下さい。

yukinojyou7
質問者

補足

回答ありがとうございます 実際にどういうことをしたいかというと 4/1:Book1のSheet1のA1~A10をBook2のSheet1のA1~A10にリンク    Book1のSheet2のA1~A10をBook2のSheet1のB1~B10にリンク    Book1のSheet3のA1~A10をBook2のSheet1のC1~C10にリンク                 ・                 ・                 ・ 4/2:Book1のSheet1のB1~B10をBOOK2のSheet1のA1~A10にリンク    Book1のSheet2のB1~B10をBOOK2のSheet1のB1~B10にリンク    Book1のSheet3のB1~B10をBOOK2のSheet1のC1~C10にリンク                 ・                 ・                 ・  となります 今まではまず4/1のものをコピーして新しいシートを作り、質問にあるように 数式の最後の数字だけ手作業で変更し、あとはセルのコピーをしていましたが 手作業での変更の時間を短縮したいと思い、質問してみました これでわかっていただけますでしょうか? もしわからなかったらまた補足いたします よろしくお願いします    

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

こんにちわ。 A1の部分を直接入力せずに、参照先アドレスを作業セル(たとえばF1)に入力します。 そして、数式の部分では、="[Book1.xls]Sheet1!" & indirect(F1) という風にすれば、作業セルの修正だけですみますので、ラクかも。 しかし、絶対参照、相対参照をうまく使い分けていれば、数式を複写しても、自動的に参照先は変わるのでは?

yukinojyou7
質問者

お礼

回答ありがとうございます 絶対参照・相対参照なんてわからないです・・・ 逆に質問されても困っちゃいますよー(^^;) もし良かったらわかりやすく教えてください

関連するQ&A

  • 他のBookに指定している外部参照先をセルの文字列で指定する方法

    マクロを使わずに外部参照先を変更する方法を探しています。 例えば, C:\○○フォルダにA+1.xls,A+2.xls・・・A+10.xls という感じでA+X.xlsのXの部分が1~10までのファイルがあります。 それぞれのファイルのSheet1!A1に数値が入力されています。 開いているBookのセルC1に ='C:\○○[A+X.xls]sheet1!A1 みたいな感じで数式を入力して, セルB1にXの部分(1~10)を入力すると セルC1に入力した番号のファイルの Sheet1!A1の数値を出力する方法はないでしょうか? マクロではできるのですが,マクロを使わずに実現したいです。

  • Excelで外部参照パスの一部を複数セルから利用は

    Microsoft Excelで (数式入力可能ならどのバージョンでも同じ)、 A1セルに、別ファイルの外部001.xlsxのSheet1のC1の値 123 と A2セルに、別ファイルの外部001.xlsxのSheet1のC5の文字列 こんにちは を 外部参照を使用して、セルに表示させたいのですが、 B1に下記のようなパスを手入力しておきたいです。 'C:\Temp\[外部001.xlsx]Sheet1' そして、 A1セルに数式として、B1のパスファイル名+セル名 のようにB1の値を利用したいです。 例:(この通り外部参照全てをB1に書いても、A1とA2は計算式エラーになります) 'C:\Temp\[C1あ.xlsx]Sheet1'!C1 <-- 実際には、\は円記号。 他の書き方でも値エラーとなったもの↓ ''C:\Temp\[C1あ.xlsx]Sheet1'!C1 "'C:\Temp\[C1あ.xlsx]Sheet1'!C1" ''C:\Temp\[C1あ.xlsx]Sheet1'!C1' 下記のような書き方で、 外部参照パスを一つのセルに記述し、 複数のセルからその1つのセルを参照利用する場合の実現方法を教えてください。 A1セル $B$1&"!C1" A2セル $B$1&"!C5"

  • エクセルのファイルを絶対参照したい

    各ファイルを1つのファイルにリンクさせたいのですがファイル名を絶対参照ってできるのですか? (例) A1=[BOOK1.xls]sheet1'!$A1 B1=[BOOK2.xls]sheet1'!$A1… A1=[BOOK1.xls]sheet1'!$A2 B1=[BOOK2.xls]sheet1'!$A2… A1=[BOOK1.xls]sheet1'!$A3 B1=[BOOK2.xls]sheet1'!$A3…       :             :       :             : 

  • EXCEL2000で外部参照を動的にしたい

    外部参照したい場合、 ='D:\2002\05\[aaa.xls]sheet1!'A1 のように指定しますが, ファイルのパスをあるセルに "D:\DATA\2002\05\" の様に定義しておき、 ファイルパスを定義したセルの内容を "D:\DATA\2002\06\" とかに変える事によって、 外部参照の対象を変える事はできるのでしょうか?

  • excelでの外部参照について

    社内で以前に作成されたファイルのため詳細がわからないのですが、他のファイルへの外部参照について教えてください。 バージョンはExcel2002 sp2です。問題のファイルはネットワーク上にある共有ホルダーにあります。セルで「=IF($A1=0,0,$A1*'\\サーバ名\フォルダー名1\フォルダー名2\[ファイル.xls]シート名'!B1)」という式が設定されています。このファイル(参照しているファイルも含めてフォルダーごと)を自分のPCのデスクトップにコピーしたところ、ある一部のセルでのみ、「=IF($A1=0,0,$A1*'C:\フォルダー名2\[ファイル.xls]シート名'!B1)」というふうに勝手にパスが変わってしまうのです。 「編集」-「リンクの設定」でいちいち直しているのですが、元の場所からコピーしても、パスが変わらないようにしたいです。または、コピーする時はフォルダーごとコピーするので、それに合わせて「\\サーバ名」がコピー先のドライブ名に変わるようにしたいです。元のファイルの式を眺めても違いがわからず、何故一部のセルの式だけ書き換わってしまうのかわからず困っています。 いろいろ検索しましたが、回答が見つけられず、質問させていただきました。ご教授ください。

  • Excelでの外部ファイル参照

    環境:windowsXPPro、Excel2000 初めまして。 Excelの外部ファイル参照で悩んでいることがあり解決方法を模索中です。 基礎値.xls、集計.xls というBookがネットワーク上のファイルサーバーにあるのですが 集計.xlsに基礎値.xlsの値を参照する式がセルに設定されています。 [=vlookup(a1,'\\server\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] 2つのファイルが同じサーバーのフォルダーにある場合は問題ないのですが、 集計値.xlsを各ローカルPCに移動して使用したところ基礎値.xlsの参照先が [=vlookup(a1,'c:\job\[基礎値.xls]Sheet1'!$A$1:$B$50,2,false)] となってしまいサーバー上のファイルを参照してくれません。 VBAなどで細工すれば解決はすると思いますが、マクロ・VBAを使わないで運用しなくてはなりません。 ファイルを移動させても参照先フォルダーを固定させるよい方法はないでしょうか?

  • bookからbookへの数式のコピーについて教えてください

    bookからbookへの数式のコピーについて ??BookのSheet1のセルにSheet2を参照にした数式が入っています =2+Sheet2!$A8 これを!!BookのSheet1のセルにコピーすると =2+[Book1.xls]Sheet2!$A8 こうなりました コピーしたセルは11,475セルあります [Book1.xls]をすべて消したいのですが、簡単な方法はありますか?

  • 他のブックファイルのセルの参照が上手く行きません

    こんにちはよろしくお願いいたします。 エクセルのブックファイル(Book1.xlsx)に,他のブックファイル(Book2.xls)のセルの値を参照しようと思い”=”を入力し参照するブックファイルのセルをクリックし,「 =[Book2]Sheet1!$A$1 」のような参照を行いました。こうしてきちんと表示されました。 しかし,この参照の式を「 =[Book3]Sheet1!$A$1 」のように,他のブックファイル(Book3.xls)のセルに変更したところ,参照できなくなりました。ブックファイル(Book1.xlsx)には,「 =[Book3]Sheet1!$A$1 」という式そのものが表示された状態となっています。式は,キーボードを使って変更しました。もちろん,(Book3.xls)は,(Book2.xls)と同様のシート形式をもち,データも入力されています。 このような状態になると,先に挙げたように,”=”を入力して参照するブックファイル(Book3.xls)のセルをクリックしても,ブックファイル(Book1.xlsx)には,「 =[Book3]Sheet1!$A$1 」という式そのものが表示された状態となったままで,(Book3.xls)のデータは表示されません。 (Book2.xls)と(Book3.xls)のセルのデータは,文字列です。 気になるのは,(Book1.xlsx)はoffice2010で作成されたファイルであること,(Book2.xls)と(Book3.xls)は,互換モードと表示されるファイルであること,また表示されているファイルを見ると,フルパスで参照している点です。「 ='C:\aaa\bbb\・・・・・[Book3]Sheet1'!$A$1 」という参照式になっています。3つのファイルはすべて同一ファイルに入っています。 何が,参照を阻んでいるのでしょうか?教えてください。よろしくお願いします。

  • エクセルで別ファイルの値を参照

    いまBOOK1.xlsがBOOK2.xlsの値を参照しています BOOK1.xlsのどこかのセルにBOOK3と入れるとBOOK3.xlsの値を参照するようにできますか? BOOK2とBOOK3はシートなどは値が違うだけで全く同じ構成です エクセルバージョンは2003です よろしくお願いします

  • Excelにて外部Excelファイルのデータを参照する方法

    お世話になります。 Excelにて外部のExcelファイルのデータを参照する方法を教えていただけませんでしょうか。 具体的には、 1.Excelファイルa.xls b.xls c.xls・・・ があります。 2.a.xlsの a1 に b.xls の a1 の値を入力し、続けて a.xls の a2 に c.xls のa1・・・を繰り返していきます。上手く説明できないので、下を参照願います。 ------------------------------------------------ <a.xls> |a |b |c -+------- 1|a1|b1|c1 ←b.xls ないのa1-c1のデータ 2|a1|b1|c1 ←c.xls ないのa1-c1のデータ 3|a1|b1|c1 ←d.xls ないのa1-c1のデータ ------------------------------------------------ 上記を数百のファイル分行いたいのですが、外部ファイルを開いて該当のセルをコピーしていると非常に時間がかかります(といいますか無理でしょう)そこで、これらを数式から指定して、セルにコピーする事により、作業を効率化したいというわけです。 そのような方法がございましたら、教えていただけませんでしょうか。 よろしくお願い致します。

専門家に質問してみよう