- 公開日:
エクセルの最終列を取得する関数
この記事では、エクセルの最終列を取得する関数をご紹介します。
VBAなどを使う際、最終列の列番号が必要になることがあります。大きなデータの場合は数えるのが大変ですが、関数を使うと簡単に求めることができます。
以下では、空白列がある場合と空白列がない場合の最終列の「列番号」と「値」を取得する関数をご紹介します。
エクセルの最終列を取得する関数
エクセルの最終列を取得して任意のセルに列番号を表示する方法をご紹介します。
空白列がない場合に最終列の列番号を取得する関数
空白列がない場合に最終列の「列番号」を取得するためには、「COUNTA関数」を使います。
COUNTA関数の書式は「=COUNTA(値1,値2,…)」です。引数や使い方については、以下の記事をご参照ください。
ExcelのCOUNTA関数の使い方|空白ではないセルの個数を返す
以下では、空白列がない場合に最終列の「列番号」を取得して任意のセルに表示方法をご紹介します。

今回は、上記の画像のような1行目に見出しが入力されたシートを使用して、1行目でデータが入力された最終列の列番号を取得する方法をご紹介します。

任意のセル(例:B19セル)を選択し、「=COUNTA(1:1)」と入力し、Enterを押します。
COUNTA関数はセル範囲に含まれる空白ではないセルの個数を返す関数です。

今回は「山形」が入力されたF列が最終列なので、列番号として「6」と表示されました。
試しに1行目にデータを追加してみます。G1セルを選択して、「福島」と入力し、Enterを押します。

データを追加したことで1行目の最終列がG列目になったため、B9セルの結果も「7」に更新されました。
COUNTA関数を使って最終列の列番号を取得することが出来ました。
空白列がある場合に最終列の列番号を取得する関数
空白列がある場合に最終列の「列番号」を取得するには、対象の範囲から最大値を抽出する「MAX関数」と指定したセルの列番号を求める「COLUMN関数」を組み合わせて使います。
MAX関数の書式は「=MAX(数値1,数値2,…)」です。引数や使い方については、以下の記事をご参照ください。
COLUMN関数の書式は「=COLUMN([参照])」です。引数や使い方については、以下の記事をご参照ください。
ExcelのCOLUMN関数の使い方|指定したセルの列番号を求める
以下では、空白列がある場合に最終列の列番号を取得して任意のセルに表示する方法をご紹介します。

今回は上記の画像のシートを使って、空白列を含んでいる1行目からデータが入力された最後の列の列番号を取得します。
1行目はC列、E列、G列、I列が空白になっています。

任意のセル(例:B9セル)を選択し、「=MAX((A1:J1<>"")*COLUMN(A1:J1))」と入力し、Enterを押します。
「=MAX((A1:J1<>"")*COLUMN(A1:J1))」で、「1行目の”データが入力されているセル”の中で最大の列番号」を取得することが出来ます。

今回は「山形」が入力されたJ列が最終列なので、列番号として「10」と表示されました。
試しに1行目にデータを追加してみます。
L1セルを選択し、「福島」と入力して、Enterを押します。

最終列がL列になったので、関数で取得した行番号も「12」に変更されました。
「MAX関数」と「COLUMN関数」を組み合わせることで空白列を含む1行目の中で最終列の列番号を取得することができました。
最終列の値を取得する
エクセルで最終列に入力された値を任意のセルに表示する関数をご紹介します。
空白列がない場合に最終列の値を取得する関数
最終列の「値」を取得するには、指定した行と列が交差する位置にあるセルを抽出する関数である「INDEX関数」と「COUNTA関数」を組み合わせて使います。
INDEX関数の書式は、「=INDEX(配列,行番号,列番号)」です。引数の詳細や使用例等については、以下の記事をご参照ください。
ExcelのINDEX関数の使い方|行と列が交差する位置にあるセルを返す
以下では、最終列に入力したの「値」を取得して任意のセルに表示する方法をご紹介します。

今回は、上記の画像のシートを使って1行目の最終列の値を取得します。

任意のセル(例:B9セル)を選択し、「=INDEX(1:1,COUNTA(1:1))」と入力し、Enterを押します。
「=INDEX(1:1,COUNTA(1:1))」で、「1行目の”空白でない最後のセル”の値」を取得することが出来ます。

最終列の値を取得することができました。
試しにG列にデータを追加してみます。
G1セルを選択し、「福島」と入力して、Enterを押します。

G列の「福島」が最終列の値になったため、関数で取得した値も「福島」に変更されました。
空白列がある場合に最終列の値を取得する関数
空白がある列で最終列の「値」を取得するためには、「INDEX関数」と「MAX関数」と「COLUMN関数」を組み合わせて使います。
以下では、空白がある列で最終列の「値」を取得して任意のセルに表示する方法をご紹介します。

今回は、上記の画像のシートを使ってA列の行から最終列の値を取得します。
1行目はC列、E列、G列、I列が空白になっています。

任意のセル(例:B9セル)を選択し、「=INDEX(1:1,MAX((1:1<>””)*COLUMN(1:1)))」と入力し、Enterを押します。
「=INDEX(1:1,MAX((1:1<>””)*COLUMN(1:1)))」で、「1行目の”何か入力されているセル”の中で一番大きい列番号の値」を取得することが出来ます。

空白列を含む列の中で最終列の値を取得することができました。
試しにL列にデータを追加してみます。
L1セルを選択し、「福島」と入力して、Enterを押します。

L列の「福島」が最終列の値になったため、関数で取得した値も「福島」に変更されました。
空白を含む列の最終列の値を取得することができました。