• 締切済み

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初心者のため拙い説明となっておりますが、わかりにくい部分がございましたら追記させていただきます。 どうぞよろしくお願いします。

noname#127457
noname#127457

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

「同期する」というよりは、sheet2、sheet3が変更されたら一方的にデータをsheet1にコピーしてあげればよいのではないでしょうか? 入力ミスなども拾ってしまう可能性があるので(反映しなくても良いはずの変更も拾ってしまう)、お望みの通りかどうかはよくわかりませんが… ◇sheet2への設定例(sheet2のマクロに設定) (sheet3へも範囲を変えて同様の設定をする) Private Sub Worksheet_Change(ByVal Target As Range)  Dim c As Range  For Each c In Target   If Not (Intersect(Range("B1:B10"), c) Is Nothing) Then    Sheets("sheet1").Cells(c.Row, 1).Value = c.Value   End If  Next c End Sub

関連するQ&A

  • 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初心者のため拙い説明となっておりますが、わかりにくい部分がございましたら追記させていただきます。 どうぞよろしくお願いします。

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

    質問させていただきます。 EXCELにて、"シート1"のA1~C3と"シート2"のD4~F6を 同期化したく考えております。 ・いわゆる一方のシートが「読み取り専用」になってしまうリンク貼り付けではなく、シート1、シート2相互が書き換え可能の同期化です。 ・A1とD4、B3とE6、のように互いに照合箇所のセル同士を同期反映させたいと考えております。 なお、他の質問を参照したところ、 シート1のA1とシート2のD4の単一セルを同期かする方法は確認できました。(以下参照) ***************************************************************** シート1のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Worksheets("シート2").Range("D4") = Target End If End Sub シート2のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$4" Then Worksheets("シート1").Range("A1") = Target End If End Sub *************************************************************** これを参考にVBAの シート1のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then Worksheets("シート2").Range("D5") = Target End If End Sub シート2のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$5" Then Worksheets("シート2").Range("A2") = Target End If End Sub というように追記していったのですが、エラーとなってしまいます。 お詳しい方がおられましたらお願いいたします。

  • エクセルの同期について教えて下さい。

    エクセルの同期について教えて下さい。 Book1のシートAに、車輌手当の距離だけを入力しています。 同じ様式をBook2のシートBに作っていて、こちらにも同じデータを 入力しないといけないのですが、今まで、コピーをしていましたが 「同期」という方法で、シートAとシートBが同じデータをもつ事は 可能でしょうか? Book1はシートAの入力するシートしかついていないのですが、 Book2は、車輌手当金額一覧や給料一覧のシートもついています。 今、Book1を社員に入力させ、そのデータをリンクステーションから ひっぱりだし、コピーして使っています。 エクセルが得意ではないので、質問の仕方も難しく、分かりにくいかと 思いますが、宜しくお願い致します。

  • EXCELでのデータ及び図形の同期はどうすればよいのですか?

    エクセルで、あるbookの特定のシート内のある範囲に入力された セル内のデータ及びそこにある図形を別のbookの特定のシートの 決まった範囲(同期元の範囲と同じ大きさ)に、そのまま貼り付ける (元のデータや図形を変更したら、それが反映される)には どうしたらよいのでしょうか? ちなみにEXCEL2000です。

  • エクセルで二つのファイルの同期方法を教えてくだい。

    具体的には、エクセルで二つのファイルのそれぞれのシートに同期をさせたいと思っています。 パソコンを2台使用し、●パソコンにあるAファイルの、あシートa1~z100にあるデータが、△パソコンにあるBファイルの、いシートのb6~aa105に自動的(手動)に反映される方法がわかりません。 「リンクの貼り付け」を試しましたが、いちいちAファイルを保存しなくてはならず、使い勝手が悪いので、マクロなどで自動的に反映できたら嬉しいです。よろしくお願いします。●パソコンはwindous7、△パソコンはwindousvistaで使用する予定です。

  • エクセル 入力シートのデータを別シートに書き込む

    エクセル 入力シートのデータを別シートに書き込む 1.Sheet1のA2に数字、B2に数字、C2に数字、D2に数字、E2に数字、F2に数字、G2に数字、にを入力する。 2.内容確認後、入力ボタンを押すと、 Sheet2のF2にSheet1のA2の数字、 Sheet2のH2にSheet1のB2の数字、 Sheet2のI2にSheet1のC2に数字、 Sheet2のJ2にSheet1のD2に数字、 Sheet2のK2にSheet1のE2に数字、 Sheet2のL2にSheet1のF2に数字、 Sheet2のM2にSheet1のG2に数字が反映され、sheet2の入力されたデータが一列づつたされていく。 つまり。sheet1は入力シートで、同じセルに値を入力します(次回はデータが上書きされる)が、sheet2では、集計表の1列ずつ下に新しく記録されていく。 このような入力フォーム(マクロ)を作りたいと思っています。 わかりづらい質問で申し訳ありませんが教えていただけませんでしょうか。 よろしくお願いします。

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • excel 行データを列データにリンクする方法

    元のデータが横に進行するようになっています。 別のシートであるデータをリンクさせて縦に書かれるようにしたいのですが、うまく参照してくれません。 例えばsheet1に元データがありリンクさせたいデータが、 A1 B1 C1 D1 ・・・・・と入力されているとして 別のシートsheet2を作って A1に「='sheet1'!A1」 A2に「='sheet1'!B1」 A3に「='sheet1'!C1」 A4に「='sheet1'!D1」 ・ ・ ・ となるようにリンクさせたいのですが、1つ1つ書いていくしか方法が見つかりません。 データが少なければいいのですが、量が多くしかも今後も増えていくのでできれば列ごと全てリンクできるようにできればなあと思っています。 なにか方法がございましたら教えてください。お願いします。

  • エクセルで複数のシートからデータを抽出する方法

     複数のシートから特定の人のデーターのみを1つのシートに集め,A君~Z君まで順番にシートを作成する方法を教えてください。  例えば…, シート1に番号,生徒名,中間テスト国語,数学,… シート2に番号,生徒名,期末テスト国語,数学,… と一覧になったものがあり,これを個人カードに直したいと思います。 シート3に,A君の国語中間・期末,数学中間・期末,… シート4に,B君の国語中間・期末,数学中間・期末… シート5に,C君の国語中間・期末,数学中間・期末… というものを作りたいのです。 しかし,シートをコピーしてもA君のデータのままで,参照先が自動的に更新されてB君のデータにならないので,困っています。 どうすれば,シート4にB君のデータ,シート5にC君のデータ,…を反映させることができるのかぜひ教えてください。よろしくお願いいたします。

  • エクセル:別のシートへ抽出したデータをリンクさせたい。

    次のようなシートがあります。(シートAとします。)     A    B    C  … [1] 001  AAA [2] 002  BBB  あああ [3] 003  CCC [4] 004  DDD   [5] 005  EEE  いいい C列の空欄データは除外して、C列にデータが記入されているものだけ別のシートに(シートB)に行ごとリンクさせたいと考えています。 (この場合だと2列と5列です。) シートAには今後もデータが追加される想定で、新しいデータで当てはまるものは自動的にシートBに反映されるようにさせたいのですが…。 マクロ等は詳しくありません。できるだけ簡単にできる方法があればご教授していただきたいと思います。 よろしくお願いいたします。