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

質問させていただきます
よろしくお願します。
周りの人に聞いてもむりだと言われたのですが

一つのセルの中に (たとえば)
 30000×6÷0.53と文字として入力し、その答えを(339,623)隣のセルに円未満四捨五入して出したいと思っているのですがうまくいきません
いつも電卓を片手にエクセルに入力しているので
何とかしたいと思っているのですが

質問して無理だと言ってくださればあきらめもつきます
よろしくお願します。

A 回答 (10件)

直接は無理ですが、間接的にならできます。



間接的というのは、以下のような意味です。
例)
セルD1に 30000(数値で入力)
セルD2に 6(数値で入力)
セルD3に 0.53(数値で入力)

セルA1(30000×6÷0.53と表示させる)に
=D1&"×"&D2&"÷"&D3
と入力。
セルB1(計算結果を表示させる)
=ROUND(D1*D2/D3,0)
と入力。
ついでに、セルB1に対して、セルの書式設定の表示形式で、ユーザー定義を選び、種類を「(#,##0)_ 」とすれば (339,623)の表示になります。
    • good
    • 0
この回答へのお礼

質問に答えていただいて有難うございます

仕事から帰りしだいやってみます。

たくさんの皆さんに回答していただきましたので
期待が持てました
有難うございます。

お礼日時:2003/09/10 07:14

文字列を読んで計算する関数をマクロで作って


呼び出すというのはダメかな。
    • good
    • 0
この回答へのお礼

ranx様 質問に答えていただき有難うございました。

質問の仕方が悪くご迷惑お掛けしましたが
みなさまのご協力でうまくできるようになりました。
又何かありましたら、よろしくお願します。

お礼日時:2003/09/11 07:25

=30000*6/0.53と=を最初に入れ掛ける×は*、割る÷は/で置きかえればどうでしょうか。

そのとなりのセルに
=ROUND(A1,0)と入れる。
これではダメな事情があリますか。全文字全角で入力しても数字・演算記号に直してくれるようですが。
    • good
    • 0
この回答へのお礼

imogasi様 質問に答えていただき有難うございました。

質問の仕方が悪くご迷惑お掛けしましたが
みなさまのご協力でうまくできるようになりました。
又何かありましたら、よろしくお願します。

お礼日時:2003/09/11 07:26

標準の機能だけでどうしても数式入力をしたいのなら、マクロを使うとある程度のことはできます。

(お望みのこととは違うと思いますが)

Sub calc(f As String, t As String)
Range(t).FormulaLocal = "=" & Range(f).Text
End Sub

という関数を用意します。次にボタンを作成してボタンのコードに
Sub ボタン1_Click()
Call calc("a1", "c1")
End Sub
のように書きます。(A1のセルに入っている式を計算した結果がC1に表示されるように見えます。C1には値ではなく、式が入ります)

"a1"が式が入っているセルの名前 "c1"が値(実際は式)を入れるセルの名前です。
いくつもある場合は、Call calc(...)を並べます。

きちんとした式になっていないとエラーになりますが。
    • good
    • 0
この回答へのお礼

質問に答えていただいて有難うございます

仕事から帰りしだいやってみます。

たくさんの皆さんに回答していただきましたので
期待が持てました
有難うございます。

お礼日時:2003/09/10 07:13

計算式が、常に A×B÷C という条件であれば、



計算式がA1のセルに入力されている場合は、B1のセルに

=ROUND(LEFT(A1,FIND("×",A1,1)-1)*MID(A1,FIND("×",A1,1)+1,FIND("÷",A1,1)-FIND("×",A1,1)-1)/MID(A1,FIND("÷",A1,1)+1,LEN(A1)-FIND("÷",A1,1)),0)

と入力すれば、計算できます。

この回答への補足

答えていただいて有難うございます。
計算式が、常に A×B÷C という条件ではないのです。
質問の仕方がだめでした
A×B×C もありますし
A-B÷Cみたいなのもあります。

すいませんでした

補足日時:2003/09/10 07:06
    • good
    • 0

シートのChangeイベントに下記を貼りつけ。


A列へ全角で数*数/数の順序で入する。*/はこの順序で必ず入力するものとする。B列に答え、C列に四捨五入値が入ります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
s = StrConv(Target, vbNarrow)
s = Replace(s, "*", ",")
s = Replace(s, "/", ",")
p = Split(s, ",")
MsgBox p(0)
MsgBox p(1)
MsgBox p(2)
Cells(Target.Row, 2) = p(0) * p(1) / p(2)
Cells(Target.Row, 3) = WorksheetFunction.Round(Cells(Target.Row, 2), 0)
End If
End Sub
こんなに複雑になると言う例で上げます。
    • good
    • 0
この回答へのお礼

すいませんでした。
質問の仕方が悪かったです。

-も入りますし+も入ります
6000×9000÷0.82+800となることもあります
すいません。

質問に対し考えて頂いたこと
本当に有難うございました。

お礼日時:2003/09/10 22:04

やはりマクロかな?


選択して実行すると、隣りのセルに答えを出します。

Sub myCalc()
Dim r As Range
For Each r In Selection
 With Application.WorksheetFunction
   s = .Substitute(r.Text, "×", "*")
   s = .Substitute(s, "÷", "/")
   s = .Substitute(s, "+", "+")
   s = .Substitute(s, "-", "-")
   r.Offset(0, 1).NumberFormat = "#,##0"
   r.Offset(0, 1).Value = "=round(" & s & ",0)"
 End With
Next r
End Sub
    • good
    • 0
この回答へのお礼

有難うございました。

すごいです。
VBAてほんとにすごいです。

これで電卓から開放されます。

papayukaサン本当にありがとうございます。
またよろしくお願いします。

お礼日時:2003/09/10 21:33

ユーザー定義関数を使用する方法ですが、もし、これで宜しかったら次の手順で


テストしてみてください。

■ 操作手順
1.Alt + F11 または、メニューから[ツール] --> [マクロ]-->
  [Visual Basic Editor] をクリックします。

2.メニューから [挿入]--> [標準モジュール] をクリックします。

3.モジュールウィンドウに下記コード(6行)をコピーして貼り付けます。

4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
 これで STRENZAN 関数が使用できます。
( + や- も使えます。全角でもOK)

セルA1に 30000×6÷0.53 を入力します。

例えば、セルB1に =ROUND(STRENZAN(A1),0) の計算式を設定します。

これで B1には、文字列の演算結果を四捨五入し、339623 が表示されます。

Function StrEnzan(Shiki As String) As Variant
  Shiki = Replace(Shiki, "×", "*")
  Shiki = Replace(Shiki, "÷", "/")
  StrEnzan = Application.Evaluate(Shiki)
  Application.Volatile
End Function
    • good
    • 0
この回答へのお礼

お答え有難うございました。

うーん・・・すごすぎて自分には何がなにやらわかりませんがja7awuサンの言われたとおりに進んでいくとうまくできました。

ありがとうございます。
初心者でもわかる丁寧なお答え本当に有難うございました。
又よろしくお願いします。

お礼日時:2003/09/10 22:36

こんばんは



A1に 30000×6÷0.53 と記載があり
B1に計算結果を表示させるのであれば

・B1を選択
・メニューの 挿入 名前 定義
 名前の欄に適当な名前 (例 siki)
 参照範囲欄に
 =EVALUATE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("="&A1,"+","+"),"-","-"),"×","*"),"÷","/"))+NOW()*0
・B1に式 =ROUND(siki,0)

この回答への補足

有難うございました

うまくできました。
挿入 名前 定義 ですか・・・
はじめて知りました。
過去の質問の中にもでていましたが

自分で質問しなければ、どこにあるのかすら分かりませんでした。

定義を勉強してみたいのですが普通のエクセルの本に載っているのでしょうか?
エクセルは奥が深いです
本当に有難うございました。

補足日時:2003/09/10 21:40
    • good
    • 0

A1に30000×6÷0.53という文字が入っているとして



=LEFT(A1,FIND("×",A1)-1)*MID(A1,FIND("×",A1)+1,SEARCH("÷",A1)-SEARCH("×",A1)-1)/RIGHT(A1,LEN(A1)-FIND("÷",A1))

このセルの書式を、『数値/小数点以下の桁数:0/桁区切り(,)を使用する』にすれば、宜しいかと思います。
    • good
    • 0
この回答へのお礼

お答え有難うございました。

関数でもできるのですね・・

有難うございまた。
LEFTとかMIDは使ったことがあったのですが
これだけたくさん使うと頭の中が混乱しそうです。
でも勉強したいと思います。

feverさんそしてお答えくださった皆様に感謝です。
有難うございました。

お礼日時:2003/09/11 18:34

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