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

Excel(2007)のVBAを作成していただきたいです。
1つのシートで、不等号付き数字例えば<0.02を全て0と表示。さらに、例えば[0.03]のように括弧付きの数値の括弧を全てなくし、0.03と表示するというVBAを作成していただきたいです。
できれば、そのままVBAをコピー貼り付けして使えるようにしてほしいです。
宜しくお願いします。


●質問者: ramumu1031
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●300ポイント ベストアンサー

このような感じの処理でしょうか。

アクティブシートを処理するようにしています。

Sub ramumuModify()
 Set RegExp = CreateObject("VBScript.RegExp")
 With RegExp
 .Global = True

'// <### を 0 にする
 .Pattern = "^<\d+[\.]{0,1}\d*$"
 For Each r In ActiveSheet.UsedRange
 If .Test(r.Value) Then r.Value = 0
 Next

'// [###] の [] を外す
 .Pattern = "^\[\d+[\.]{0,1}\d*\]$"
 For Each r In ActiveSheet.UsedRange
 If .Test(r.Value) Then r.Value = Mid(r.Value, 2, Len(r.Value) - 2)
 Next
 End With
 Set RegExp = Nothing
End Sub

ramumu1031さんのコメント
早速ご回答ありがとうございました。 実行してみたところ、一部しか置換できません。 ちなみに、処理したい範囲は、C4セル?FR309(この範囲は随時確定ではありません)というように、膨大な数値です。 どこをどのようにしたら、1シート全てが一括置換されるようになるのか、ご教示ねがいます。

Mookさんのコメント
一応シートの全範囲が対象だと思うのですが、 >|vb| Sub 使用範囲() MsgBox ActiveSheet.UsedRange.AddressLocal End Sub ||< を動かして表示される範囲は全体を含んでいないでしょうか。

ramumu1031さんのコメント
上記を実行すると、範囲が全体を含んでいます。確認できました。 しかし、先のvbaを動かすと一部しか置換できないというのは、どこか私の作業が悪いと思います。 先のvbaを参考にし、自分で頑張ってみます。 それでも、解決できないときは、また改めて質問を立てます。 Mookさん、ありがとうございました。

Mookさんのコメント
ここのコメントでも対応しますので、問題があるようでしたらコメントしてください。 ポイントありがとうございました。 ひとつ気になったのは、上のコードはセルのデータの前後に空白があったり[]や< が全角であると対象とみなさないので、そのようなデータがないか確認してはどうかと思います。

ramumu1031さんのコメント
Mookさん、全角です。 どうすれば、回避できるのでしょうか。 すみませんが、その部分の回避方法をお教えいただけますでしょうか。 宜しくお願いいたします。

ramumu1031さんのコメント
Mookさん、回避できました。 ありがとうございました。
関連質問

●質問をもっと探す●



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