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

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

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

Excel:別々のセル間のデータを常に双方向で同期する方法 一つのエクセルファイル内の別々のシートにあるセルの一方にデータを入力すると他方にも同時に入力されるようにするにはどうすればいいでしょうか。 一方通行ではなく、どちらのセルに入力しても他方に同じ内容が入力されるようにする具体的な方法を知りたいです。 また、データを入力した後いつでもどちらかのセルの内容を訂正しても他方のセルにそれが反映されてほしいです。 使用しているのはWin XP homeでエクセル2003です。 具体例をあげます。 シート1のセルE4に「100」と入力すると、シート2のセルF9にも「100」と入力される。 その逆のシート2のF9に先に「100」と入力してもシート1のセルE4に「100」と入力される。 また、シート2のF9に「100」と入力しシート1のセルE4にも「100」と自動で入力された後、シート1のセルE4に「200」と訂正するとシート2のF9も同時に「200」と訂正されてほしいのです。 もし上記が可能でしたら、別々の3枚のシートにある別々の3個のセルでも同じように、どれかのセルにデータを入力すると他の2つのセルにも同じデータが入力されるようにできるのかを知りたいです。これも一方通行ではなく、3つのセルのどれに入力しても他の2つに同じデータが入力されてほしいです。 もし当方が望むことができないようなら、どういう理由でできないのかも知りたいです。 上記質問に対する的を射た答えでなくとも関係のありそうなことやヒントになりそうなこともお教えください。 参考になりそうなサイトがありましたら、どの部分が参考になるのかを示した上でURLを教えてください。 当方の質問が下手で意味が伝わりにくいようでしたら、ご指摘いただければできるだけ詳細に追記する所存です。 ご回答いただいた内容に対してさらに質問するかもしれません。 どうぞよろしくお願いいたします。 最後まで読んでいただきありがとうございました。

  • v4u
  • お礼率100% (6/6)

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

  • ベストアンサー
  • 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

  • Excel:行列入替の2つのDBを常に双方向で同期

    Sheet1にフィールドが60、レコードが400程ある特許情報をまとめたDBを作成しており、 Sheet2にSheet1のDBを行列入れ替えてコピペしたものがあります。 入力の際、Sheet1を使いたい場合とSheet2を使いたい場合が混在し、且つ、DBの全体に入力箇所が点在します。 入力箇所は毎回変わるので、都度検索で探しながら入力を行っています。 この二つのSheetを双方向で同期させたいのですが、方法はございますでしょうか。 同期させたい情報は、値だけでなく、セルの色やフォント、フォントの色、サイズ等全てです。 例えば、 Sheet1のE3セルに「5050」と入力すれば Sheet2のC5セルにも自動で「5050」と入力される。 Sheet2のC5セルを赤色にすれば、 Sheet1のE3セルも自動で赤色になる。 Sheet1のD列とE列を入れ替えたら Sheet2の4行目と5行目が自動で入れ替わる。 といった感じです。 リンクや関数では出来ないと思うので、VBAになるかと思いますが、 知識がありません。 Windows7でエクセル2010を使用しております。 何卒宜しくお願い致します。

  • Excel:決まったセルから常にあるセルの最終行の引き算

    添付画像のA7~E7列に数値を入力していき、F列にB~Eの合計がSUM関数により表示されます。 必要に応じ、8行目以降にデータは累積していきます。 D4セルにC4からF列の常に最終行の引き算の数式を入れたいと思っています。 イメージは D4=C4-(F列の最終行)というものですが、具体的にどういう数式をD4セルに当てはめればよいでしょうか? 御教示宜しくお願い致します。

  • VBA 任意のセルにデータを転記する方法

    Excel のユーザーフォームを使って、データの入力をしたいと考えています。 入力ボタンを押すと、テキストボックスに入力した内容が別シートのセルに転記されるものです。 指定したセルに追加する、1番下の行に追加する、はできるのですが、コンボボックスに入力した内容によって転記するセルを変える方法はありますでしょうか? 具体的に言うと、 ユーザーフォーム内のコンボボックスで 月(4月~3月)を選べるようにしているのですが 4月を選べば4月を入力するセルに。7月を選べば7月を入力するセルに転記したいです。 何かいい方法はありますでしょうか。

  • Excel2002:関数を含むセルのリンクについて

    こんばんは!早速ですが、お尋ねします。 Sheet1とSheet2があります。 Sheet2のセルE5に入力されている数を、Sheet1のセルE9にも表示させようとしています。 Sheet2のセルE5はSUM関数を利用し、E1からE4までの合計が表示されるようになっています。 Sheet1のセルE9は、セルE10と結合されています。 同じくSheet2のセルE5は、セルE6と結合されています。 通常なら、Sheet1のセルE5をクリックし「=」を入力後、Sheet2のセルE9を クリックしてEnterを押すとリンクが完了するのですが、今回それをやると、 Sheet1のセルE9には、「#VALUE!」の表示が出ます(T-T) Sheet2のセルE9に、SUM関数を利用しているせいでしょうか? それとも、他に原因があるのでしょうか? 膨大な量のデータを集計中で、これが出来ないと非常に困ります。 自分であれこれ試したり調べたりしたのですが、どうしても「#VALUE!」になるので、 質問しました。お分かりになる方、回答をお願い致します。

  • エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・

    データの内容をひとつのセルに改行して入れていくという 作業を自動化できないでしょうか? 「データ」シート メモ 地点 from ~ to 線種 A1,B1,C1,D1,E1,F1に上の項目があり、 メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には =====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります) それぞれの項目の下にデータを入力してあります。 これを「まとめ」シートに ・A~E列までをひとつのセルに改行してまとめる ・F列はその右隣にそのまま表記する と自動でできないかと考えています。例えば、「データ」2行目に A2 観劇 B2 日本大劇場 C2 10:00 D2 ~ E2 12:00 F2 ====== とある場合、「まとめ」シート A2セルは 観劇 日本大劇場 10:00~12:00 と改行して入り、B2に「データ」F2の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。 よろしくお願いします。

  • 指定した数だけデータをコピペする方法

    VBAの参考例を教えてください。 <シート1> A列に1から順に数字が入力されており、B列からE列まで数値のデータが入力されています。F列にはB列からE列にデータが入力されているセルの数をカウントした関数が入力されています。 <シート2> シート1のB~Eに入力されたデータが縦に入れ替えの上A列にコピぺされています。 ここで、シート1のA列の数値をコピーし、シート1F列に示されたデータ数分だけ、シート2のF列に縦に順々にペーストしていく方法をご教示ください。シート1のA列に入力された数値が最後の行にくるまでこれを繰り返します。 シート1 A B C D E F 1  a b c d 4 2  e d f   3 3  d e     2 ・ ・ ・ シート2 A B C D E F a         1 b         1 c         1 d         1 e         2 d         2 f          2 d         3 e         3 当方、VBAは全くの初心者です。急遽仕事で必要になってしまい、質問しました。 どうぞよろしくお願いします。

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • Excel2010 セルの保護に関して・・・

    お世話になります。 Excel2010にて入力表を作成しシート内の入力に関係ない場所=セルを指定して セル枠保護をしたのですが複数のシートに同じ内容で一部のみ変更して 複製を作成していますがシートを変更すると先程作成したセルの保護が他の シートでは保護できませんが同じようなシートを沢山作る場合、セル保護はどの様に すればいいのでしょうか??? 説明が上手くないのですが伝わりますでしょうか・・・ 何か良い方法などありましたらお願い致します。

  • セルに入力したデータと同じデータを抜き出す

    エクセル2002を使っています。 画像の様なシートがあり、B2セルに入力した文字を、FXセルの上から10個抜き出します。 その10個のデータの関連セルのデータごと、、緑で色づけされた部分に表示させるには、どうしたらよいでしょうか? 詳しい方、よろしくお願いいたします。 ■ ■ 出来れば関数のみで実現したいです。

  • Excelで離れたセルに連続したデータを貼り付けたい

    セルB5「=sheet1!C7」のデータをコピーし、 セルB7「=sheet1!C8」 セルB9「=sheet1!C9」・・・ と、連続したデータを貼り付けていきたいのですが、 セルB7「=sheet1!C9」 セルB9「=sheet1!C10」・・・ と行数も2つ飛びで貼り付けになってしまいます。 毎回ひとつひとつ入力するのが大変な手間なのですが、 なんとかならないでしょうか? もうひとつ質問です。 セルB5「=sheet1!C7」のデータを セルE5「=sheet1!C36」 セルH5「=sheet1!C65」 と行番号を29ずつずらして貼り付けたいのですがこれも簡単に貼り付ける方法はないでしょうか? やっぱり毎回ひとつひとつ入力するのが大変です・・・。

専門家に質問してみよう