• ベストアンサー

Excel で * / を×÷で表示印刷したい

Excel の例えば A1 のセルに直接キーボードから 100*5/10 [リターン] と入力し、A2 のセルに 100×5÷10=50 と表示または印刷しようとしてます。このように一つのセルに計算機を叩くみたいに計算をし別のセルに普通の×や÷の文字に変換して表示や印刷することはエクセルでは可能でしょうか。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#04です ユーザ定義関数がご希望でしたか。以下のURLで紹介されているようなものもありますよ。ご覧になってみてください

参考URL:
http://www.nurs.or.jp/~ppoy/access/excel/xlM046.html

その他の回答 (6)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.7

#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)
回答No.5

こんばんは。 以下は、私が二年ほど前に作ったユーザー定義関数、少し手を入れてみました。時々、出てくる質問です。私のものは、「=」が入っていても、入っていなくても、文字列化させます。できばえは、あまり良くないような気がします。 使い方は、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

noname#101391
質問者

お礼

丁寧な回答ありがとうございます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

お遊びになりますがマクロを作ればできます。入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けて、シートに戻り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

noname#101391
質問者

お礼

関数初心者状態なのでマクロは初めてですが、確認したところ私のやりたいことは実現されました。私はマクロは経験ないですが中を見てみると私が途中まで組んだ方法にある関数もあるので何かヒントがないか探してみます。セルに入れる関数だけで実現されればいいのですが。

回答No.3

A2の100*5/10に =を表示させない(文字列として関数を表示)をすれば =SUBSTITUTE(SUBSTITUTE(A2,"*","×"),"/","÷")&"=" とすれば、100×5÷10= までは表示させる事は可能なのですが =の先に 100*5/10の結果を出す方法が見つけられませんでした。 私のやり方が悪かったのかも知れませんが、INDIRECTを使用しても エラーが返って来ました。 中途半端な回答ですみません。

noname#101391
質問者

お礼

私も SUBSTITUTE を使って * / を×÷に変換するところまでは考えましたが答えは別セルに出してもいいとしても最初に入力した 100*5/10 の答えを他のセルに出す方法がわかりませんでした。最初にやっぱり = がないと答えが出ないのでしょうか。関数初心者なので私の場合は SUBSTITUTE を捨てセルで最初 * を、次の捨てセルで / を変換しましたが同時に変換できるのは参考になりました。ありがとうございました。

回答No.2

ちょっと意図とは違うかもしれませんが、、、 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 が表示されます。 変換ではないので本質的な回答にはなってないかもしれませんが、、、

noname#101391
質問者

お礼

確かにその方法で同じ結果は得られるのですが、数字を入れるセルを入力時に移動しなくてはならず時間がもったいないので今回は計算用のセルを用意してそこで電卓を叩く感覚で表示は他にさせようと考えています。ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

置換処理すれば見た目は可能ですが 実際の計算は出来ません。 計算用にはやはり*/の式が別途必要ですね。 まあやるんならユーザー定義関数作ったほうが良いかもしれません。 過去の質問でセルに設定した数式を、 文字列として表示するユーザー定義関数がありますので これに置換処理を加えれば可能でしょう

noname#101391
質問者

お礼

そうですね。先にあがっていたユーザー定義関数を使わせてもらいます。

関連するQ&A