• ベストアンサー

Excel,マクロ / 複数のシートでの値の同期

Excelで複数のシートである選択範囲の値を同期させたいと考えています。関数で指定すれば簡単なのでしょうが、マクロのユーザーがコンピュータ初心者なので、誤って等式が変更されてしまうのが心配です。マクロで解決する方法はあるのでしょうか? 具体的にはSheet1のA3:D500の値をSheet2のB3:E500の範囲に表示し、Sheet1が変更されるとSheet2も自動的に変更されるプログラムをめざしています。どうぞよろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

1. Sheet1のシートタブを右クリック、して[コードの表示]。 2. 出てきた白い部分に、以下のコードを貼付けます。 '********これより下********** Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A3:D500")) Is Nothing Then Exit Sub Sheets("Sheet2").Range("B3:E500").Value = Range("A3:D500").Value End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 これで出来ます。

ocypodidae
質問者

お礼

動作確認しました。完璧でした。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル 複数シートの値のみコピーで

    こんにちは いつもお世話になっています。 先日、選択した複数のシートを新しいブックに値だけコピーするマクロをこちらで教えていただきました。(関数が入ったシートなのでタブの右クリックからの新規ブックへのコピーでは関数がコピーされてしまうので) 今回、このマクロで失敗するシートがあったので原因を教えてください。 値だけコピーするマクロは以下です。 Sub 値コピー() Dim WS As Worksheet ActiveWindow.SelectedSheets.Copy For Each WS In ActiveWorkbook.Worksheets With WS.Cells .Copy .PasteSpecial Paste:=xlPasteValues End With Next Application.CutCopyMode = False End Sub 失敗するシートにはつぎの関数があります。 A1セルに=REPLACE(CELL("filename",A1),1,FIND(".xlsx]",CELL("filename",A1))+LEN(".xlsx]")-1,) B3セルに=IF(COUNTIF(Sheet2!$1:$1,$A$1),IF(ROWS($3:3)>COUNTIF(OFFSET(Sheet1!$J:$J,,MATCH($A$1&"クラス",Sheet1!$J$1:$N$1,0)-1),B$2),"",COUNTIFS(OFFSET(Sheet1!$C:$C,,MATCH($A$1,Sheet1!$C$1:$G$1,0)-1),">"&INDEX(Sheet1!$C:$G,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0),MATCH($A$1,Sheet1!$C$1:$G$1,0)),OFFSET(Sheet1!$J:$J,,MATCH($A$1&"クラス",Sheet1!$J$1:$N$1,0)-1),B$2)+1&"位 "&INDEX(Sheet1!$B:$B,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0))&" "&INDEX(Sheet1!$C:$G,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0),MATCH($A$1,Sheet1!$C$1:$G$1,0))&"点"),"") 別シートのデータから条件に合うものを引き出す関数です。 これらの関数もおしえていただいたもので、まだ理解できていませんので、説明不十分で申し訳ありません。 これらの関数があるシートではなぜ上記のマクロが失敗するのでしょうか。 もちろん、シートのデータを選択、コピーして新規ブックに値のみコピーはできます。 上記のような関数があるシートでも複数選択シートでの値のみコピーができるマクロを教えていただけないでしょうか。 情報不足がありましたら、教えてください。 よろしくお願いします。 エクセル2007

  • [Excel]複数のシートで内容の同期を取る

    1つのブックで複数のシートを管理しているファイルがあります。 あるシートの列の内容を別のシートの列と同期させたいと思っています。例えば、シート1のA列の内容とまったく同じものをシート2のE列に表示させたいと考えていますが、この方法を教えてください。 この場合、シート1の内容を変更したら、自動的にシート2には同期が取れているようにしたいです。 また、できればシート2の列は変更できないようにできればと思っています。 お手数ですが、教えて頂ければと思います。

  • EXCEL のマクロを作りたいんですが・・・

    マクロはあまり詳しくありません。マクロの記憶で設定し、多少内容の変更をする程度です。 マスターのBOOKがあり、月ごとにデータを入力し、その都度名前を付けて保存します。 (データの量はまちまちです) Sheet1にデータを入力し、Sheet2には関数が入っております。 使いたいのはSheet2にあるデータなのですが、データが無い欄は関数が入っていますので、そのままではデータとして使うのが面倒です。 CSVで出力するにしても、空の関数の欄が,,,,と出ます。 データが入っているセルだけを範囲指定して、値の貼り付けをし、使用していない空のセルの関数を消すというマクロが出来るでしょうか?

  • 複数のシートにまたがるマクロの記述方法

    複数のシートにまたがるマクロって書けるのでしょうか?自動記録でマクロを作ってチビチビ編集しているのですが、シートを指定したマクロが書けません。4枚のシートがセットで連動しているのですが、一度のマクロの実行ボタンで全てを順序良く実行させたいのです。 ご存知の方教えてください。

  • Excel 2007 マクロ 複数シートの検索

    Excel 2007 マクロ 複数シートの検索 Sheet1とSheetに情報があります。 Sheet1にある番号とSheet2にある番号を 検索して、ヒットした場合 Sheet1の備考の文字をSheet2に備考に反映したいです。 画像にSheet1、Sheet2、完成形があります。 関数であればVlookupを使用しますが、 マクロでできるようにしたいです。 どのようなマクロになりますでしょうか。 アドバイスお願いします。

  • マクロのシートから関数で転記

     初めまして、よろしくお願いします。  マクロ(?)のシートで上の行から自動で挿入されていくシートから、別のシートで関数を使い、数字を取り出そうとすると、(例=Sheet1!A2)マクロシートで自動でデーターが挿入されていくごとに別のシートに入力している関数までもがつられて指定範囲が下に移動されていってしまいます。(例=Sheet1!A8   A2から順にA3、A4・・A8と言うように)何とか移動しないようにできないでしょうか。よろしくお願いします。

  • エクセル マクロ 複数シートを集約

    複数のエクセルシートの同一範囲を集約シートに纏めたいのですが どうやったらできるのか教えてください。 (1)範囲はA1からL216まで (2)シート数は毎回変動 (3)集約シートにはシート1の内容の次の行からシート2の内容というふうに  ずらずらとデータを並たい 以上3点が要望としてあります。 いくつかのマクロを組み合わせて一つのマクロを作ろうとしたところ この部分だけうまくいかずに困っております。

  • エクセルの複数のセルの値からシート名を自動変更する

    エクセルのシート名を複数のセルから自動で変更する場合のマクロを教えてください。 E6に「平成」、G6に「年」、I6に「月」、K6に「日」と入力されている状態で、 間のF6、H6、J6が空欄となっており、それぞれに年と月と日を入力するような状態となっています。 このF6、H6、J6に入力した年月日情報をシート名にするようなマクロは可能でしょうか? 「28.2.6」のように。もしくは「280206」のように6桁で。 また、F6、H6、J6の3つとものセルに値を入力した場合に、シート名が変更され、 その後に、それかのセルの情報を変更した場合は、その情報に変更されるようになればありがたいです。 下記のQ&Aが近いのですが、複数セルの情報からシート名を変更する方法が分かりません。 http://okwave.jp/qa/q2025849.html よろしくお願いします。

  • エクセルのセルの値をシート名にするマクロ

    エクセルで、例えばB2セルに入力された数字を使って自動でシート名にしたいのですが、(=そのセルの値が変更されたときに 自動的に シート名が変更されるマクロ )どうやったらよいのか良くわかりません。また、重複するシート名があった場合にはアラートを表示させたいです。 例: 1.B2セルに10と入力する 2.もしシート名に重複が無ければ、シート名が自動的に「10月」になり、アクティブセルはB2に戻って復帰する。 3.重複がある場合は「シート名に重複があります」等のアラートを表示して終了する 多分 イベントとかいうものが絡んでくるのでしょうが、マクロは時々使うのですが、いつも記録したものを手直しする程度なので、標準モジュールの部分しか触った事がありません。 どなたか教えてください。お願いします。

  • excelマクロで複数シート間のデータ同期方法

    質問お願いいたします。 1つのexcelファイルにて、特定のシートのベースにし、その他のシートで入力された値がベースシートとデータを常に双方向で同期するマクロの組み方を教えて頂きたいです。 ただし、双方向で同期させるのは最新の入力があったシート同士のみとしたいです。 環境はwindows vista、 excel2007です。 具体的な例を示します。 ベースシートをsheet1とする。 sheet1のA1~A10とsheet2のB1~B10やsheet3のC1~C10を双方向でリンクさせたいです。 sheet1は未入力としておき、sheet2にデータを入力すると、sheet1に反映させ双方向で同期させます。 次にsheet3に入力するとsheet1のデータ部分に上書きし同期させます。 ただし、このときsheet2とsheet3はリンクさせたくありません。 同期を取るのは一番新しい入力があったsheet同士のみにしたいです。 当方excel初心者のため拙い説明となっておりますが、わかりにくい部分がございましたら追記させていただきます。 どうぞよろしくお願いします。

専門家に質問してみよう