• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel:別々のセル間のデータを常に双方向で同期する方法 )

Excel:別々のセル間のデータを常に双方向で同期する方法

このQ&Aのポイント
  • Excelのエクセルファイル内で、別々のシートにあるセルのデータを常に双方向で同期する方法について知りたいです。具体的な方法や設定について教えてください。
  • また、特定のセルにデータを入力すると、他のセルにも同じデータが自動的に入力されるようにする方法も知りたいです。一方通行ではなく、どちらのセルでも同じデータが入力されるようにしたいです。
  • 使用しているのはWin XP homeでエクセル2003です。なお、別々の3枚のシートにある3つのセルについても同じようにデータを入力したいです。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

関数では無理でしょう。 関数では、入力されたセル以外を操作することはできません。E4に関数を入れてSheet2のF9を参照していても、E4に数値を入力したとたん関数はなくなってしまいます。  VBAのイベントで、つぎのようにすれば、実現できます。 Sheet1に、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$4" Then Sheets("Sheet2").Range("$F$9").Value = Sheets("Sheet1").Range("$E$4").Value End If End Sub Sheet2に、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$F$9" Then Sheets("Sheet1").Range("$E$4").Value = Sheets("Sheet2").Range("$F$9").Value End If End Sub

v4u
質問者

お礼

ご回答ありがとうございます。 完璧です。 お陰さまで当方が望んでいたことを実現できました。 いただきましたご回答は見事としかいいようがありません。 こんな短時間で明快なご回答をいただけるとは思ってもいませんでした。 okormazd様にとっては些細なことかもしれませんが、 当方は本件につきまして相当長い期間疑問に思っておりました。 googleでいろいろ検索しては見よう見まねでVBAを改造したりしましたが VBAの基礎的な知識がないため結局解決できずじまいでした。 お陰さまで、作業能率が上がるどころか、 今まで思いつかなかったエクセルの利用方法も浮かんできました。 具体的なスクリプト及び新たな可能性をいただき ありがとうございました。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

>別々の3枚のシートにある別々の3個のセルでも同じよう・・・ の方を提示しておきます セルを指定されていないので Sheet1はA1 Sheet2はA2 Sheet3はA3としています 'Sheet1のモジュールへ Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Variant Dim ws As Variant Dim i As Integer Application.EnableEvents = False If Target.Address(0, 0) <> "A1" Then Exit Sub ws = Array("Sheet2", "Sheet3") rng = Array("A2", "A3") For i = 0 To 1 Worksheets(ws(i)).Range(rng(i)).Value = Target.Value Next i Application.EnableEvents = True End Sub 'Sheet2のモジュールへ Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Variant Dim ws As Variant Dim i As Integer Application.EnableEvents = False If Target.Address(0, 0) <> "A2" Then Exit Sub ws = Array("Sheet1", "Sheet3") rng = Array("A1", "A3") For i = 0 To 1 Worksheets(ws(i)).Range(rng(i)).Value = Target.Value Next i Application.EnableEvents = True End Sub 'Sheet3のモジュールへ Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Variant Dim ws As Variant Dim i As Integer Application.EnableEvents = False If Target.Address(0, 0) <> "A3" Then Exit Sub ws = Array("Sheet1", "Sheet2") rng = Array("A1", "A2") For i = 0 To 1 Worksheets(ws(i)).Range(rng(i)).Value = Target.Value Next i Application.EnableEvents = True End Sub 参考まで

v4u
質問者

お礼

ご回答ありがとうございます。 至れり尽くせりです。 参考どころかそのままずばりのご回答でたいへんありがたいです。 現在のところ、どういうメカニズムで動作しているのか見当もつきませんが 先のご回答のVBAと比較したり検索したりして認識を深める所存です。 拡張版のスクリプト及びVBAを比較する機会をいただき ありがとうございました。

  • Us-Timoo
  • ベストアンサー率25% (914/3620)
回答No.1

そんな横着たれたような、めちゃくちゃな入力ルールではデータのリンクのしようがありません。 データのリンクは、コピーしたあと、リンク先をクリック 『編集』『形式を選択して貼り付け』『リンク貼り付け』をすればデータのリンクはできますが、そこには式が設定されていることになるのでその上から入力してしまえば式は消えてしまいます。 入力するシートはひとつに統一するべきです

v4u
質問者

お礼

ご回答ありがとうございます。 > そんな横着たれたような、~ おっしゃる通りです。 少しでも能率が上がればと思いました。 それでも当方の質問にお付き合いいただきありがとうございます。 > データのリンクは、~ この方法当方は存じておりませんでした。 この方法だと、キーボードによる入力を省けて便利ですね。 しかも自動で絶対参照になりますので、 F4キーを押す行程も省けます。 教えていただいた方法は今後多用しそうです。 有意義な方法をありがとうございました。

関連するQ&A

専門家に質問してみよう