本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:エクセルで2つのセルを連動させる。)

エクセルで2つのセルを連動させる方法はあるでしょうか?

2023/10/20 13:29

このQ&Aのポイント
  • エクセルでB10~B23のセルをB3でプルダウンで選択できるようにしましょう。また、D10~D23をD3でプルダウンで選択できるようにします。B3でB10を選択した場合、D3はD10に変わるようにするため、IF関数を使用します。しかし、D3でD10を選択した場合、B3をB10に変更する方法については循環参照になってしまいます。両方のセルで連動させる方法があるかどうか知りたいです。
  • エクセルで2つのセルを連動させる方法を教えてください。B10~B23のセルをB3で選択できるようにし、D10~D23をD3で選択できるようにします。B3でB10を選択した場合、D3はD10に変わるようにしたいのですが、D3でD10を選択した場合、B3をB10に変更する方法がわかりません。循環参照になってしまいます。両方のセルで連動させる方法はありますか?
  • エクセルで2つのセルを連動させる方法について教えてください。B10~B23のセルをB3でプルダウン形式で選択できるようにし、D10~D23をD3でプルダウン形式で選択できるようにします。B3でB10を選択した場合、D3はD10に変わるようにするため、IF関数を使います。しかし、D3でD10を選択した場合、B3をB10に変更する方法がわかりません。循環参照になってしまいます。両方のセルで連動させる方法はありますか?
※ 以下は、質問の原文です

エクセルで2つのセルを連動させる。

2020/06/25 19:26

お世話になります。

B10~B23をB3でプルダウンで選択できるようにしまして、
D10~D23をD3でプルダウンで選択できるようにしました。
B3でB10を選択したらD3はD10に変わる。
B3でB11を選択したらD3はD11に変わるように、同じ行で連動はできたのですが、
その逆で
D3でD10を選択したらB3はB10になるようにIF関数を入れると、循環参照になりエラーになります。
2つのセルでどちらからも連動させる方法はあるでしょうか?

回答 (4件中 1~4件目)

2020/06/29 16:36
回答No.4

別のセルでB列 or D列を入力or選択し、さらに別のセルにB10とかD10とかの入力セルを設ける。
B3とD3にはIF関数で下記の動きをする式を入力しておいて自動表示。
B列を入力した時:B3は入力した値を表示、D3は入力した値を検索して連動。
D列を入力した時:B3は入力した値を検索して連動、D3は入力した値を表示。

自分がもしこれを表現するならこんな感じですかね。
B列/D列はプルダウンで選択させるし、入力セルも選択した列に連動させたプルダウンかな。

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2020/06/26 22:55
回答No.3

 原理的に不可能ではありませんが、正直オススメはしません。

 まずエクセルの関数での処理では不可能です。貴方が書かれているように循環参照になってしまい、連動させられません。
 VBAでなら「セルが変更になった時」という形で実行させる事が出来るため、お望みの機能を実現する事自体はできますが、『一方に何が入力された時にもう一方をどう書き換えるか』を逐一指定せねばならず、極めて煩雑です。

 一応サンプルとして組んでみました。下記のコードを標準モジュールに貼り付ければ、B3セルを「B10」に書き換えるとC3セルは「C10」になります。
 またC3セルを「C15」にするとB3セルが「B15」になります。
 これを数字の組み合わせの数だけ行えば、お望みの動作は実現できます。繰り返しますが、オススメしません。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Range("B3:C3")) Is Nothing Then
 Exit Sub
Else
 Application.EnableEvents = False
 If Not Intersect(Target, Range("B3")) Is Nothing Then
  If Range("B3").Value = "B10" Then Range("C3").Value = "C10"
 End If
 If Not Intersect(Target, Range("C3")) Is Nothing Then
 If Range("C3").Value = "C15" Then Range("B3").Value = "B15"
 End If
End If
Application.EnableEvents = True
End Sub

お礼

2020/06/29 09:00

回答ありがとうございます。

マクロまで作っていただいて恐縮です。
やったことないのでできるかわかりませんが、試してみます。

質問者
2020/06/26 22:33
回答No.2

なかなか回答がつかないのは、カテゴリーを、その他(ソフトウエア)にしてあるからです。Excel の得意な人の中には、Excel(エクセル)に関する質問、以外見ない人もいます。全ての人が全ての質問を見れるほど暇人ではありません。

両方に関数を入れる事自体不可能です。値を入れれば関数は消えます。
この問題を解決するにはVBA しかありません。
シートモジュールに入れて下さい。
シート名の所を右クリック、コードの表示を選んで、そこに入れて下さい。

Option Explicit
'
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Search As Range
'
  If Target.Address <> "$B$3" And Target.Address <> "$D$3" Then
    End
  End If
'
  Application.EnableEvents = False
  Set Search = Target.Offset(7).Resize(14). _
    Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
'
  If Not Search Is Nothing Then
    Cells(3, 6 - Target.Column) = Cells(Search.Row, 6 - Target.Column)
  End If
  Application.EnableEvents = True
End Sub

お礼

2020/06/29 08:58

回答ありがとうございます。

やはりVBAですか。私も勉強したいです。
プログラミング言語みたいで難しそうなので
挫折しそうです。

とりあえず計算する箇所を二通り用意して、連動はあきらめました。
このプログラムは試してみます。

質問者
2020/06/25 22:07
回答No.1

回答がつかないのは、エクセル神も苦労されているのかも・・・神の降臨に期待

B3にD3を参照する式とD3にB3を参照する式を入力すると循環参照になります。

私なら、循環参照を書式やリンクで回避します。
B3プルダウンのみD3にIF関数、B4にIF関数でD4プルダウンにして書式で色分けし目視で区別してもらう。
もしくは、
B3とD3のセルはリンクでそれぞれ違う場所に飛ばし、別な場所でプルダウンで呼び出す方法を取ります。

お礼

2020/06/26 18:46

回答ありがとうございます。

プルダウン設定したセルに関数を入れても、
すぐに崩れるという、基本的な事がわかっていませんでした。
これは無理ですね。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。