• ベストアンサー

Excel2003 2つのシートから相互にセルの値を変更したいのですが

Excel2003を使用して2つのシートにあるセルの値を相互に変更できるようにしたいのですが。 例えば Sheet2 のセル A1 に =Sheet1!A1 と入力しておけば Sheet1 のセル A1 に 80 と入力すると Sheet2 のセル A1 は 80 と表示されますが,この状態で Sheet2 のセル A1 に別の値を入力すると,もう Sheet1 のセル A1の値を参照しなくなってしまいます。 そこで教えていただきたいことがあります。 Sheet1 のセル A1 に値(例えば80)を入力すると Sheet2 のセル A1 の値も同じ値(例えば80)になり,逆に Sheet2 のセル A1 に値(例えば80)を入力すると Sheet1 のセル A1 の値も同じ値(例えば80)になるように相互に値が変化できるようにしたいのです。 具体的に私がしたいことは (1) Sheet1 ~Sheet6 の A列 には同じ40人の名簿を使う。 (2) Sheet1 の B列 には国語の得点,同様に Sheet5 まで社会,数学,理科,英語の得点を入力。(本来は複数のテストの合計得点として, K列 にしたいのですが,今回は B列 ということでお願いします。) (3) Sheet1 ~ Sheet5 のセル D1 にそれぞれの教科の合格に必要な得点を入力。 (4) Sheet1 ~ Sheet5 の C列 には =if(B2>=D1,"○","×") のような数式を入力し,合格なら○,不合格なら×を表示するようにする。 (5) Sheet6 の B列 ~ F列 にはそのぞれの教科の○,×が参照されるようにし,B列 ~ F列の42行目にそれぞれの教科の合格に必要な点数が参照されるようにする。 (1)~(5)をすれば, Sheet1 ~ Sheet5 を見れば教科ごとの合格者が分かり, Sheet6 を見たときに誰がどの教科で合格か不合格か分かります。 Sheet6 の全教科の合格者数をみて,それぞれの教科の合格に必要な点数を上げたり,下げたりしたいのです。 Sheet1 ~ Sheet5 に戻れば,合格に必要な点数の上げ下げが可能なのですが, Sheet6の B列 ~ F列 の42行目でも合格に必要な点数の上げ下げをできるようにしたいのです。もちろん Sheet6 で合格に必要な点数を上げ下げしたときには, Sheet1 ~ Sheet5 の合格に必要な点数をも反映されるようにしたいのです。 長文で分かりにくいかもしれませんが,いい方法があれば教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • popuplt
  • ベストアンサー率38% (31/81)
回答No.2

基本的に数値入力と計算式の2つを入れることはできませんね。 チョットご希望と違う案ですが、(国語で説明します) Sheet1 セル D1 に[国語]と名前定義をします。 フォームのスピンボタンをSheet1に作成します。 右クリックして[コントロールの書式]を選択してコントロールタブで、現在値=0、最小値=0、最大値=100(適当ですが・・) リンクするセル=国語 と入力します。 作成したスピンボタンをコピーしてSheet6のB42の下に貼り付けます。 (5教科のボタンができるので、下に貼り付けないと判らなくなります。) どちらのスピンボタンでも両方の数字が変わると思います。 Sheet6!B42=Sheet1!D1 うまくいかなかったらすみません。

osaamum
質問者

お礼

今,ご回答にあった通りに作成してみました。 希望にほぼそった形にできました。 ありがとうございました。 欲をいえば,どのスピンボタンも同じなので,区別できるといいですね。

その他の回答 (2)

回答No.3

あの~ 私の問題解釈が違っているのかもしれませんが Sheet1 ~Sheet5 の D1セルに、入力する 【それぞれの教科の合格に必要な得点】 これを、Sheet6 の B42:F42セルに参照させて B42:F42を 上げ下げしたいってことでしょうか? 『循環参照』を 避けるために  Sheet6!D42セルに 【=Sheet1!D1】はそのままで 例えば D1セルに 数式で【=80+D2+Sheet6!B43】とかにして Sheet1 ~Sheet5 に 関しては 一つ下のセル(D2)で加減(+-) Sheet6 に関しても 一つ下のセル(B43:F43)で加減(+-) というような 別のセルで 上げ下げする方法は いかがでしょうか? 質問の意味が 違っていたら ごめんなさい 読み飛ばして下さい

osaamum
質問者

お礼

なるほど,そういう方法もありますね。 できれば,Sheet1~Sheet5をみても,Sheet6をみても,合格に必要な得点がすぐに分かるほうがありがたいのです。

回答No.1

  そう言うのを循環参照と言って値は不定になります 「君は私だ」 「私は君だ」 さて、私は誰でしょう? これと同じ事になります 私=「おっさん」 君=「お嬢様」と仮定して 「私は君だ」・・・この文からは 私は「お嬢さん」になる、しかし......... 「君は私だ」・・・この文から「君はおっさん」になり 「私は君だ」・・・君はおっさんだから「私はおっさん」になってしまう  

osaamum
質問者

お礼

そうなんです。。。 その"循環参照"ということになってしまうので困っています。 Sheet1 ~ Sheet5 に戻って合格点を上げ下げすればいいんですけどね。 マクロを使用してのいい方法はないでしょうかね。

関連するQ&A

  • 【Excel】 別のSheetの値を参照したい。

    Sheet1の A1に年 A2~A13に月 A14に翌年 A15~月・・・と続きます。 また、 B列に各月の値 があります。 Sheet2の A1に、Sheet1 B列の2008年の1月の値 A21に、Sheet1 B列の2008年の2月の値 A41に、Sheet1 B列の2008年の3月の値 ・・・を表示させていたのですが、 Sheet1の月と行間が違うため、 1~20行のコピーでは、2月以降の値が参照できません。 このような場合A列の式はどのようになるでしょうか。 単にセル位置を指定し参照するのではなく、 「2008年の1月の値」を表示したいと言うことです。 SUMIFなのかなぁ‥とも思うのですが、具体的な方法が分かりません。 Sheet1のA列の月は、 「1」「2」「3」と入力されているだけです。 シリアル値にしないといけないでしょうか。 また、その方法はどうしたら良いのでしょうか。 Excel2003です。 よろしくお願いいたします。

  • シート名をセルの値で参照

    当該シートとは別に1という名前のシートを作ります。 当該シートA2に='1'!B1と書いて、シート1のセルを参照します。 当該シートA1に1と入力して、その値をシート1のシート名として参照したいので、 =' & A1 & '!B1 とか =' & INDIRECT(A1,true) & ' ! b1 と書いてみるのですがうまくいきません。 どうすればうまくいくでしょうか?

  • 「=Sheet1!B2」の「2」列目という値を..

    「=Sheet1!B2」の「2」列目という値を、「セルから取得した値」に変更できますか? 具体的な状況としては 列ごとに情報が入ったシートがあり、 必要な列のデータを特定の印刷様式(別シート)に参照表示させて印刷したいため、 印刷したい列番号をどこかのセルに入力して指定したい (とある印刷様式に直接入力して管理していましたが  入力漏れがあったり、シートが膨大な量になったため情報を1シートにまとめ、  印刷時に、必要な列のデータを参照させたいのです) どうか宜しくお願い致します。

  • 別シートへのセル参照について

    別シートへのセル参照についての質問です。 例えばSheet1のA1,B3,C6,G9に値が入っているとします。 その値を順にSheet2のB2,C4,D9,E17に参照したいのですが、 それぞれにセル参照しないとダメなんでしょうか? Sheet1,Sheet2に違う種類の表があって、それぞれに同じ値を入力するんですが、Sheet1に入力すれば自動的に入るようにしたいです。 実際はSheetや、値を入力するセルがかなり多いので、ひとつひとつセル参照するのが大変なので・・・よろしくお願いします。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • EXCEL関数/別シートのセル番地をセルの値で指定

    お世話になります。 どうしてもわかりません… エクセル名人の皆様、どうかお知恵をお貸しくださいませ。 Sheet1に下記のようなデータが約5000件あります。   A  B  C   D … BP  … 1 No. ID. 品目 月日…状況 … 2 1 a33  A  3/4   0    3 2 a87  B  5/11  1   このうち、BP列が1のもの約900件のみがSheet2に抽出されています。 (このためのマクロについて前回質問させていただきました) Sheet2:   A  B  C   D   E  F  G  … 1 No. ID 品目 月日             2 2  a87  B  5/11              3 7  b3  K  2/5 4 18 c44  F  12/1 5 11 r93 J 7/28 ちなみにA列のNo.は1,2,3,…と続く通し番号で、だぶりはありません。 Sheet1のデータの項目数は大変多いのですが、Sheet2にはその項目すべては必要でないため、 Sheet2には上記のとおりAからD列までの必須情報のみ抽出し、 E列以降の情報については、必要な列の情報のみ、 A列の通しNo.で紐づけしてVLOOKUP関数で取得したいと考えています。 しかし、Sheet1の表には空欄があり、これを空欄のまま表示させるために IF関数を使いたいのですが、 Sheet1の参照元のセルの番地をどう書けばいいでしょうか? とてもわかりにくくて申し訳ありません… たとえば、Sheet2のA列が18であれば(上記Sheet2のA4)、 元データはSheet1の19行目にあることになります。  A列の数値+1、が行番号ということです。 そのK列を参照する場合、 =IF(Sheet1!K19="","",VLOOKUP(A4,Sheet1!A:K,COLUMN(K4),FALSE) となるかと思うのですが、 このSheet1!K19 というセル番地を、自分で計算して手入力するというのはとても大変なので、 関数などで表現する方法はないでしょうか。 たとえば、Sheet1!K(A4+1) とか書いてみましたが、もちろんこれでよいわけもなく… 不勉強で恐縮ですが、どうしてもわかりません。 どうかご教授ください。 よろしくおねがいいたします。

  • エクセルで、2つのセル値(2つの条件)から、別シートの表から該当する値を参照する方法

    シート(1)のA列とB列のセルに入力されている値を元に、 シート(2)の表を参照し、該当する値をシート(1)のC列に 表示させる方法があれば 教えて頂けると助かります。 なおシート(1)のA列は、参照するシート(2)の表の列タイトルに対応し、 シート(1)のB列は、シート(2)の行タイトルに対応するマトリックス表に なっております。 また、この列行タイトルの表記は「1から」または「1から9まで」 という範囲での表示になっています。 (例:シート(1)元データ) No| A列 | B列 | C列 | --------------------------------- 1 | 07  |  22  |  20 | ←C列は、シート(2)表を参照  2 | 18  |  15  |  30 |        3 | 01  |  09  |  05 |       4 | 21  |  03  |  30 |  5 | 30  |  28  |  35 |  (例:シート(2)参照する表) A列\B列 | 1~9| 10~19 | 20~29 | -----------------------------------   01~  | 05  |  10  |  20  |         05~  | 15  |  15  |  20  |           10~  | 20  |  25  |  30  |        15~  | 25  |  30  |  30  |    20~  | 30  |  35  |  35  |  現在、手作業でC列への入力を行っております。 何とか、作業効率を上げたいと思っておりますので、 ご指導下さいます様 宜しくお願い致します。

  • 別シートの参照値を反映したい

    別シートの参照値を反映したい book内にSheet1~4まであります。 Sheet1のA1には、Sheet2~4という文字列が入ります。 Sheet1のB1には、Sheet2~4のセルの番地のみ入力されています。 Sheet1のA5に「="="&A1&"!B1"」と入力した際に文字列ではなく参照先の数字が反映される ようにしたいのですが、可能でしょうか? ちなみにコピーして値のみ貼り付け、F2を押せば数字が反映されるのですが、関数を残して おきたいと考えています。 ご教示お願いいたします。

  • Excelのワークシート内の二つのシートのセルの値(文字列)を共有する

    Excelのワークシート内の二つのシートのセルの値(文字列)を共有する方法を教えて下さい。 具体的には、ワークシート内に|31日|30日|・・・|2日|1日|7月|とタブがあります。 7月のシートのA1が1(日付)のとき、B1にあらかじめ入力した1日のシートのB1(文字列)を 表示させる方法があるのでしょうか。 7月のB1セルに直接=1日!B1と入力すると出来たのですがこれだとA1が28(日付)の時も1日のB1を表示させてしまいうまくいきません。 7月のシートA1の値28(日付)の時に28日のシートのB1、A1の値11(日付)の時は11日のシートのB1を表示という具合にしたいのですが初心者なのでうまくできません。 どなたか詳しく教えていただけませんか。 宜しくお願い致します。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう