
No.6ベストアンサー
- 回答日時:
VBAでも良いという事なので、
Sheet1でB1からB20に計算式の文字列があるという前提で、
Sub test()
Dim i As Long
Sheets(1).Select
For i = 1 To 20
If Cells(i, 2).Value <> "" Then
Range("c" & i).Formula = "=ROUND(" & Cells(i, 2).Value & ",2)"
End If
Next
End Sub
でどうでしょう。
(0.82+0.05)*0.9
でも0.78と表示されました。
ありがとうございます!
完璧に出来ました。ただ、どうしてもわからないのは全角を変換してる様子もないのになぜC列にはちゃんと半角ではいるんでしょう?不思議です。
No.7
- 回答日時:
> 要は、あるシートにあとで確認するため計算過程を書いてもらい、
> 同時に別のセルにその答えをだしたいのです。
そういう使い方ですと、計算式の文字列を修正したときに、即再計算
されなくてもいい ということになりませんか。
もし、そうだとすると、ユーザー定義関数を使用するまでもありません。
No.6 のように、その文字列式を他のセルの計算式に代入するだけで
出来ます。(但し、変更時、自動再計算にはなりません。)
tamazo-さんのを参考に作ってみたら良いと思います。
シートの詳しい状況を教えて頂ければ、コーディングしてもいいですが・・・
なお、ユーザー定義関数は、ブックに保存されますので、配布は出来ます。
Accessの参照設定は、Eval関数(これって凄いです)を使うためですが、
VBAを開発するときだけ必要で、作ってしまえば、配布は、普通に出来ます。
参考まで。
ありがとうございます。
> tamazo-さんのを参考に作ってみたら良いと思います。
ええ、つくってみて完璧に作動したので感激しました。
> Accessの参照設定は、Eval関数(これって凄いです)を使うためですが、
>VBAを開発するときだけ必要で、作ってしまえば、配布は、普通に出来ます
そうなんですか。Accessが使えるようになったら勉強してみます。
その節はまたよろしくお願いします。
No.5
- 回答日時:
No.3 ですが、Accessが使える環境か確認せずに書いてしまいましたが、
もし、使えないとすれば、同じような方法でするは、関数を作る必要が
あります。
もし、必要であれば、作りますが・・・
使われる演算記号は、*、+、-、/ でいいのですね。
また、他のセルを使ってもいいのであれば、ワークシート関数だけでも
できると思います。(演算子の位置を検索し、左右分割します。)
この回答への補足
VBAでもワークシート関数でも出来るといいんですが。
要は、あるシートにあとで確認するため計算過程を書いてもらい、同時に別のセルにその答えをだしたいのです。
使われる演算は、*、+、-、/ ですが、計算順序により(0.82+0.05)*0.9 のように括弧がはいるケースもあります。
ですから演算子の位置を検索し、左右分割する方法がとれないかもしれません。
B列のセルの文字列をコピーし、不用なスペースを削除し、半角英数に変換してその前に=をつけて別の列のセルに数式として貼り付けるVBAマクロがいいのかと思いますが、やり方がわかりません。
No.4
- 回答日時:
あくまでも全ての計算式が小数第2位×小数数第1位と仮定。
A1に0.85*0.9の文字列が入ってるものとします。
=ROUND(LEFT(A1,4)*RIGHT(A1,3),2)
こんな都合よくはいかないですよね(^^ゞ
No.3
- 回答日時:
> いい方法はないでしょうか?
VBAでもいいのですね。ユーザー定義関数を使う方法です。
次のようにすれば、出来ますよ。
セルB1 に 0.85*0.9 の文字列が、入っているとします。
・ Alt+F11 でメニューから[挿入]-->[標準モジュール]を指定します。
・ VBEのメニューから[ツール]-->[参照設定]で、
「Microsoft Access 9.0 Object Library」にチェックを入れ[OK]で閉じます。
・ コードウィンドウに下記コードをコピーし、貼り付けます。
・ Alt+Qでウィンドウを閉じ、シートに戻り、任意のセルに
=ROUND(strenzan(B1),2)
と入力します。 0.77が表示されるでしょう。
Function StrEnzan(shiki As String)
StrEnzan = Eval(shiki)
End Function
この回答への補足
ありがとうございます。
ざんねんながらアクセスは使えないです。
それから作成したエクセルファイルはわたし以外の人達が大勢、それぞれのパソコンで使うのですが、ユーザー定義関数とは、私以外のパソコンでも機能するのでしょうか?
No.2
- 回答日時:
#1です。
文字列を数式に変換する関数はありません。
>B列に20行くらいそういう式が文字列ではいります。
20行程度でしたら、手動で、文字列の頭に「=」を挿入するのでは
だめなのですか?
これで数式になるのですが・・・
http://moreexcellent.cool.ne.jp/excel/function_c …
文字列関数
この回答への補足
ありがとうございます。
「=」だけではなく、ROUND等も入れますし、これから頻繁に行う作業のものですからなんとかならないかと思った次第です。
手動しか無理ならコピー&ペースト、「=」等の追記をマクロ自動記録でやってみたところ、
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=ROUND(0.85*0.9,2)"
という具合に、個別の数字がでてしまい応用できませんでした。
困りました!
No.1
- 回答日時:
文字列の形式は、全部間に「*」が入っているのですか?
その場合は、区切り位置機能を使用したらどうでしょう?
データ → 区切り位置 → 次へ → その他チェック *を入力
→次へ → 完了 とすれば
数値としてそれぞれ 0.85 と 0.92 に数値として分割できます。
あとは、数値に変換できましたので、式に当てはめれば計算できます。
ただし、この場合区切り位置に使う、「*」は全角と半角が混在していては
だめです。
数字は、半角・全角どちらでも大丈夫です。
この回答への補足
さっそくありがとう御座いました。
演算記号は*、+、-、/があります。
また、B列に20行くらいそういう式が文字列ではいりますので、自動的に計算できる方法を探しているのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヘッダー
-
数式の計算結果により表示され...
-
Excelの計算式内の文字列の一括...
-
Excelで特定の数を計算対象から...
-
#DIV/0!の表示があるセルの計算
-
IF関数で、時間を条件にしたい...
-
入力済のセルだけの平均値
-
AかBに入力があった時Cに反映、...
-
エクセルで、時間の計算をした...
-
エクセル 1万時間を越える際の...
-
Excel 関数? 文字列に...
-
【Excel】水道料金の計算方法を...
-
多項式の計算
-
Excelの文字入力にタイムラグが...
-
#VALUE以外の部分を計算させる...
-
文字列を数式に変換して計算す...
-
EXCELの関数に関する質問です
-
エクセルでの時間計算(2時間30...
-
エクセルで勤怠管理表で休憩時...
-
エクセルでDeleteキーを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AかBに入力があった時Cに反映、...
-
ヘッダー
-
数式の計算結果により表示され...
-
Excel 関数? 文字列に...
-
エクセルの使い方 1日=7時間45...
-
エクセルで、時間の計算をした...
-
エクセル 1万時間を越える際の...
-
IF関数で、時間を条件にしたい...
-
EXCELの関数に関する質問です
-
エクセル・計算式をテキストデ...
-
Excelの文字入力にタイムラグが...
-
エクセルでDeleteキーを...
-
IF関数で出した数値をSUM関数で...
-
エクセルでの時間計算(2時間30...
-
TEXTCALCの使い方
-
エクセル 月数を0.5ヶ月単位で...
-
エクセルで数値を50単位で切...
-
【エクセル】あるセルのみ自動...
-
Excelの計算式内の文字列の一括...
-
Excel(エクセル)でフィルター...
おすすめ情報