
エクセルのセル内の「数式」の一括変更を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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) マクロ/VBAについて教えてください。 10 2022/05/27 12:59
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
このQ&Aを見た人はこんなQ&Aも見ています
-
数式の置換がうまく行かない
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
-
4
VBAでセル入力の数式に変数を用いたい
Excel(エクセル)
-
5
Excel vbaで特定の文字以外が入っている時、メッセージを表示させるプログラムについて
Visual Basic(VBA)
-
6
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
7
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
8
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
9
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
12
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
13
エクセル 置換中の値の更新
Word(ワード)
-
14
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
15
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
16
エクセル 値の更新
その他(Microsoft Office)
-
17
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
18
EXCELで別のブックから式をコピーしたときにブック名がついてきてしまうのですが
Excel(エクセル)
-
19
参照元のブック名の変更を自動的に式に反映させたい
Access(アクセス)
-
20
シート全体を他のブックのシートとリンクさせたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
vbsでのwebフォームへの入力制限?
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのマクロについて教え...
-
VBAの「To」という語句について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
Excelマクロで使うVBAコードを...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
改行文字「vbCrLf」とは
-
testファイル内にある複数のpng...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】5万行以上のデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報