• ベストアンサー

エクセルの計算式

数量計算書を作っています。 例えば A1に数式「25+5×6」のような数式を入れ、      B1に答えの「55」を表示させる方法を、おしえてください。 以前はA1に「25+5×6」と数式を入れ、B1に「=25+5*6」と入れて作っていましたが、 計算式の数値の訂正や、変更が多く、1回々B1の方も変えなくてはならず、かなり苦労をしています。 良い方法をお教えください。

  • 業界
  • 回答数5
  • ありがとう数5

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.5

と言う訳で、逆にした物。 Public Function GyakuHenkan(Tgt As Range) As Variant Fmr = Tgt.Text Ans = "" For i = 1 To Len(Fmr) moji = Mid$(Fmr, i, 1) Select Case moji Case "0": Ans = Ans & "0" Case "1": Ans = Ans & "1" Case "2": Ans = Ans & "2" Case "3": Ans = Ans & "3" Case "4": Ans = Ans & "4" Case "5": Ans = Ans & "5" Case "6": Ans = Ans & "6" Case "7": Ans = Ans & "7" Case "8": Ans = Ans & "8" Case "9": Ans = Ans & "9" Case "+": Ans = Ans & "+" Case "-": Ans = Ans & "-" Case "×": Ans = Ans & "*" Case "*": Ans = Ans & "*" Case "÷": Ans = Ans & "/" Case "/": Ans = Ans & "/" Case "{": Ans = Ans & "(" Case "{": Ans = Ans & "(" Case "[": Ans = Ans & "(" Case "[": Ans = Ans & "(" Case "}": Ans = Ans & ")" Case "}": Ans = Ans & ")" Case "]": Ans = Ans & ")" Case "]": Ans = Ans & ")" Case Else: Ans = Ans & moji End Select Next GyakuHenkan = Evaluate(Ans) End Function 同じように「標準モジュール」に「コピペで貼り付け」して下さい。「見ながら手で入力」してはいけません。 今度は、A1に [46-{14+120÷40-(8×5-30)}÷7]÷9 と「文字列」で入力して、B1に =GyakuHenkan(A1) と入力すると、B1に「5」と言う答えが表示されます。 A列とB列が逆になっているので注意。 また、今回は「記号や数字を全角文字で入力した場合」にも対応しています。

kaki918
質問者

お礼

Chie65535さん  大変有難うございました。(_ _) 完璧に表が出来上がりました。 迅速丁寧な回答、心から感謝いたします。 これで、煩わしさから解放されます。^-^v

その他の回答 (4)

  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.4

VBAでエラーが出るのは「入れるべき半角スペースを、ちゃんと入れてない」からだと思います。 回答を見ながら手で入力するのではなくて、回答の画面を開いて、範囲指定して「コピー」して、VBAに「ペースト」して下さい。 >ちなみに二重カッコ ”{(” の表示もご教授頂いたVAEの中の >Case”(”:Ans=Ans&"(" >で良いのでしょうか? エクセルの計算式は、「{ }」(中括弧)、「[ ]」(大括弧)は使えません。 数学では {(1+2)×3+4}×5 のように、小括弧の外側を中括弧にしますが、エクセルでは =((1+2)*3+4)*5 のように、すべて小括弧(普通の括弧)で書きます。 これを、数学の式のように「外側の括弧は中括弧にする、更にその外側は大括弧にする」となると、簡単には行きません。 式を先頭から調べていって、括弧の階層を数えて、一番深い階層を小括弧、その次を中括弧、その次を大括弧にする、と言う「本格的な式の解析」が必要になります。 提示した回答のプログラムは、単に「エクセルの四則演算の半角記号」を「算数の四則演算の全角文字」に置き換えているだけで、何もしていません。 そういう訳で、「{ }」や「[ ]」などの中括弧、大括弧も何とかしたいなら「今回の逆」をやらないといけません。 つまり「A1に算数の式を書いたら、B1にエクセルの計算式が入り、エクセルがB1に答えを表示してくれる」と言うように作らないといけません。 この場合、提示したプログラムとは「完全に逆」になりますから、全面的に変更しないといけません。

  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.3

と、いう訳で。 エクセルからVisual Basic Editorを開いて、Visual Basic Editorで、標準モジュールを挿入し、以下の関数をコードとして打ち込んで下さい。 Public Function Henkan(Tgt As Range) As String Fmr = Tgt.Formula Ans = "" For i = 1 To Len(Fmr) moji = Mid$(Fmr, i, 1) Select Case moji Case "=": If i <> 1 Then Ans = Ans & "=" Case "+": Ans = Ans & "+" Case "-": Ans = Ans & "-" Case "*": Ans = Ans & "×" Case "/": Ans = Ans & "÷" Case Else: Ans = Ans & moji End Select Next Henkan = Ans End Function 打ち込んだら保存して下さい。 保存したら、B1セルに =25+5*6 と入力します。 次に、A1セルに =Henkan(B1) と入力します。 すると、A1セルに 25+5×6 と表示される筈です。 なお、B1セルに、文字列として 5*3+6 と入力すると、A1セルは 5×3+6 になります。

  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.2

A1に文字列として「25+5×6」って文字列を入れたら、B1に「55」と言う答えが欲しいのですよね? しかも掛け算や割り算は「*」「/」ではなく「×」「÷」で入力したい、と? こういう場合は「逆にした方が作業が楽」です。 つまり「B1に計算式『=25+5*6』を入力したら、B1に55と表示され、A1に『25+5×6』と表示される」にしましょう。 逆にしたら、漢字変換で「×」や「÷」を入力しなくて済みますし、B1部分は「エクセルの基本機能」で済みます。 後は「B1に入力された計算式を、どうやって普通の算数の式にするか?」だけを考えればよいです。

kaki918
質問者

お礼

早速のご教示ありがとうございます。(_ _) 早速試してみたいと思います。 ちなみに二重カッコ ”{(” の表示もご教授頂いたVAEの中のCase”(”:Ans=Ans&"(" で良いのでしょうか? 試してみます。 有難うございました。 分らなかったら、またよろしくです。

kaki918
質問者

補足

chie65535さんありがとうございました。 早速ためしてみたのですが、 教えて頂いたVBEの4行目の For i=1 To Len(Fmr) のToの部分に 「コンパルエラー:修正候補ステートメントの最後」と出て その行が赤くなります。 ちなみに、7行目は Case”=”:If i <> 1 Then Ans=Ans&"=" の<>部分に 「コンパルエラー:修正候補:式」と出てその行が赤くなります。 8行目~12行目までは ”+”、”-”、”×”、”÷”部分に 「コンパルエラー:修正候補 ステートメントの最後」 と出てやはりその行が赤くなります。 とりあえず書き込んで、ワークシートのB1セルに =25+5*6と書き込んで A1セルに 「=Henkan(B1)」と打ち込んだところ A1セルに 「#Name?」と表示されます。 教えられた通りに打ち込んだつもりなのですが、どこが悪いのでしょうか? お手数でしょうが、もう一度ご教授ください。 宜しくお願いいたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

>計算式の数値の訂正や、変更が多く、  その様な場合は、数式の中に「25」、「5」、「6」といった数値を、一々、入力するのではなく、B1セルに例えば、 =C1+D1*E1 等の様に、入力しておいた上で、C1セルに「25」を、D1セルに「5」を、E1セルに「6」を入力する様にし、数値が変更された際には、C1、D1、E1の各セルに入力されている値を書き換える様にされると良いと思います。

kaki918
質問者

お礼

早々のご教示ありがとうございます。 参考にさせていただきます。 ありがとうございました。

関連するQ&A

  • エクセルの簡単な計算式で・・・・

    初心者です。エクセルの表で、計算式・・縦合計の数式を 例=SUM(A5:A35)と入れており、その上部のセルに毎月異なる数値を打ち込んで自動計算していたのですが、先月から数値を打ち込んでも合計数値が変わらなくなってしまいました。(前月の合計数値のままです。) 合計数式の入ったセルをダブルクリックすれば正しい合計数値が現れるのですが、膨大な数の数式が入っている為、非常に時間がかかります。なぜこのようなことになったのかがまったく解りません。 どなたか以前の様に自動計算される方法を教えてください。 よろしくお願いいたします。

  • Excelの計算が合わないのですが・・・

    Excelの計算式で =SUM(A3:A31) として計算した式と 電卓で計算した答えが「1」違うのです。 何回も計算したのですが、そして、数式を入れ直したりしたのですが、 同じ答えになり、「1」違います。 何故こんなことが起こったのかわかりませんが、Excelの方が答えとしては間違っています。 きちんとした答えが出るように直したいのですが、 どうすればよいでしょうか? よろしくお願いします。

  • Excel での計算

    EXcelを初めて使用する初心者です。 Excelを使用し、次のような式を計算する場合、「数式バー」に入力すれば計算出来ることは、承知しているのですが、「セル」に入力し保存、必要な時に数式の一部だけを変更し計算する事は出来ますか?            ( A-( B÷C ×D + E + F +G ))  上式で、A,B,C,E,F,Gは定数(変更しない数値)で、Dを毎回変更するということが出来ますか?(そもそも「セル」に入力出来ますか?)

  • エクセル 0表示を空白にする(自動で)

    エクセルでセルに数式を入れています。計算する必要がないセルについては「0」が表示されているのですが、表示させない方法を教えて下さい。 詳しく書くと   A  B  1 100  105(A1*1.05) 2 空白 空白(但し計算式は入っている) 3 200  210(A3*1.05) Bには隣のA*1.05という数式が入っています。 A1とA3に数値を入力した場合、上記のようにしたいのですが、A2が空白だとB2に「0」が入ってしまいます。 他のファイルで同じような計算式を作成したとき、参照セルAが空白だとBも空白になっていました。ただし、Bにはちゃんと計算式が入っていてAに数値を入力するとBに答えが入ります。 特に意識せず作ったらこのようになっていたのです。 どうにかして同じようにしたいのですが、見比べても全然分からずギブアップです。。。 どなたかご教授ください。

  • エクセルで数式が働かなくなりますが?

    エクセルで数式を正しく入力して(例:=a1*b5+a2*b6+a3*b7)結果が反映されません。前回は正しく働いていた表で、あるセルの数値を変更すると、その変更を反映した計算結果が表示されるはずですよね。書式→セル→表示形式で確認するとちゃんと「数値」になっているのですが。これはどういうことでしょうか、解決方法を教えてください。

  • EXCELの小数計算について

    EXCEL97で小数計算をすると誤差がでるのですが何故ですか? A列に14.60を数値入力  B列に13.90を数値入力  C列に=B1-A1の数式をいれると-0.70となるはずなのにどういうわけか -0.699999999999999と表示される。 小数点以下14桁目までは-0.70000000000000と表示されるが15桁目で上記のように表示される。 表面上はROUND関数などで処理できるのですが複数の数式を組み合わせて計算している時は-0.69999・・・の数値をもって計算される場合があり誤差がでる。 消費税や金利計算などで1円でも誤差がでると表計算の正確さが問われてしまう。 0.7の他にも 次の場合もでる 0.2のとき0.1999・・ 0.3のとき0.2999・・・・ 0.8のとき0.7999・・・・ これはEXCELのバグなのでしょうか?

  • エクセル 数量二倍時の計算結果を表示

    エクセル2003を使っています(2007も持ってます)。 取扱商品は、数量により単価が変わります。 商品Bは、商品Aの数量を二倍にした金額で出荷します。 数量により、異なる引数・数式を使って計算した数列(商品A売価)の中から、 二倍の数量のときの計算結果を引用して、別の列(商品B売価)に表示させたいです。(下の表で行くと商品Bの列です) 商品Bの列に入力する数式を教えていただけますでしょうか。 (できれば考え方も簡単にお願いします) 複数の関数の組み合わせと思いますが、あまり経験がなく、手に負えません。 数量    商品A     商品B 10     \4,500     \5,500 20     \5,500     \7,500 30     \6,500     \9,400 40     \7,500     \11,200 50     \8,500      … 60     \9,400 70     \10,300 80     \11,200

  • エクセルの計算式の答えを文字列にできますか?

    エクセルに詳しい方に質問です。 エクセルの計算式(LOOKUP)の答えとして、"A"と表示されているセルがあるとします。 当然参照するデータを"A"から"B"変更すると 計算式の入っているセルも"B"と変わるのですが、、、 これが変わらない様にする、つまり"A"というのを計算式の答えではなく文字にすることはできるのでしょうか? 手打ちで変更するには量が多いもので。。。 よい方法をご存知の方、アドバイスお願い致します。

  • 計算式を教えてください。

    簡単に集計できる計算式があれば教えてください。 計算したい内容は毎日2種類の数値を入力しているのですがその数値には基準値があってその基準値を上回る部分だけを表示されるようにしたいのです。具体的には A列にはその日の商品「A」の実際の数値を入力 B列にはその日の商品「B」の実際の数値を入力 C列には商品「A」の数量-10ただし「A」「B」合計が20以下の場合は0 D列には商品「B」の数量-10ただし「A」「B」合計が20以下の場合は0 例えば、とある日の数量が商品「A」が12で商品「B」が10ならC列に2、D列に0とか、商品「A」が9で商品「B」が13ならC列に0、D列に2と自動的に表示されるといいのですが…IF関数でいろいろ試してみましたがギブアップです。どなたかこんな私に良きアドバイスをお願いいたします。

  • EXCELの計算式の解除方法について

    EXCEL2003を使っています。 例えば2行B列に100と数字が入れてあって 2行A列に数式=2b*0.7と入れてあって、70と記載されているとします。 2行B列の数字を変更しても、2行A列の数字70を残したいのですが、 計算式の答えに対して、計算式の解除ができますでしょうか。 宜しくお願い致します。