(例:"=A1+A2" ⇒"=[A][1]+[A][2]")
VBAの正規表現で、これを行うにはどう書いたらよいでしょうか?
以下のような条件で考えています。(もっと有効なものがあれば変えていただいて構いません)
1.セル参照部分は、=+*-/()^&によって囲まれているものとします。
2.絶対参照の$は無いものとして処理します。("=$A$1" ⇒"=[A][1]")
3.他シートの参照(Sheet2!A1)はとりあえず無視します。(処理しません)
よろしくお願いします。
間違った解釈でしたら済みませんが、以下の感じで如何でしょうか。
Sub 計算式()
A = Range("A1").Value + Range("B1").Value
B = [A1] + [B1]
MsgBox A & " と " & B
End Sub
ポイントは不要です。
分析するために正規表現で変換とのことですが、最終的にはどのような結果になることを要望されていますでしょうか?
例にあったようなことを正確に行うには相当な場合を考えて正規表現での置換えが必要になります。
"=A1+A2" ⇒"=[A][1]+[A][2]"
もし、式をそのまま落としたいのであれば、下記の手順で簡単にできますが、これでは要望の結果になりませんか?
ツール→オプション→表示タブ→ウィンドウオプションの「数式」をチェック
→画面に表示される。又、テキスト出力すれば、そのまま式で出る。
セルの表現を[]で囲んだ後でどのように活用されるのか、その活用方法が分かればもっとアドバイスできると思います。
もし、後でエディタなどで加工されるのであれば、上記をテキストファイルに落として、=の部分のみをチェックすることで代用できるかも知れません。
既にご存知とは思われますが、参照元・参照先をグラフィカルに矢印で表示してくれる機能(トレース機能)が標準で備わっていますので、そちらを活用するのも手と思います。
ツール→ワークシート分析→参照元のトレース など
又は、ツールバー上で右クリックして、「ワークシート分析」のメニューバーを出す
どうもありがとうございます。
CTRL+SHIFT+@も、ワークシート分析も実はバリバリ使っております。
説明不足ですみません、
列に項目(例:B列に収益A、C列に収益B、D列に費用A、E列に費用B、F列に損益(F3=B3+C3-D3-E3))
行に経過期間があるようなワークシートです。(前の行を参照したりします。)
大きいものでは70列*200行程度で、式ももう少し複雑です。
上記のようなワークシートを理解・カスタマイズしなくてはいけない機会が時々あるのですが、
その作業を簡略化できればと思っています。
置換した後、さらに[B]=収益A、[C]=収益Bと置換してテキスト化し、理解しやすくすることが第一の目標です。
さらには、そのままVBAに組み替えて、高速化やカスタマイズを行うことが次の目標です。
当然、SALINGERさんがおっしゃるような例外もあり、簡単にはいかないと思っていますので、
ある程度の手作業はやむなしですが。。
ちなみに、For文で式を取得→決め打ち的に置換して分析、のように行ってみたことがあるのですが、
正規表現を使えば一般化できるかなと思って、質問させていただきました。