和風スパゲティのレシピ

日本語でコーディングするExcelVBA

シート関数・VBA関数

Findは遅くて非表示に弱くてユーザー操作の影響を受ける

検索によく用いられるFindメソッドさんですが、実は危なくて遅い地雷メソッドです。非表示セルを見つけられない、ユーザーと設定を共有する、MATCH関数より十数倍レベルで遅い、の三重苦なので、なるべく使わないようにしましょう。

Function名に句読点を使うとシート上で呼べなくなる

Functionプロシージャの名前に句読点を使用すると、ワークシート上でユーザー定義関数として呼び出せなくなります。読点「、」とカンマ「,」、句点「。」とピリオド「.」が自動変換されることが原因のように思えますが定かではありません。

Replace関数とReplaceメソッドの違い

ExcelVBAにおいて文字列を置換する処理に使う、Replace関数とReplaceメソッドの違いを解説します。Replace関数には、「シート関数のREPLACE」と、「VBA関数のReplace」の2つがありますので、ここでは3つのReplaceについて解説します。

WorksheetFunctionの呼び出しを短縮する方法

WorksheetFunctionはとても便利ですが、コードが長いという弱点があります。そこで、WorksheetFunctionオブジェクトをそのまま返すだけの関数をWfやFxなど短い関数名で作っておけば、その関数名だけでWorksheetFunctionを呼び出せます。

掛算を置換するとワイルドカード*と認識される

あいまい検索に使用するワイルドカード「*」と、掛け算に使用する「*」は同じ文字です。よって、掛け算を置換する際に、「*」も含めた置換をすると、*の部分は任意の文字列のため、置換が暴走します。「~*」とすることで、記号をターゲットに置換できます。

セルの数式をVBAで入力する - Formulaプロパティの使い方

セルの数式をVBAで入力するための「Formulaプロパティ」の使い方を解説します。Range("D10").Formula = "=SUM(D4:D9)"のように、数式をRangeオブジェクトのFormulaプロパティに代入することで、数式をVBAから入力することができます。

シート関数をVBA上で計算する - WorksheetFunctionオブジェクトの使い方

ワークシート関数をVBA上で計算するWorksheetFunctionオブジェクトの使い方を解説します。自分でコードを書くと大変だけど、関数だと1発で書けるというメリットに加え、シート関数は自分で書くより圧倒的に高速です。積極的に使っていきましょう。

VLOOKUP関数を高速化する方法2選

VLOOKUPの高速化手法は、《簡単》データが連続していることを活用した計算スキップ法と、《超高速》ソート済であることを活用した近似一致法の2種類があります。どちらも使いこなせばとても便利ですので、是非習得していってください。

数式を値に固定してついでに#N/Aも消すマクロ

数式を値に固定したあと、#N/Aエラーを消去するマクロを紹介します。何がやりたいかは明らかですね(笑)お忙しい方は、ソースコードをコピーして、使い方例のように実行しちゃえばOKです。コードをしっかり読みたい方は、解説もどうぞ。

セル範囲にシート関数をコピーする - 基本構文とサンプルコード

セルに入力されたシート関数を、VBAを使って別のセル範囲へコピーする方法を紹介します。D2=B2*C2と入力し、これをD列全体にコピーするには、そもそもコピーする必要もなく一気に「Range("D2:D7").Formula = "=B2*C2"」でOKです。

IIf関数の使い方 - 基本構文とサンプルコード

便利なのに知名度のイマイチな関数「IIf関数」を紹介します。IIf([条件式], [Trueのときの値], [Falseのときの値])と書きます。IIf関数は初めて見る方でも、()の中身はよく見たことがあると思います。早い話、「シート関数のIF」が、IIf関数です。

VALUE関数とVal関数(とCDbl関数)の違い

VBAの関数「Val関数」と、ワークシート関数「VALUE関数」の違いを解説します。とその前に、実はVALUEとValはほとんど違う関数です。ワークシートのVALUE関数と対応するVBAの関数は、Val関数ではなくCDbl関数ですので、それを念頭に解説をどうぞ。

IsNumeric関数とISNUMBER関数の違い

VBAの関数「IsNumeric」と、ワークシート関数「ISNUMBER」の違いを解説します。両方とも数値かどうかを判定しますが、IsNumericの方が条件が緩く「数値に見ることができる⇒True」、ISNUMBERの方が条件が厳しく「完璧に数値⇒True」という違いがあります。