「vba ワークシート関数を入力する if」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ワークシート関数のIF関数を使った数式を、
VBA(Visual Basic for Applications)から、入力するにはどうすればいいのかを探している方による検索でしょうか。
例えば、B1セルに、
「=IF(A1>=80, "合格", "")」
という、A1セルの値が80以上だったときに「合格」、そうでなかったら何も表示しない、という数式を入力する操作を、マクロ記録してみると、
ActiveCell.FormulaR1C1 = "=IF(RC[-1]>=80, ""合格"","""")"
というコードが作られます。
FormulaR1C1プロパティを使った「RC[-1]>=80」といった数式と、「"」(ダブルクォーテーション)がたくさん並ぶため、プログラミングやVBAに慣れていない方の、投げ出したくなる気持ちもわかります。
FomulaR1C1ではなくFormulaでOK
マクロ記録を使うとFormulaR1C1プロパティを使った数式が作成されますが、Formulaプロパティを使った数式でも、まったく問題ないということを、まずは知ってください。
Range("B1").Formula = "=IF(A1>=80, ""合格"", """")"
End Sub
代入文の左辺「"=IF(A1>=80, ""合格"", """")"」の中、
「=IF(A1>=80, )」
の部分だけに注目しましょう。
通常ワークシート上にIF関数を入力するときとまったく同じ文字列が並んでいます。
FormulaR1C1プロパティを使った「=IF(RC[-1]>=80, 」といったコードの場合、R1C1形式に慣れていない方にとって難易度は上がってしまいますが、「=IF(A1>=80, )」ならワークシート関数のIF関数を使える方ならば、まったく問題ないはずです。
VBAからダブルクォーテーション1個を入力するにはダブルクォーテーションを2個書く
あとは、代入文の右辺「"=IF(A1>=80, ""合格"", """")"」の後半
「 ""合格"", """")」
に、たくさん並ぶ「"」(ダブルクォーテーション)です。
VBAの中で、「"」ダブルクォーテーション1個を入力するためには、「""」のようにダブルクォーテーションを2個書きます。
IF関数を使った数式
「=IF(A1>=80, "合格", "")」の中の、
第2引数「"合格"」の部分を
VBAから入力するために、
「""合格""」
(ダブルクォーテーション2個 合格 ダブルクォーテーション2個)
第3引数「""」(ダブルクォーテーション2個)の部分を
VBAから入力するために
「""""」
(ダブルクォーテーション4個)
を、それぞれ指定しています。
これが、代入文の右辺の「"=IF(A1>=80, ""合格"", """")"」の後半「 ""合格"", """")」です。
複数のセルにIF関数を使った数式を一括入力する
なお、
B1:B10セルに「=IF(A1>=80, "合格", "")」といった相対参照の数式を一気に入力するには、
Range("B1:B10").Formula = "=IF(A1>=80, ""合格"", """")"
というコードでOKです。ループを回す必要はありません。
もちろん、代入文の左辺側は、Rangeプロパティの引数を2つ指定する
Range("B1", "B10").Formula = "=IF(A1>=80, ""合格"", """")"
でもOKです。
- Newer:表の最大列数を取得するWordマクロ
- Older:効率の良い入力や知らなかったショートカットキーも覚えられた
Home » Excel VBA Rangeオブジェクト » セル数式 » VBAからIF関数を入力する