エクセルのセル内の「数式」の一括変更を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.1
- 回答日時:
規則性を見出すこと!
これによってループが組める
対象セルの値(.Value)="=計算式"
対象セルや計算式に組み込まれる計算対象セルを
ループで回して指定すれば
こードが短くなる
って 質問の やりたい内容がその説明だとよくわかりません!
No.2
- 回答日時:
1の方が仰るとおり、規則性を見いだしてループを抜ける条件がハッキリしてればすぐに出来ますよ。
単純に全ての式を変更するだけなら、VBAでなく秀丸に張り付けて正規表現で置換すればすぐ終わります!
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.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.5
- 回答日時:
こんにちは。
「明日までに」ということですので、もう遅いかな。
そのようなセルのある範囲が機械的に一斉に選択できるなら(Excelのジャンプ機能のことです)
数式そのものを変更する(特に今回のような変更)は効率的でない(変更作業ではなく、Excelの関数の使い方として)ので、該当セルに条件付き書式をかませるのが一番だと思います。
今回は条件付き書式を
・ルールの種類を選択してください → 数式を使用して、書式設定するセルを決定
・ルールの内容を編集してください → 次の式を満たす場合に値を書式設定 → =not(isnumber(この書式を適用するセルのアドレス))
・書式は セルの書式設定ダイアログで ユーザー定義 種類に 「;;;"N/A"」(かぎかっこの中だけ入力してください)
とすれば対応可能と思われます。
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.7
- 回答日時:
お探しの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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
Excelで数式中の一部の数字を一括して変更できますか
Excel(エクセル)
-
-
4
エクセルで複数ファイルのセルの数式を一部置換
Excel(エクセル)
-
5
Excelの計算式内の文字列の一括置換は出来ますか
Excel(エクセル)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
エクセルVBA 数式の中に、変数で定義したシート名を入力するには
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
10
数式中の参照先のシート名の置換について
その他(Microsoft Office)
-
11
参照元のブック名の変更を自動的に式に反映させたい
Access(アクセス)
-
12
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
エクセルで、複数の参照範囲を一括で変更する方法
Excel(エクセル)
-
15
数式の置換がうまく行かない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
ユーザーフォームに別シートか...
-
VB.net(VB)で、フォームにExcel...
-
Excelのマクロについて教えてく...
-
エクセルの合計を自動で表示さ...
-
Excelのマクロでワードのテキス...
-
VBAの計算で@が出てしまう件
-
VBA listBoxから
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります メッセー...
-
Excel マクロについての相談
-
VBA レジストリの値の読み方に...
-
2つのマクロでチェックボックス...
-
Vba SelStart、SelLen教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報