人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCELのワークシートに埋め込まれた式を分析するために、式の中のセル参照部分を明確化したいと考えています。
(例:"=A1+A2" ⇒"=[A][1]+[A][2]")
VBAの正規表現で、これを行うにはどう書いたらよいでしょうか?

以下のような条件で考えています。(もっと有効なものがあれば変えていただいて構いません)
1.セル参照部分は、=+*-/()^&によって囲まれているものとします。
2.絶対参照の$は無いものとして処理します。("=$A$1" ⇒"=[A][1]")
3.他シートの参照(Sheet2!A1)はとりあえず無視します。(処理しません)

よろしくお願いします。

●質問者: threecourse
●カテゴリ:コンピュータ
✍キーワード:A1 Excel VBA いもの はと
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● an_shoku_panman
●35ポイント

間違った解釈でしたら済みませんが、以下の感じで如何でしょうか。

Sub 計算式()

A = Range("A1").Value + Range("B1").Value

B = [A1] + [B1]

MsgBox A & " と " & B

End Sub


2 ● airplant
●35ポイント

ポイントは不要です。

分析するために正規表現で変換とのことですが、最終的にはどのような結果になることを要望されていますでしょうか?


例にあったようなことを正確に行うには相当な場合を考えて正規表現での置換えが必要になります。

"=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文で式を取得→決め打ち的に置換して分析、のように行ってみたことがあるのですが、

正規表現を使えば一般化できるかなと思って、質問させていただきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ