=IF(Sheet1!$A$1="", "", Sheet1!$A$1) というように0を0として表示させたいので、
式を長く変形したいです。
=Sheet1!$A$1 セルには右のような式が入っています。うまくマクロを使って
対応するたくさんのセルに関して
変形できないでしょうか。
A2のセルにA6の絶対参照が入っているようなこともあるのでマクロでしたいと思います。
相対参照⇔絶対参照はできるようになりましたが、式変形に関してのマクロの知識がありません。
変換でもできないようなのでどうしたらよいのか困ってます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
>=Sheet1!$A$1 セルには右のような式
これは、左ですね。探してしまいました。
それで、どのような内容にするのか分かりませんから、
仮の方法を教えておきます。なお、これ以上に複雑なものに関しては、正規表現を使って変換します。
ConvertFormulaのメソッドを使います。
'ConvertFormula(Formula, FromReferenceStyle, ToReferenceStyle, ToAbsolute, RelativeTo)
FromReferenceStyle: xlA1/xlR1C1
ToReferenceStyle : xlA1/xlR1C1
ToAbsolute
--------------
xlAbsolute 1
xlAbsRowRelColumn 2
xlRelRowAbsColumn 3
xlRelative 4
-------------
RelativeTo
------------
起点となるセル/ R1C1 型から変換する時
-----------
仕様
xlAbsolute = "選択範囲のセル参照を、絶対参照($A$1)に一括変換します。"
xlAbsRowRelColumn = "選択範囲のセル参照を、行は絶対参照、列は相対参照(A$1)に一括変換します。"
xlRelRowAbsColumn = "選択範囲のセル参照を、行は相対参照、列は絶対参照($A1)に一括変換します。"
xlRelative = "選択範囲のセル参照を、相対参照(A1)に一括変換します。"
'//絶対参照から相対参照にする場合。
Sub SampleMacroFormulaConvert()
Dim c As Range
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If c.HasFormula Then
c.FormulaLocal = Application.ConvertFormula(c.Formula, xlA1, xlA1, xlRelative)
End If
Next
End Sub
Formulaの文を使っていくつかトライしましたが、うまくいきませんでした。しかし、目前の問題は、コピーアンドペーストで解決しました。絶対参照にしていたので、うまくコピーアンドペーストができなかったようです。
絶対参照から相対参照にするマクロは便利ですね。ストックしておきます。ありがとうございました。
No.2
- 回答日時:
こんにちは
セルの参照式が
=○○ (○○はセルの参照)
となっているものを、一括で
=IF(○○="", "", ○○)
という形に変更なさりたいということと解釈しました。
以下は単純なセル参照が設定されている場合に、関数式を上記のように変更するマクロです。(処理対象範囲は適宜設定してください)
Sub Sample()
Dim c As Range
Dim tmp As Range
Dim addr As String
Const TargetRange = "A1:E50" '←処理対象の範囲を指定
For Each c In Range(TargetRange)
If c.HasFormula Then
addr = Mid(c.Formula, 2)
On Error Resume Next
Set tmp = Range(addr)
If Err.Number = 0 And tmp.Count = 1 Then
c.Formula = "=IF(" & addr & "="""", """"," & addr & ")"
End If
On Error GoTo 0
End If
Next
End Sub
※ 単純参照の式であることのチェックを外せば、一般式の場合でも同様の変更が可能になりますが、使い方を間違えるとおかしなことになるので、単純参照の場合だけに限定してあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/20 16:37
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) エクセルの複数のセルを一括で絶対参照にする方法 3 2023/06/14 15:57
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba 実数および実数タイプの変...
-
Excelのマクロについて教えてく...
-
VBA レジストリの値の読み方に...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
Excel VBA 定義されたプロージ...
-
Vba SelStart、SelLen教えてく...
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
VBAの質問になります メッセー...
-
ユーザーフォームに別シートか...
-
2つのマクロでチェックボックス...
-
VBA listBoxから
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります Userform内で
-
Excelについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報