プロが教える店舗&オフィスのセキュリティ対策術

初めまして。
次の質問にお答えして頂ければ助かります。

「Excelで(sheet)別に複数のセルを相互にリンクさせたいのですが方法が分かりません。
ご存知の方がおられましたら教えてください!
*****************************************
【例】
sheet1のA1とsheet2のA2をリンク
sheet1のB2とsheet2のB3をリンク
       ・
       ・
       ・
どちらから入力しても、双方に同じ数値が入る
*****************************************
よろしくお願い致します。

A 回答 (4件)

sheet1のA1で右クリックしてコピー。


sheet2のA2で右クリックして、形式を選択して貼り付けで、左下に「リンク貼り付け」というボタンがあるので、そこをクリック。
そうするとsheet1のA1の数字を入れ替えるたびに
sheet2のA2の数値も変わります。
    • good
    • 0
この回答へのお礼

大変参考になりました。
ありがとうございました。

お礼日時:2005/05/12 22:53

写すセルが複数あって規則性がない場合は以下のようにしたらよいと思います。



2つ作ってみました。ただし、2つのイベントの共存は利きません。
シートが、すでに負担になっているようでしたら、SheetActivate側をお使いください。

'SheetActivateを使ったもの
'----------------------------------------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Sh1RngArray As Variant
Dim Sh2RngArray As Variant
Dim i As Long
'ユーザー設定
'定数のデータ数は必ず同じ数にすること
Const Sh1RngData As String = "A1,B2" 'シート1側
Const Sh2RngData As String = "A2,B3" 'シート2側
'
Const Sh1Name As String = "Sheet1"
Const Sh2Name As String = "Sheet2"
  '
  Application.ScreenUpdating = False
  Sh1RngArray = Split(Sh1RngData, ",")
  Sh2RngArray = Split(Sh2RngData, ",")
   If Sh.Name = Sh1Name Then
    For i = LBound(Sh1RngArray) To UBound(Sh1RngArray)
     Sh.Range(Sh1RngArray(i)).Value = _
      Worksheets(Sh2Name).Range(Sh2RngArray(i)).Value
    Next i
   Else
    For i = LBound(Sh1RngArray) To UBound(Sh1RngArray)
     Sh.Range(Sh2RngArray(i)).Value = _
      Worksheets(Sh1Name).Range(Sh1RngArray(i)).Value
    Next i
   End If
   Application.ScreenUpdating = True
End Sub

'SheetChangeイベントのもの
'----------------------------------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim SorShName As String 'ソース
Dim OpShName As String '相手先
Dim OptRngData As Variant 'データの移し変え用
Dim rtn As Variant
If Target.Count > 1 Then Exit Sub  'まとめて変更はできません。
With Sh
 'データ内は、必ず同数にすること
Sh1RngData = Array("A1", "B2") 'シート1側
Sh2RngData = Array("A2", "B2") 'シート2側
 If .Name = "Sheet1" Then 'シートの名前
  OpShName = "Sheet2"
  rtn = Application.Match(Target.Address(0, 0), Sh1RngData, 0)
  If IsError(rtn) Then Exit Sub
  OptRngData = Sh2RngData
 Else
  OpShName = "Sheet1"
  rtn = Application.Match(Target.Address(0, 0), Sh2RngData, 0)
  If IsError(rtn) Then Exit Sub
  OptRngData = Sh1RngData
 End If
  Worksheets(OpShName).Range(OptRngData(rtn - 1)).Value _
    = Target.Value
  
 End With
End Sub
'----------------------------------------------------------------
    • good
    • 1
この回答へのお礼

早速実行させていただきたいと思います。
本当にありがとうございます。

お礼日時:2005/05/12 23:01

以前に似た質問がありました。


http://okweb.jp/kotaeru.php3?q=1368986
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2005/05/12 22:56

No.1です。


失礼しました。

相互にリンクという事は、
sheet1のA1に入力した数値がsheet2のA2に反映され
sheet2のA2に入力したらsheet1のA1に反映される、っていう事ですね?
それでしたらわかりません。
良く読まずにうっかり回答してしまいました。ごめんなさい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!