- ベストアンサー
エクセル(excel2003)で入力された式を取得する関数
お世話になっております。マニアックな質問ばかりしてしまい、「この質問は役に立った」に縁がない者です。 Excel2003でユーザーが入力した式を取得する関数はありますでしょうか? 例えば関数(A1)と指定するとA1に入力された式(式に限らずユーザーが入力した直接の値)が参照できたらそれで満足です。 ネット上やこちらで検索してみたのですがどうしても見つかりません。 わかる方、リンクだけでも構いませんので、お知恵をお貸しください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
参考URLのを、前ちょっと使ってました。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
私の経験からの理論を作った仮説なんですが、エクセルのセルの 状態を規定しているもの(次の(1)(2)以下)を、蓄えている場所(層)が違っているのだと思います。(1)値(2)書式(3)数式(4)コメント(5)入力規則、その他など。 この点は間違いないように思うですが。 そのうちエクセル組み込み関数は(ユーザー関数は除く)、(1)に関するものに限り扱う(取だす、セットする)だけに、機能範囲を限定してあるように思います。数式や書式は、プログラムのパラメータ(決める要因)であって、それを実現するプログラムが必要です。関数式で関数式を暴く、関数式で書式を暴くことは差し控え、VBAの世界のプロパティやメソッドに任せてあるように思ってきました。この点エクセルの構造を知らないと確認できないので、私ごとき者には手におえません。この点ご存知の方の訂正、否認、確認などあればお願いします。質問者に置かれても、そういう目で今後エクセルに接して行かれれば何か有益な気がしましたので書いてみました。
- papayuka
- ベストアンサー率45% (1388/3066)
マクロ関数を使って、下記の手順で出来ますが、あまり使い易いとは言えません。 1)挿入-名前-定義で名前の定義ダイアログを出し、参照範囲に =GET.CELL(6,Sheet1!$A$1) と入力して、適当な名前で保存(例 TEST) 2)Sheet1のB1 に =TEST と入力 3)Sheet1のA1 に 関数等を入力 VBAなら標準モジュールに下記をコピペして、何処かのセルに =myGetCell(A1) で同様の事が出来ます。 Function myGetCell(r As Range) myGetCell = r.Formula End Function ツール-オプション-表示タブのウィンドウオプションで「数式」をチェックすれば関数など不要でセルの数式が表示されますけど、、、
補足
返信ありがとうございます。 そのシート内で、取得した数式を元に採点し、計算する式も書いてあったので、ページ内のすべてを表示してしまう、「ツール-オプション-表示」を使うわけにはいきませんでした。 結局、VBAを使用しました。それ以外に手はなかったようなので仕方ないです。
- ja7awu
- ベストアンサー率62% (292/464)
> Excel2003でユーザーが入力した式を取得する関数はありますでしょうか? 組込みの関数は 無いから、作るか、諦めるか・・・? 標準モジュールに下記コードを貼付けると 計算式を取得する関数 GetFormula が使えます。 例えば、C1 に =A1*B1 を入力し、 その式を表示するセルに =GetFormula(C1) を設定 すると、 =A1*B1 が表示されます。 Function GetFormula(Rng As Range) As String GetFormula = Rng.Formula End Function
- mshr1962
- ベストアンサー率39% (7417/18945)
値の参照なら=セル座標でできます。 式の参照というのは、マクロ等で組めば可能ですが...通常の関数ではできません。 同じセルで確認だけでいいなら「ツール」「オプション」「表示」で「数式」にチェックしてください。 結果でなく数式自体(入力された内容)が表示するようになります。
お礼
返信ありがとうございます。 そのシート内で、取得した数式を元に採点し、計算する式も書いてあったので、ページ内のすべてを表示してしまう、「ツール-オプション-表示」を使うわけにはいきませんでした。 通常の関数ではない、ということが分かっただけでも助かりました。
- bin-chan
- ベストアンサー率33% (1403/4213)
> 例えば関数(A1)と指定するとA1に入力された式 これをどこに設定しますか?仮にセルB1としますよ。 セルB1に式[=A1]と入れれば、式に限らずユーザーが入力した直接の値)が参照できます。
補足
返信ありがとうございます。それは知っておりました。 「=A1」だと、値が展開されて、表示されてしまいますよね。IF文などで展開される前の値を使いたかったのです。
お礼
返信ありがとうございました。ダウンロードしたものを利用し、実際に動作しました。マクロのセキュリティが多少気になりますが、仕方のないところでしょう。助かりました。