- 締切済み
計算式で任意のセルを指定できるようにする
うまく説明できるか自身ないですが…。 Excel2000で、ある計算式(変換式というべきか?)を作りました。 とりあえず、セルA1に数字を入力すると、セルA2に結果が出るように作成しています。(四則演算や、VLOOKUPを使った文字列操作などを複数のセルを介して行い結果を出しています) やりたいことは、最初のターゲットを任意のセルを指定できるようにしたい(計算式を関数のように使いたい)のですが、そんなことは可能でしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tbobi
- ベストアンサー率45% (544/1189)
>イメージとしては、 =Func(E1) としたときに、A1に数字を入れる代わりにE1の値を入れ、そのときのA2の値を返す関数があれば… インプットとアウトプットがわかりません どこにインプットするのでしょう? その結果をどこにアウトプットするのでしょう? >A1に数字を入れる代わりにE1の値を入れ・・・ A1セル = E1ってこと? >そのときのA2の値を返す関数があれば… どこに返すのでしょう? アウトプットがわかりません これだけだと可能か不可能かわかりません どこのセルに入力すると どの関数をつかってどのように計算され、 最終的にどこのセルに結果がでるのか。 もっと整理してから書かれた方がよいのでは?
- imogasi
- ベストアンサー率27% (4737/17069)
(A)セルA1に入力-->A1を使って演算結果をA2に自動セット (B)セルA8(例)に入力-->A8を使って、(A)と同じ式ないし過程を得ての結果をA2にセット (C)セルE12(例)に入力-->E12のデータを(A)と同じ式ないし過程を得ての結果をA2にセット のように考えているのでしょう。 即ちどこに(限定はあるとしても)値を入れるても、その値がA1にセットされるようにすれば、目的は達せられるのでしょう。 しかしこれは、イベントと言うVBAその他のダイナミックな考えによって処理しなければならないでしょう。 関数式は、静的なものです。一箇所は簡単として、2箇所以上のどこかに入力されたセル値をA1に持ってくる式は作れません。関数式の本質を知れば、期待過剰の質問であることが判ります。 ではVBAを使うと Private Sub Worksheet_Change(ByVal Target As Range) Cells(1, "a") = Target End Sub をSheet1のイベントプロセジュアーにセットするなら出来そうです。(興味あれば説明補足します) B1に(簡単な例で)=A1+A8 と入れます。A8には例えば2を入れておきます。 どのセル(A1,A8以外)にでも値を入れると(例えば C6に8を入れると、A1が8となり、B1はB+2=10と瞬時になります。 ただChangeイベントはクセがあるので、ボロが探せそうですが、通常ではOKでしょう。
お礼
>即ちどこに(限定はあるとしても)値を入れるても、その値がA1にセットされるようにすれば、目的は達せられるのでしょう。 まさにその通りです! >関数式の本質を知れば、期待過剰の質問であることが判ります。 やっぱり無茶なんですね。これであきらめがつきます。 VBAは今後の参考にさせていただきます。 ありがとうございました。
- tbobi
- ベストアンサー率45% (544/1189)
セル参照の範囲を、あるセルを参照するすることによって、固定ではなく流動的に扱いたいということですか? それならINDIRECT関数はどうでしょう? A1セルに B1:F11 という文字列が入ってるとして、 =SUM(INDIRECT(A1)) とすると、A1の値の示す範囲(この場合 B1:F11)をSUM関数で計算できます。 A1の値を変更することによって、SUMの計算範囲をへんこうすることができます。 ・・・こういうことではないのでしょうか? 下記の質問(私の回答もあり)もご参考に。
お礼
ちょっと当てはまるかどうか、瞬時には判断できません。じっくり考えてみます。 ありがとうございました。
補足
済みません。ちょっと違うようです。 冷静に考えると、かなり無茶を言っているように思えてきました。 今、「セルA1に数字を入力すると、セルA2に結果が出る」状態な訳ですが、イメージとしては、 =Func(E1) としたときに、A1に数字を入れる代わりにE1の値を入れ、そのときのA2の値を返す関数があれば… って感じなんですが。やっぱり無茶ですよね。半分あきらめています。 一応、もう少し締め切らずにおきますので、何か良いアイデアありましたらよろしくお願いします。
- arukamun
- ベストアンサー率35% (842/2394)
>やりたいことは、最初のターゲットを任意のセルを指定できるようにしたい(計算式を関数のように使いたい)のですが、そんなことは可能でしょうか。 最初のターゲットとは何を指しているのでしょうか? もう少しかみ砕いて補足して頂けますでしょうか?
補足
分かりにくい文で済みません。 最初のターゲットと言うのは、質問文にある「セルA1」のことです。
お礼
そんなに分かりにくいですかね… >どこにインプットするのでしょう? インプットというのは「=Func(E1)」をどこに入れるかってことでしょうか?だとしたら任意ですが… >>A1に数字を入れる代わりにE1の値を入れ・・・ >A1セル = E1ってこと? はい、そうです。 >>そのときのA2の値を返す関数があれば… >どこに返すのでしょう? 仮にFuncとした関数の戻り値のことですが…。 ともかく、#3の方の回答で期待過剰であることが分かりましたので、あきらめて別の方法を考ることにします。 おつきあいいただき、ありがとうございました。