- ベストアンサー
Excel で * / を×÷で表示印刷したい
Excel の例えば A1 のセルに直接キーボードから 100*5/10 [リターン] と入力し、A2 のセルに 100×5÷10=50 と表示または印刷しようとしてます。このように一つのセルに計算機を叩くみたいに計算をし別のセルに普通の×や÷の文字に変換して表示や印刷することはエクセルでは可能でしょうか。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#04です ユーザ定義関数がご希望でしたか。以下のURLで紹介されているようなものもありますよ。ご覧になってみてください
その他の回答 (6)
- zap35
- ベストアンサー率44% (1383/3079)
#04です。まだ解決されていませんか? >セルに入れる関数だけで実現されればいいのですが は難しいです。それは文字列を式と見なして計算するEVALUATE関数はワークシート関数として使用できないからです。 でもユーザ定義関数として使用することは可能です。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 シートに戻り =StrToFormula(A1) のように、ユーザ定義関数の引数として文字列を入れたアドレスを指定して下さい Function StrToFormula(ByVal Target As Range) As String Dim wkStr As String wkStr = Target.Value wkStr = Application.Substitute(wkStr, "*", "×") wkStr = Application.Substitute(wkStr, "+", "+") wkStr = Application.Substitute(wkStr, "-", "-") wkStr = Application.Substitute(wkStr, "/", "÷") StrToFormula = wkStr & "=" & Application.Evaluate(Target.Value) End Function ユーザ定義関数もマクロですからBOOKを保存して、再度開くとき「このブックにはマクロが…」の警告がでることはご承知おき下さい
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 以下は、私が二年ほど前に作ったユーザー定義関数、少し手を入れてみました。時々、出てくる質問です。私のものは、「=」が入っていても、入っていなくても、文字列化させます。できばえは、あまり良くないような気がします。 使い方は、A2: = ALTFORMULA(A1) とすれば出てきます。 なお、#3さんの補足をすると、 「100*5/10の結果を出す方法は」 挿入-名前-定義 名前:Kekka セル範囲: A1 セルにセルポインタを置いて、 =EVALUATE("="&!A2) & LEFT(NOW(),0) =SUBSTITUTE(SUBSTITUTE(A2,"*","×"),"/","÷")&"=" &Kekka とすれば出てくるはずです。本当、これでよいかもしれませんね。 Excel2003 だと、マクロ関数が使われているとかセキュリティのメッセージダイアログが出てきます。(MSが、マクロ関数と手を切りたいからでしょうけれども) 以下の私の関数は、この質問のために作ったものではないので、少し仰々しいです。 標準モジュール設定のみ '---------------------------------------------------------- Public Function AltFormula(Rng As Range) Dim myStr As String Dim myRepl As String Dim myRepl2 As String Dim myVal As String Dim Matches As Object Dim Match As Object If IsError(Rng.Value) Then Exit Function On Error GoTo Quit With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(\*|\+|\/|\-|=|\,)(\d*\.*)" If Rng.HasFormula = True Then myStr = Rng.Formula Else myStr = Trim$(Rng.Value) End If Set Matches = .Execute(myStr) If Matches Is Nothing Or IsNumeric(Rng.Formula) Then myStr = Rng.Value: GoTo Quit For Each Match In Matches myRepl = .Replace(Match, "$1") Select Case myRepl Case "/": myRepl = "÷" Case "*": myRepl = "×" Case ",": myRepl = "," Case Else: myRepl = StrConv(myRepl, vbWide) End Select myRepl2 = .Replace(Match, "$2") myStr = Replace(myStr, .Replace(Match, "$1"), myRepl) myStr = Replace(myStr, .Replace(Match, "$2"), myRepl2) Next If InStr(1, myStr, "=", 1) = 1 Then myStr = Mid$(myStr, 2) & "=" & Rng.Value ElseIf InStr(1, myStr, "=", 1) = 0 Then myVal = Evaluate("=" & Rng.Value) myStr = StrConv(myStr, vbUpperCase) myStr = myStr & "=" & myVal End If Set Matches = Nothing Quit: End With AltFormula = myStr End Function
- zap35
- ベストアンサー率44% (1383/3079)
お遊びになりますがマクロを作ればできます。入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けて、シートに戻りA1セルに数式「100*5/10」と入力してみて下さい。A2に「100×5÷10=50」と表示されるはずです Private Sub Worksheet_Change(ByVal Target As Range) Dim wkStr, svStr As String, kekka Dim ptr As Integer On Error GoTo end0 If Target.Address = "$A$1" Then Application.EnableEvents = False With ActiveSheet.Range("A1") wkStr = .Value svStr = .Value wkStr = Application.Substitute(wkStr, "*", "×") wkStr = Application.Substitute(wkStr, "+", "+") wkStr = Application.Substitute(wkStr, "-", "-") wkStr = Application.Substitute(wkStr, "/", "÷") .NumberFormatLocal = "G/標準" .Formula = "=" & svStr .Offset(1, 0).Value = wkStr & "=" & .Value .NumberFormatLocal = "@" .Value = svStr End With End If end0: Application.EnableEvents = True End Sub
お礼
関数初心者状態なのでマクロは初めてですが、確認したところ私のやりたいことは実現されました。私はマクロは経験ないですが中を見てみると私が途中まで組んだ方法にある関数もあるので何かヒントがないか探してみます。セルに入れる関数だけで実現されればいいのですが。
- p-applepie
- ベストアンサー率53% (156/290)
A2の100*5/10に =を表示させない(文字列として関数を表示)をすれば =SUBSTITUTE(SUBSTITUTE(A2,"*","×"),"/","÷")&"=" とすれば、100×5÷10= までは表示させる事は可能なのですが =の先に 100*5/10の結果を出す方法が見つけられませんでした。 私のやり方が悪かったのかも知れませんが、INDIRECTを使用しても エラーが返って来ました。 中途半端な回答ですみません。
お礼
私も SUBSTITUTE を使って * / を×÷に変換するところまでは考えましたが答えは別セルに出してもいいとしても最初に入力した 100*5/10 の答えを他のセルに出す方法がわかりませんでした。最初にやっぱり = がないと答えが出ないのでしょうか。関数初心者なので私の場合は SUBSTITUTE を捨てセルで最初 * を、次の捨てセルで / を変換しましたが同時に変換できるのは参考になりました。ありがとうございました。
- s_hige_o3
- ベストアンサー率0% (0/1)
ちょっと意図とは違うかもしれませんが、、、 A1(関数):=CONCATENATE(B2,C2,D2,E2,F2,G2,H2) B2(文字):100 C2(文字):× D2(文字):5 E2(文字):÷ F2(文字):10 G2(文字):= H2( 式 ):=B2*D2/F2 で A1に 100×5÷10=50 が表示されます。 変換ではないので本質的な回答にはなってないかもしれませんが、、、
お礼
確かにその方法で同じ結果は得られるのですが、数字を入れるセルを入力時に移動しなくてはならず時間がもったいないので今回は計算用のセルを用意してそこで電卓を叩く感覚で表示は他にさせようと考えています。ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
置換処理すれば見た目は可能ですが 実際の計算は出来ません。 計算用にはやはり*/の式が別途必要ですね。 まあやるんならユーザー定義関数作ったほうが良いかもしれません。 過去の質問でセルに設定した数式を、 文字列として表示するユーザー定義関数がありますので これに置換処理を加えれば可能でしょう
お礼
そうですね。先にあがっていたユーザー定義関数を使わせてもらいます。
お礼
丁寧な回答ありがとうございます。