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"
ここを変えてほしい、ここが違うなど
何か不満、要望がありましたら連絡下さい。
できるだけ希望に近いものを作ります。
この回答への補足
こんなに詳しい回答をしていただいてありがとうございます!
感激です!!
・・しかし一つ訂正があります
「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にリンク
・
・
・ 」
でした
それでも上のマクロは変わらないのでしょうか??
実は他のことで忙しくまだ試せていません
ただ、お礼と訂正をお知らせしようと思いました
明日実際に使用してみますので、またその後お返事します
お礼が遅れてしまい、申し訳ありませんでした
教えていただいたマクロの応用で少し時間がかかってしまいましたが、
一発で変更することができました
本当にどうもありがとうございました
また質問させていただく際はよろしくお願いします
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の値は変化します。
ご参考に。
回答ありがとうございます
上の補足でも書きましたが、具体例が少し違っていました
スイマセン
この関数を使ったやり方も是非試させていただきます
もういい人ばっかりで恐縮しっ放しです
No.2
- 回答日時:
たくさんの参照位置を変更したいというのは
どういう状況でしょうか。
ブック1の参照位置をずらすというのは
ブック1自体に変更があったのではないでしょうか。
もしそうなら、同時に参照先と参照元の両方のブックを
開いて更新作業を行うと
ブック1に挿入などの位置ズレが
あっても参照側も一緒にズレます。
上とは違い、単独の場合、たとえば
縦に並んだ A1 A2 A3 を
A2 A3 A4 のように変えたいなら
仮に同名のブックを作成して
同時に開きます。
同名ブックでA1に下へ挿入するさぎょうを行います。
これで参照側に反映していると思います。
あとはマクロです。
強力にたくさんある場合はこれです。
どのような変更か分かれば
もう少し具体的に説明できるかもしれません。
良かったら教えて下さい。
この回答への補足
回答ありがとうございます
実際にどういうことをしたいかというと
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のものをコピーして新しいシートを作り、質問にあるように
数式の最後の数字だけ手作業で変更し、あとはセルのコピーをしていましたが
手作業での変更の時間を短縮したいと思い、質問してみました
これでわかっていただけますでしょうか?
もしわからなかったらまた補足いたします
よろしくお願いします
No.1
- 回答日時:
こんにちわ。
A1の部分を直接入力せずに、参照先アドレスを作業セル(たとえばF1)に入力します。
そして、数式の部分では、="[Book1.xls]Sheet1!" & indirect(F1)
という風にすれば、作業セルの修正だけですみますので、ラクかも。
しかし、絶対参照、相対参照をうまく使い分けていれば、数式を複写しても、自動的に参照先は変わるのでは?
回答ありがとうございます
絶対参照・相対参照なんてわからないです・・・
逆に質問されても困っちゃいますよー(^^;)
もし良かったらわかりやすく教えてください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今まで文字化けなく開けていたc...
-
スプレッドシートで指定された...
-
ExcelでASCを使って全角を半角...
-
マクロの処理が遅くなった
-
Excel関数について教えてくださ...
-
作成した数式を値として表示し...
-
エクセルの質問です。 F列からL...
-
エクセルでファイルの最終更新...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルのセル内に分数などの...
-
Excelの警告について
-
Microsoft 365Excelの見開きペ...
-
Excel関数について教えてくださ...
-
シートの情報を別のシートへま...
-
Excelマクロで空白セルを詰めて...
-
【マクロ】フォルダ内にあるPDF...
-
index関数の説明をお願いします。
-
重複しない値を取り出したい
-
エクセルの数式バーのフォント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報