みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル 違うシートに計算式がある場合

エクセル2000を使っています。

下記の計算をしたいのですが、方法を教えてください。

1.Sheet1 A1とB1に計算したい元の数値が記入されています。
例えば、A1=1 B1=2

2. Sheet2 のA1とB1に数値が入る事としてC1に計算結果が出るものとします。

3. Sheet1のC1にSheet2のC1の内容を表示したい。

4. Sheet1 A2、A3・・・・・、B2、B3・・・・・に入力した後で、C2、C3・・・・・・に
Sheet2のC1で計算させた結果を自動的に入力したい。

別の言い方をすれば、Sheet2 のA1・B1が関数の入力するところにあたり
Sheet2のC1が関数の出力(というか、計算結果)にあたります。
Sheet1からSheet2を関数のように使いたいのです。

Sheet1
____ A_____B_______C
1___1_____2______3
2___2_____3______5
3___5_____8______13
4___9_____1______10
5___4_____5______ 9

Sheet2
____A_____B_____C
1________________ =A1+B1
2_____________________


こんなイメージです。
Sheet2で計算の入力に対応するセルがA1・B1 計算結果が書いてあるのがC1
実際は、大きな表を参照しながら計算するので、色々計算した結果(途中計算は他のセルも使います)がC1に表されます。

以上、よろしくお願いします。

投稿日時 - 2011-06-06 21:03:32

QNo.6790986

困ってます

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

>Sheet1からSheet2を関数のように使いたいのです。

シート2のC1セルに記入する計算式を色々差し替えて計算結果を見たいというお話で,ぶっちゃけマクロか,マクロを使ったユーザー定義関数を作成してしまった方が簡単ですが,そこを敢えてエクセルの一般機能だけでやってみるとデータメニューの「テーブル」というのを利用することが出来ます。
かなりメンドクサイですけどね。
A列とB列の2つのパラメータと,シート2に代表で置いた数式で計算したいので,複入力テーブルという方法を使います。


手順:
シート2のC1に
=A1+B1
と代表数式を記入しておく。これを=A1*B1に変えたり,=A1*2+B1/2に変更してみたりする

シート2のC2に
=INDEX(Sheet1!$A:$A,ROW(A1))
と記入し,C21までコピーしておく
シート2のD1に
=INDEX(Sheet1!$B:$B,COLUMN(A1))
と記入し,W1までコピーしておく
C1:W21を選択し,データメニューのテーブルを開始
 行の代表セルに $A$1
 列の代表セルに $B$1
をそれぞれ指定してOKする。

シート1のC1セルに
=OFFSET(Sheet2!$C$1,ROW(A1),COLUMN(A1))
と記入し,C20までコピーしておく

シート1のA1,A2…,B1,B2… にそれぞれ値を記入すると,計算結果がC列に現れる
シート2のC1の数式をA1とB1を使った別の式に変更すると,新しい計算結果が自動的にシート1に反映される。



#うまくできなかったり,今のお話以上パラメータを増やしたい場合は,すなおにふつーのやり方を推奨します。
シート1のC1にA1,B1を使う数式を記入し,C2以下につらつらっとコピーしてやるだけのごく自然なエクセルの使い方でできることです。



#参考
新しいブックを用意
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub worksheet_change(byval Target as excel.range)
if target.cells(1) = "" then exit sub
on error resume next
if target.address = "$C$1" then
range("C1:C" & range("C65536").end(xlup).row).filldown
end if
if target.column < 3 then
range("C1").copy destination:=cells(target.row, "C")
end if
end sub

ファイルメニューから終了してエクセルに戻る
C1にA1とB1を使う数式を記入する
A1以下,B1以下に値を記入するとC列に数式が記入される
C1の数式を変更すると,自動でC列に反映する。

投稿日時 - 2011-06-06 21:53:20

お礼

稚拙な質問文を私の意図通りに理解していただきありがとうございます。

マクロやユーザー定義関数は、未経験なので何とかエクセルの通常機能で出来ないか、と思い質問させていただきました。
アドバイスいただいた、テーブル機能を調べて早速試してみます。
しかし、「簡単」という事なので、マクロやユーザー定義関数も試してみようと思います。

大変参考になりました。
ありがとうございました。

投稿日時 - 2011-06-06 22:32:46

ANo.3

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

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

シート2のセルA1に式[=Sheet1!A1]、シート2のセルB1に式[=Sheet1!B1]、
シート2のセルC1に式[=A1+B1]で良いのでは?

投稿日時 - 2011-06-06 21:42:01

ANo.1

Sheet2の所定の位置に、例えば
=Sheet1!A1+Sheet1!B1
という計算式を書けばよいです。

Sheet1!
の部分が、「Sheet1シートを参照するよ」くらいの意味です。

投稿日時 - 2011-06-06 21:17:58

あなたにオススメの質問