プロが教える店舗&オフィスのセキュリティ対策術

エクセルで一つのセルに式入力し、隣のセルに結果を返す入力方法で一番簡単な方法があれば教えてください。たとえば一つのセルに3.1×2.5または3.1*2.5入力し答えを返す方法です。できれば(6.80+5.90)×2.60と入力し隣のセルに答えを返してくれるよう加減乗除できるようにしたいのです。うまく言えないのですがよろしくお願いします。

A 回答 (3件)

Excel4マクロを使う方法もありますが、操作性が良くないので、


VBAでユーザー定義関数を作るのが簡単そうですが・・・。

標準モジュールに

Function eval(myvalue As Variant) As Variant
  eval = Application.Evaluate(CStr(myvalue))
End Function

として、

セルA1に

(6.80+5.90)*2.60

と指定してください。

33.02 という結果を返します。

(6.80+5.90)×2.60

この数式でも同じ結果を返します。
試してみて下さい



セルB1には、
=eval(a1)
と指定してください
    • good
    • 0

既に言っておられますが


(1)Excel4.0利用法
(2)Evaluate利用
があります。少し深く知りたければ、上記の語句でWEB照会のこと。
(3)普通のVBA法で(Formula利用法)
問題のシートがSheet1とし、式を入れるのをB列限定とし、C列に答えを出します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub 'B列限定
x = "=" & Target
'MsgBox x
Target.Offset(0, 1).Formula = x
End Sub
ーー
例データ
(1+2)*412
2*3+4*318
2/4+3*39.5
ーーー
こういう質問はキワ物で、できるだけエクセルの数式を正面から使うべきです。初心者はこういう発想に行きがちです(時どきこの型の質問が載る)が。
もともと括弧と加減乗除に限っても、表面から取り組むと、逆ポーランド記法とかコンパイラの勉強させられて、大學情報科初年級の難しい課題です。エクセルの問題ではありません。
    • good
    • 0
この回答へのお礼

お礼遅くなりました。ありがとうございました。

お礼日時:2008/02/14 19:32

Excel4マクロを使う方法もありますが、操作性が良くないので、


VBAでユーザー定義関数を作るのが簡単そうですが・・・。

標準モジュールに

Function eval(myvalue As Variant) As Variant
  eval = Application.Evaluate(CStr(myvalue))
End Function

として、

セルA1に

(6.80+5.90)*2.60

と指定してください。

セルB1には、

=eval(a1)

と指定してください

33.02 という結果を返します。

(6.80+5.90)×2.60

この数式でも同じ結果を返します。
試してみて下さい
    • good
    • 0
この回答へのお礼

お礼遅くなりました。ありがとうございました。

お礼日時:2008/02/14 19:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!