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

この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つのセルを連動させる。

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

noname#244033
noname#244033

みんなの回答

  • yamada82
  • ベストアンサー率28% (15/53)
回答No.4

別のセルでB列 or D列を入力or選択し、さらに別のセルにB10とかD10とかの入力セルを設ける。 B3とD3にはIF関数で下記の動きをする式を入力しておいて自動表示。 B列を入力した時:B3は入力した値を表示、D3は入力した値を検索して連動。 D列を入力した時:B3は入力した値を検索して連動、D3は入力した値を表示。 自分がもしこれを表現するならこんな感じですかね。 B列/D列はプルダウンで選択させるし、入力セルも選択した列に連動させたプルダウンかな。

  • kon555
  • ベストアンサー率52% (1751/3360)
回答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

noname#244033
質問者

お礼

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

  • SI299792
  • ベストアンサー率48% (714/1476)
回答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

noname#244033
質問者

お礼

回答ありがとうございます。 やはりVBAですか。私も勉強したいです。 プログラミング言語みたいで難しそうなので 挫折しそうです。 とりあえず計算する箇所を二通り用意して、連動はあきらめました。 このプログラムは試してみます。

  • toms9999
  • ベストアンサー率39% (41/104)
回答No.1

回答がつかないのは、エクセル神も苦労されているのかも・・・神の降臨に期待 B3にD3を参照する式とD3にB3を参照する式を入力すると循環参照になります。 私なら、循環参照を書式やリンクで回避します。 B3プルダウンのみD3にIF関数、B4にIF関数でD4プルダウンにして書式で色分けし目視で区別してもらう。 もしくは、 B3とD3のセルはリンクでそれぞれ違う場所に飛ばし、別な場所でプルダウンで呼び出す方法を取ります。

noname#244033
質問者

お礼

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

関連するQ&A

  • 【エクセル】シート1の複数セルをシート2に反映

    エクセルについて、教えて頂きたいです。 まず添付のエクセル画像を見て頂けますでしょうか。 <質問内容> まず添付画像は左側の「シート1」と、右側の「シート2」の2つから成っています。 シート1のA2セルは、ご覧の通り入力規則による「リスト」になっておりまして、 「A」「B」「C」の3つからプルダウン選択できるようになっています。 この状態でやりたいことがあるのですが、 例えばここで、 シート1のプルダウンで「B」を選択したとき、 シート2の「B」の行「B3、C3、D3セル」を自動的に参照して、 シート1の「B2、C2、D2セル」に「200 600 1,100」の数字が反映される方法を、 教えて頂けませんでしょうか。 ぜひとも宜しくお願いします(m_ _m)  ※ちなみに、シート名を「A」「B」「C」と記載してINDIRECT関数で反映させる方法は   存じておりますが、シートを1つに収めたいと思っております。

  • セルの内容を合わせるエクセル関数

    お世話になります。 エクセルの関数にて、下記条件を満たす関数が作れないので 分かる方がいましたら教えてください。 A列には文字列が、B列には空白か1の数字がランダムに(1番上の行は必ず空白セル)入力されています。 これに対して、B列に空白から1が続いているセルまでをひとくくりとして、 右側のセルに表示させたいです。 画像では C2セル=A2 C3セル=IF(B3=1,C2&A3,A3)としてC4セル以降にコピペ D2セル=IF(B2="",C2,"")としてD3セル以降にコピペしていますが、 C列でひとくくりになるセルが下へ行ってしまい、 希望する結果に表示されないです。 関数が組める方がいましたらご伝授頂けますでしょうか。

  • エクセルで指定数まで増えると隣のセルを参照したい

    いつもお世話になっております。 かなりエクセル関数には慣れているつもりですが、どうしても解決しなかったので質問させていただきます。 下の表を用意して、  /  A  / B(表1) 1 / たかし / 3 2 / ひろし / 4 3 / はなこ / 5 下の様に、 たかし1 たかし2 たかし3 ひろし1 ひろし2 ・ ・ ・ と一定数まで増えると下のセルを参照して、「ひろし4」まで行ったら次は「はなこ1」から始まる、そんな動きをしたいのですが、どうすれば良いでしょうか。 いくつか別のセルを用意しても問題無いです。 自分なりに、=A1&B1にして「たかし3」と一致したら「ひろし」に変えようとしてみたり、 「たかし」「たかし」と繰り返して、別のセルで数をカウントして「3」に達したら「たかし」を「ひろし」に変えようとしてみたり、 試行錯誤してみましたが、どうしても循環関数になってしまいます。 どうすれば良いのでしょうか。 ちなみに、IF関数の参照を変数で変えるというのはできますでしょうか?  / C / D(表2) 1 / 10 / 15 セル番地A20に、「=IF(A19=10,1,A19+1)」としておいて「10」をC1から引っ張る変数にして、 10に達したらD1の15を参照する。とすれば最初の質問が解決できると踏んでいるのですが、できませんでした。 もっと簡単な関数などがあれば教えてほしいです。よろしくおねがいします。

  • エクセル セル参照

    エクセルでセル参照について分からなく困っています。宜しくお願いします。 エクセル2000を使っています。 例えば、A1に5を入力した場合に ”B1セルから5行下のセルを参照” させたい時には、どのようにすれば良いでしょうか? AVERAGE関数などで AVERAGE(B1:B1から5行下) のようにしたいのですが・・・。 回答、お待ちしてます。

  • [Excel2010]プルダウンに連動させる関数

    プルダウンで項目を選ぶと、別に作ったリストから、プルダウン項目に連動した値が引っ張られてきて、その隣のセルに表示されてくれるようにしたいのですが、どのような関数を設定すればそれが可能でしょうか? たとえば、このような表を作りたい場合: ・B1セルに「自動車税」、C1「重量税」、D1「自賠責保険料」と表記 ・A2セルに、車種をプルダウンで表示させる設定をします。「乗用車」「軽自動車」「ライトバン」から選択できるように。 ・自動車税、重量税、自賠責保険料の、それぞれの車種の場合の金額を、同じシートの別の場所か、別のシートにリストを作っておきます。 ・A1セルで車種を選ぶと、連動して、車種に対応した金額を引っ張ってきてくれる。  「乗用車」を選ぶと、B2「34,500円」・C2「30,000円」・D2「24,950円」、  「軽自動車」だと、B2「7,200円」・C2「7,600円」・D2「21,970円」、  「バン」だと、B2「14,300円」・C2「7,600円」・D2「14,190円」・・・が、自動的に表示される ・・・というふうにしたい場合、B2・C2・D2セルに、どのような関数を設定すればよいでしょうか? ご存知の方、よろしければ教えてください。

  • エクセル2003 セルの結合について

    エクセル2003で、セルを結合して中央揃え(またはセルの結合)をした行を選択し、行の挿入をした場合の疑問なのですが… 例えば、B2:D2、B3:D3、B4:D4をそれぞれセルを結合して中央揃えをしたとします。 次に、3行目を選択して行を挿入した場合、「セルを結合して中央揃え」が反映されません。 (※挿入オプションで、上と同じ書式を適用または、下と同じ書式を適用をしても反映されません。) ちなみに、上記のセルに、セルの結合をし、塗りつぶしをしてから3行目を選択して行を挿入すると、「塗りつぶし」の書式は反映されます。 なぜ、この場合、セルを結合して中央揃え(またはセルの結合)の書式は反映されないのでしょうか? ご存知の方、ご教示いただけないでしょうか? よろしくお願い申し上げます。

  • エクセル関数について教えてください。仮に、A1セルにプルダウンで“A”

    エクセル関数について教えてください。仮に、A1セルにプルダウンで“A”と“B”を選択できるようにしたとします。ちなみにA・Bは数字ではなく単語です。“A”を選択した場合、B1セルにある数値に-1(マイナスイチ)を乗じて表示させる方法はありますか?(“B”を選択した場合はB1セルにある数値には何も乗じません。)IF関数でできるかな?とおもったのですが、いまいちよくわかりません。エクセル関数についてくわしい方、ぜひ教えてくださ~い!!

  • EXCELで、セル一つにつき使える関数の数

    エクセルで一つのセルにIF関数を9個以上使おうとすると、エラーになります。8個なら大丈夫です。ヘルプを参照しても、「一つのセルに7個までしか関数を使うことができない。」と書いてあります。それでも、9個以上IF関数を使いたいのですが、何か良い方法はありますか。

  • エクセルで、セルの塗りつぶし色を判別する関数はあるのでしょうか。アドバイス下さい。

    ●特定の色のセルに入っているデータの合計値を求めたいのです。マクロではなく、セルの中に関数(if...のような関数)を埋め込んで、使いたいのです。 ●質問が長くなるので、具体的なことは省略しますが、例えば、セルD30に、「if(セルB30の塗りつぶし色=赤, B30, C30)」のような関数を入れることは、可能なのか、というのが質問です。 ●この式の意図は、セルA30のデータを見て、セルB30とC30のどちらにあるデータを集計に採用するか(人間が感覚的に)判断して、採用する方を赤で塗りつぶしておくことで、セルD30には赤色セルのデータが入るだろう、ということです。(数値的な判断ができない事情があります) ●これが可能なら、D列の下のほうに「=sum(d1:d50)」と入れれば、B列とC列のうち、赤色セルだけを集計できると思います。

  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。