
エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです!
いま=O48*($E$8/100)となっている算式を、
=IF(ISNUMBER(O48*($E$8/100)),O48*($E$8/100),"N/A")
としたいのです。
また、このような変換を行うべきセルが数百個あり、これをボタンひとつもしくは
Ctl+aなどで行えるようにしたいのです。
式の返還は単純で、最初の式をxとすると、IF(ISNUMBER(x),x,"N/A")
と置き換えるだけなので、たとえばxという変数に今のセル内の式を代入し、それから
IF~の式の指定場所にxを入れる・・・というようなプログラミング処理ができるのでは
とかんがえ、質問しました。
よいアイデアをください!!明日までにやる必要があり困っています・・・
No.4ベストアンサー
- 回答日時:
"=O48*($E$8/100)"が固定なら,検索置換でできるが,
"O48"の部分が変わるなら,つぎのようにでもする。
参考にどうぞ。
Selectionは,Rangeなどで適当に変える。
For 文の cc = 79 To 84 は"O"から"T"までにしておいたので,
これも適当に変える。
With Selection
For cc = 79 To 84
Set c = .Find("=" & Chr(cc) & "?*($E$8/100)", LookIn:=xlFormulas)
If Not c Is Nothing Then
firstAddress = c.Address
Do
cf0 = c.Formula
cf = Mid(cf0, 2, Len(cf0) - 1)
c.Formula = "=IF(ISNUMBER(" & cf & ")," & cf & ",""N/A"")"
Set c = .FindNext(c)
If c Is Nothing Then Exit Do
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
Next
End With
No.7
- 回答日時:
No.6
- 回答日時:
O48の部分がセルによって変わるかどうか質問に書いてないのは不十分。
固定なら置換でやれる。
ーー
セルの何処に式があるかわからないから
Sub test01()
For Each cl In Range("A1:H100")
If cl.HasFormula Then
MsgBox cl.Address & " " & cl.Formula
'処理
End If
Next
End Sub
を試しにやってごらん。Range("A1:H100")を狭い範囲でやってみて、式の在るセルを捉えることを納得してみること。本番では実情に応じてこの範囲は変える。Msgboxの行は省く。
処理の部分だが、
f = cl.Formula
f = Right(f, Len(f) - 1) '=を省く
cl.Formula = "=IF(ISNUMBER(" & f & ")," & f & ",N/A)"
で旨くいくか、やってみてください。
No.5
- 回答日時:
こんにちは。
「明日までに」ということですので、もう遅いかな。
そのようなセルのある範囲が機械的に一斉に選択できるなら(Excelのジャンプ機能のことです)
数式そのものを変更する(特に今回のような変更)は効率的でない(変更作業ではなく、Excelの関数の使い方として)ので、該当セルに条件付き書式をかませるのが一番だと思います。
今回は条件付き書式を
・ルールの種類を選択してください → 数式を使用して、書式設定するセルを決定
・ルールの内容を編集してください → 次の式を満たす場合に値を書式設定 → =not(isnumber(この書式を適用するセルのアドレス))
・書式は セルの書式設定ダイアログで ユーザー定義 種類に 「;;;"N/A"」(かぎかっこの中だけ入力してください)
とすれば対応可能と思われます。
No.3
- 回答日時:
計算式のあるセルをすべて置き換えるのでしたら
Dim ExchangeRange As Range
For Each ExchangeRange In Range("a:z")
If ExchangeRange.HasFormula = True Then
ExchangeRange.Formula = "=IF(ISNUMBER(" & Right(ExchangeRange.Formula, Len(ExchangeRange.Formula) - 1) _
& ")," & Right(ExchangeRange.Formula, Len(ExchangeRange.Formula) - 1) & ",""N/A"")"
End If
Next
こんな感じで
In Range("a:z")
のa:zを適当に変更してください。
No.2
- 回答日時:
1の方が仰るとおり、規則性を見いだしてループを抜ける条件がハッキリしてればすぐに出来ますよ。
単純に全ての式を変更するだけなら、VBAでなく秀丸に張り付けて正規表現で置換すればすぐ終わります!
No.1
- 回答日時:
規則性を見出すこと!
これによってループが組める
対象セルの値(.Value)="=計算式"
対象セルや計算式に組み込まれる計算対象セルを
ループで回して指定すれば
こードが短くなる
って 質問の やりたい内容がその説明だとよくわかりません!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
数式の置換がうまく行かない
Excel(エクセル)
-
参照元のブック名の変更を自動的に式に反映させたい
Access(アクセス)
-
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
-
4
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
5
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
6
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
7
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
Excel vbaで特定の文字以外が入っている時、メッセージを表示させるプログラムについて
Visual Basic(VBA)
-
10
Excelで数式中の一部の数字を一括して変更できますか
Excel(エクセル)
-
11
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
12
VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。
Visual Basic(VBA)
-
13
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
14
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
17
エクセル 置換中の値の更新
Word(ワード)
-
18
Excel VBA:リンクの更新
Excel(エクセル)
-
19
Excel VBA マクロ処理 リンク先参照変更方法
Visual Basic(VBA)
-
20
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
エクセルの改行について
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Vba FileSystemObject オブジェ...
-
VBA ユーザーフォーム ボタンク...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBA 入力箇所指定方法
-
vb.net(vs2022)のtextboxのデザ...
-
[Excel VBA]特定の条件で文字を...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
VBA 最終行の取得がうまくいか...
-
Excel マクロについて詳しい方...
-
エクセルのVBAコードと数式につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報