![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセルのセル内の「数式」の一括変更を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で数式中の一部の数字を一括して変更できますか
Excel(エクセル)
-
参照元のブック名の変更を自動的に式に反映させたい
Access(アクセス)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
-
4
数式の置換がうまく行かない
Excel(エクセル)
-
5
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
エクセルで複数ファイルのセルの数式を一部置換
Excel(エクセル)
-
10
数式中の参照先のシート名の置換について
その他(Microsoft Office)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
エクセルで、月によって参照するシートを自動的に変える関数
Excel(エクセル)
-
13
フォルダ内ブックの数式を全て値に変換するマクロ?
Excel(エクセル)
-
14
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
エクセルで、複数の参照範囲を一括で変更する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダに格納されている...
-
IF文、条件分岐の整理方法
-
VBAコードのインデント表示
-
A列に記載されているフォルダ...
-
VB.net(VB)で、フォームにExcel...
-
VBAなくなるの?
-
【ExcelVBA】インデックスが有...
-
vba アクティブシートの名前変...
-
vba 削除
-
エクセルのマクロについて教え...
-
エクセルVBAにて =A1=B1とすれ...
-
VBA 別ブックから条件に合うも...
-
時間短縮のために、テキストフ...
-
ワードVBA どの表か知ることは...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
VBA指定行削除
-
VBAで大量のファイルをシート名...
-
VBA 別ブックからコピペしたい...
-
配列のペースト出力結果の書式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報