• ベストアンサー

Excelの式の表示について

Excelで下記のような状態で計算式を表示したいと考えております。 A1に=B1+C1、B1に2、C1に3とします。 するとA1に「5」と表示されます。 A2に計算の根拠がわかるように 「2+3」 と表示したいと考えて居ますが単純に手打ちですと個数が多くなると作業が大変ですので、関数やVBAマクロで可能でしたらご教授お願い致します。 *「オプション」や「Ctrl + Shift + @」を使用することでA1にA1の数式を表示する事が目的ではありませんので、ご了承のほどよろしくお願い致します。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

すみません、式の表示という文字だけに反応してしまいました。 単純な計算式だけでしたら以下のように。 式内に()があると駄目ですが・・・。 Function siki(Rng As Range) Dim sFormula As String Dim i As Long Dim sSplit() As String, sSplit1() As String Dim sTemp As String, sTemp1 As String Dim mStr As String sFormula = Mid(Rng.FormulaLocal, 2) For i = 1 To Len(sFormula) Select Case Mid(sFormula, i, 1) Case "+", "-", "*", "/", "^" sTemp1 = sTemp1 & Mid(sFormula, i, 1) & vbLf sTemp = sTemp & vbLf Case Else sTemp = sTemp & Mid(sFormula, i, 1) End Select Next sSplit = Split(sTemp, vbLf) sSplit1 = Split(sTemp1, vbLf) For i = 0 To UBound(sSplit) If Range(sSplit(i)).Value = "" Then mStr = mStr & 0 & sSplit1(i) End If mStr = mStr & Range(sSplit(i)).Value & sSplit1(i) Next siki = mStr End Function

quindecillion
質問者

お礼

早々のご回答ありがとうございます。 つたない説明で申し訳ありませんでした。

quindecillion
質問者

補足

99%思惑通りの事ができました。 caseで四則演算で判断しているせいなのか数値のみの参照ですとvalueエラーがかえります。 この辺はなんとか修正してみたいと考えて居ます。 この度はありがとうございました。 先にお礼の方を早々に閉じてしまいましたので、こちらにて失礼します。

その他の回答 (5)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.6

度々の追加ですみません。 カッコがある場合以下のコードでいけると思います。 Function siki(Rng As Range) 'カッコあり Dim sFormula As String Dim i As Long Dim sTemp As String Dim mStr As String sFormula = Mid(Rng.FormulaLocal, 2) For i = 1 To Len(sFormula) Select Case Mid(sFormula, i, 1) Case "+", "-", "*", "/", "^", "(", ")" If sTemp = "" Then mStr = mStr & Mid(sFormula, i, 1) ElseIf IsNumeric(sTemp) = True Then mStr = mStr & sTemp & Mid(sFormula, i, 1) sTemp = "" ElseIf Range(sTemp).Value = "" Then mStr = mStr & 0 & Mid(sFormula, i, 1) sTemp = "" Else mStr = mStr & Range(sTemp).Value & Mid(sFormula, i, 1) sTemp = "" End If Case Else sTemp = sTemp & Mid(sFormula, i, 1) End Select Next If sTemp <> "" Then If IsNumeric(sTemp) = True Then mStr = mStr & sTemp ElseIf Range(sTemp).Value = "" Then mStr = mStr & 0 Else mStr = mStr & Range(sTemp).Value End If End If siki = mStr End Function

quindecillion
質問者

お礼

遅くなりました。 お礼ぬかりの状態でした。 ご回答に感謝しております。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.5

数値がある場合には最後を以下のようにすればいけると思います。 For i = 0 To UBound(sSplit) If IsNumeric(sSplit(i)) = True Then mStr = mStr & sSplit(i) & sSplit1(i) ElseIf Range(sSplit(i)).Value = "" Then mStr = mStr & 0 & sSplit1(i) Else mStr = mStr & Range(sSplit(i)).Value & sSplit1(i) End If もとのコードも一部おかしかったです。 If Range(sSplit(i)).Value = "" Then mStr = mStr & 0 & sSplit1(i) End If mStr = mStr & Range(sSplit(i)).Value & sSplit1(i) は以下に訂正します。 If Range(sSplit(i)).Value = "" Then mStr = mStr & 0 & sSplit1(i) Else mStr = mStr & Range(sSplit(i)).Value & sSplit1(i) End If

quindecillion
質問者

お礼

遅くなりました。 お礼ぬかりの状態でした。 ご回答に感謝しております。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

単純な四則演算の記号で結ばれた式なら、しこしこと割り出してやればできる気もする。 ーー しかし=SUM(A1:A10)のような場合は、1+2+・・・+10のように表示せよということですか? これは面倒。 Excel関数も多数あるので検討が大変。 関数で算出されたセルを用いて、計算している場合は、どこまで表現するのか。 値が日付の場合はどう表現するのか。 ーー どういう発想でこういう質問をしたのか。OKWAVEにも、背景や目的を書かない質問が多いが、考える方は、徒労感を禁じ得ない。 余り意味がないように思う。 ーー 何しろVBAにおいて、質問に適した、使えそうな仕組みがないように思う。 Formulaは使えそうだが、.DirectDependentsを思ったが、使えそうでもない。

quindecillion
質問者

お礼

貴重なご意見を頂きありがとうございます。 ご指摘はごむりごもっともであると痛感しております。 今後につなげさせて頂きます。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

VBAでしたら以下のような感じはいかがでしょう。 ユーザー定義関数で (標準モジュールに) Function siki(Rng As Range) siki = Mid(Rng.Formula, 2) End Function にしてセルに=siki(A1)とか 実行するタイプでしたらA列の式をE列に表示します。 Sub Test() Dim i As Long For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Cells(i, "E").Value = Mid(Cells(i, "A").Formula, 2) Next End Sub

quindecillion
質問者

お礼

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

quindecillion
質問者

補足

試させて頂きましたが、A1に入力されている式そのものが表示されてしまいます。 A1が「=B1+C1」ですと実行後のセルは「B1+C1」になってしまいます。 このような形では無く実行後のセルに「2+3」と表示させたいと考えております。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

=FORMULATEXT(A1) とかいかがですか。

quindecillion
質問者

お礼

ご回答ありがとうございます。 確認させて頂きましたが、こちらの方法ですと「B1+C1」が表示されてしまい、意図する「2+3」にまなりませんでした。

関連するQ&A