このQ&Aは役に立ちましたか?
エクセルで2つのセルを連動させる方法はあるでしょうか?
2023/10/20 13:29
- エクセルで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件目)
別のセルでB列 or D列を入力or選択し、さらに別のセルにB10とかD10とかの入力セルを設ける。
B3とD3にはIF関数で下記の動きをする式を入力しておいて自動表示。
B列を入力した時:B3は入力した値を表示、D3は入力した値を検索して連動。
D列を入力した時:B3は入力した値を検索して連動、D3は入力した値を表示。
自分がもしこれを表現するならこんな感じですかね。
B列/D列はプルダウンで選択させるし、入力セルも選択した列に連動させたプルダウンかな。
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
原理的に不可能ではありませんが、正直オススメはしません。
まずエクセルの関数での処理では不可能です。貴方が書かれているように循環参照になってしまい、連動させられません。
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
なかなか回答がつかないのは、カテゴリーを、その他(ソフトウエア)にしてあるからです。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ですか。私も勉強したいです。
プログラミング言語みたいで難しそうなので
挫折しそうです。
とりあえず計算する箇所を二通り用意して、連動はあきらめました。
このプログラムは試してみます。
回答がつかないのは、エクセル神も苦労されているのかも・・・神の降臨に期待
B3にD3を参照する式とD3にB3を参照する式を入力すると循環参照になります。
私なら、循環参照を書式やリンクで回避します。
B3プルダウンのみD3にIF関数、B4にIF関数でD4プルダウンにして書式で色分けし目視で区別してもらう。
もしくは、
B3とD3のセルはリンクでそれぞれ違う場所に飛ばし、別な場所でプルダウンで呼び出す方法を取ります。
お礼
2020/06/26 18:46
回答ありがとうございます。
プルダウン設定したセルに関数を入れても、
すぐに崩れるという、基本的な事がわかっていませんでした。
これは無理ですね。
お礼
2020/06/29 09:00
回答ありがとうございます。
マクロまで作っていただいて恐縮です。
やったことないのでできるかわかりませんが、試してみます。