Excel VBAでセルがスピル範囲かどうかを判定する方法|Spill対応関数の活用

Excel 365以降では、動的配列(スピル)によって、1つの数式から複数セルにわたる結果を自動的に展開できるようになりました。
このスピル機能は非常に便利ですが、VBAを使ってスピル範囲かどうかを判別したい場面もあります。

本記事では、VBAを使ってセルがスピルの一部かどうかを判定し、その起点セルを取得する方法をご紹介いたします。


目次

想定される活用場面

  • スピル結果のセルであるかを判別し、起点セルを取得したい。
  • スピル範囲を自動でハイライト表示したい。
  • スピルを含むシート構造の自動チェックやデバッグを行いたい。

VBAコードの例

以下のコードは、選択中のセルがスピル範囲であるかどうかを判定し、起点セルのアドレスをメッセージで表示します。

Sub CheckIfSpillCell()

    Dim targetCell As Range

    Set targetCell = ActiveCell

    If targetCell.HasSpill Then
        MsgBox "このセルはスピル範囲の一部です。" & vbCrLf & _
               "スピルの起点セル:" & targetCell.SpillParent.Address, vbInformation
    Else
        MsgBox "このセルはスピル範囲ではありません。", vbExclamation
    End If

End Sub

コードのポイント解説

機能説明
HasSpill対象のセルがスピル範囲の一部かどうかを判定するプロパティです(True/Falseを返します)。
SpillParentスピルの起点(元となる数式が入力されているセル)を返します。
ActiveCell現在選択中のセルを対象としています。必要に応じて任意のセルへ変更可能です。

注意点

  • HasSpillプロパティとSpillParentプロパティは**Excel 365以降(動的配列対応版)**でのみ利用可能です。古いバージョンのExcelでは使用できません。
  • 起点セルとスピル範囲の関係は、削除・上書き・再計算などによって動的に変化するため、処理タイミングにはご注意ください。

まとめ

Excel VBAを使えば、セルがスピル範囲に属しているかどうかを簡単に判定し、その起点セルを取得することができます。
スピルを用いた関数や処理は、見た目にはシンプルでも裏で広い範囲に影響を与えていることがあるため、このようなチェック機能はエラートラップやデータ検証にも非常に有効です。

スピル機能を活用した高度な処理や、可視性の高いデータ構造を構築する上で、ぜひこの手法を取り入れてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次