- 締切済み
エクセルで2つのセルを連動させる方法はあるでしょうか?
- エクセルで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に変更する方法がわかりません。循環参照になってしまいます。両方のセルで連動させる方法はありますか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yamada82
- ベストアンサー率28% (15/53)
別のセルでB列 or D列を入力or選択し、さらに別のセルにB10とかD10とかの入力セルを設ける。 B3とD3にはIF関数で下記の動きをする式を入力しておいて自動表示。 B列を入力した時:B3は入力した値を表示、D3は入力した値を検索して連動。 D列を入力した時:B3は入力した値を検索して連動、D3は入力した値を表示。 自分がもしこれを表現するならこんな感じですかね。 B列/D列はプルダウンで選択させるし、入力セルも選択した列に連動させたプルダウンかな。
- kon555
- ベストアンサー率51% (1842/3559)
原理的に不可能ではありませんが、正直オススメはしません。 まずエクセルの関数での処理では不可能です。貴方が書かれているように循環参照になってしまい、連動させられません。 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
- SI299792
- ベストアンサー率47% (770/1613)
なかなか回答がつかないのは、カテゴリーを、その他(ソフトウエア)にしてあるからです。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
お礼
回答ありがとうございます。 やはりVBAですか。私も勉強したいです。 プログラミング言語みたいで難しそうなので 挫折しそうです。 とりあえず計算する箇所を二通り用意して、連動はあきらめました。 このプログラムは試してみます。
- toms9999
- ベストアンサー率39% (41/104)
回答がつかないのは、エクセル神も苦労されているのかも・・・神の降臨に期待 B3にD3を参照する式とD3にB3を参照する式を入力すると循環参照になります。 私なら、循環参照を書式やリンクで回避します。 B3プルダウンのみD3にIF関数、B4にIF関数でD4プルダウンにして書式で色分けし目視で区別してもらう。 もしくは、 B3とD3のセルはリンクでそれぞれ違う場所に飛ばし、別な場所でプルダウンで呼び出す方法を取ります。
お礼
回答ありがとうございます。 プルダウン設定したセルに関数を入れても、 すぐに崩れるという、基本的な事がわかっていませんでした。 これは無理ですね。
お礼
回答ありがとうございます。 マクロまで作っていただいて恐縮です。 やったことないのでできるかわかりませんが、試してみます。