「StiLL」デザイン情報157 開発--ADDRESS関数を活用しよう | ||||||||||||||||||
■ セルリンクボタンでセル位置を指定したとき、そのセルの位置を変えるとセルリンクボタンの指定も直さなければならず面倒と感じたことはありませんか?そのような時は、Excelの ADDRESS関数 を使うことで問題が解決します。 | ■ 今回は関数を使用して 「単一セルの指定」「セル範囲の指定」 「複数セルの指定」「列指定」「行指定」 の方法をご紹介します。 |
※ ご注意ください。セル位置を返す関数として CELL関数 もありますが、プログラムの実行中に間違えたセル位置を返すことがありますので、ADDRESS関数をご利用いただくことをお勧めします。 | ||||||||||||||||
対応Ver. :StiLL
V9.1以降 対応種類:StiLL Dev・Pro |
対応Ver. :StiLL
V9.1以降 対応種類:StiLL Dev・Pro |
対応Ver. :StiLL
V9.1以降 対応種類:StiLL Dev・Pro |
||||||||||||||||
■ 今回の内容 | ||||||||||||||||||
セルリンクの設定値に対象セルを指定する際、対象のセル値を直接記入すると、 | ||||||||||||||||||
そのセルが移動するたびに、セルリンクボタンの設定内容を変更しなければなりません。 | ||||||||||||||||||
そこで直接セル値を記入するのではなく、ADDRESS関数を使い対象セルをリンクさせることで、 | ||||||||||||||||||
対象セルが移動しても、セルリンクボタンの設定内容を変更しなくてすみます。 | ||||||||||||||||||
![]() |
||||||||||||||||||
例)2行目に行を挿入し、セルが移動しても・・・ | ||||||||||||||||||
ADDRESS関数で指定していればセル位置を入力し直さずにすみます。 | ||||||||||||||||||
今回は5種類の指定方法をご紹介します。 | ||||||||||||||||||
1) 1つのセルを指定 | ||||||||||||||||||
2) 範囲を指定 | ||||||||||||||||||
3) 複数セルを指定 | ||||||||||||||||||
4) 列を指定 | ||||||||||||||||||
5) 行を指定 | ||||||||||||||||||
また、ADDRESS関数の詳細につきましては | ||||||||||||||||||
弊社配信の 「Excelメールサービス」 のバックナンバーにも記載していますのでぜひご参照ください。 | ||||||||||||||||||
【Excelメールサービス バックナンバー178】関数--可変するセルの位置や値を調べる | ||||||||||||||||||
■ 設定方法 | ||||||||||||||||||
1) | 1つのセルを指定 | |||||||||||||||||
1つのセルを指定したい場合はADDRESS関数を1つ使います。 | ||||||||||||||||||
![]() |
||||||||||||||||||
数式: | =ADDRESS(ROW(入力表!C10),COLUMN(入力表!C10),4,TRUE,"入力表") | |||||||||||||||||
またシート名をどこか1か所にリンクさせておけば、シート名が変わった場合でもリンク先だけ変えれば大丈夫です。 | ||||||||||||||||||
システムテンプレートの 「プログラムシートU」 にはシート名を記述しておくスペースがあります。 | ||||||||||||||||||
![]() |
||||||||||||||||||
数式: | =ADDRESS(ROW(入力表!A1),COLUMN(入力表!A1),4,TRUE,$D$3) | |||||||||||||||||
2) | 範囲を指定 | |||||||||||||||||
範囲を指定したい場合は コロン(:)を使い、2つのADDRESS関数をつなぎます。 | ||||||||||||||||||
コロンでつなげる場合は、2つ目のADDRESS関数にはシート名を指定しません。 | ||||||||||||||||||
![]() |
||||||||||||||||||
数式: | =ADDRESS(ROW(入力表!A1),COLUMN(入力表!A1),4,TRUE,"入力表")&":"& ADDRESS(ROW(入力表!C3),COLUMN(入力表!C3),4,TRUE) |
|||||||||||||||||
3) | 複数セルを指定 | |||||||||||||||||
複数のセルを指定したい場合は カンマ(,)を使い複数のADDRESS関数をつなぎます。 | ||||||||||||||||||
カンマでつなげる場合は、全てのADDRESS関数にシート名を指定します。 | ||||||||||||||||||
![]() |
||||||||||||||||||
数式: | =ADDRESS(ROW(入力表!A1),COLUMN(入力表!A1),4,TRUE,"入力表")&","& ADDRESS(ROW(入力表!B2),COLUMN(入力表!B2),4,TRUE,"入力表")&","& ADDRESS(ROW(入力表!C3),COLUMN(入力表!C3),4,TRUE,"入力表") |
|||||||||||||||||
4) | 列を指定 | |||||||||||||||||
列を指定したい場合は上の(2)の手順のように範囲指定をした後、 | ||||||||||||||||||
SUBSTITUTE関数で行番号の数字を消します。 | ||||||||||||||||||
ADDRESS関数の [行番号] には置き換えしやすいようにダミーの数字を入れます。 | ||||||||||||||||||
(シート名に数字が含まれている場合、SUBSTITUTE関数でシート名を変更してしまわないようご注意ください) | ||||||||||||||||||
![]() |
||||||||||||||||||
数式: | =SUBSTITUTE(ADDRESS(9999,COLUMN(入力表!A1),4,TRUE,"入力表")&":"& ADDRESS(9999,COLUMN(入力表!C1),4,TRUE),9999,"") |
|||||||||||||||||
5) | 行を指定 | |||||||||||||||||
ADDRESS関数は使用しませんがROW関数を使い、行の指定をすることができます。 | ||||||||||||||||||
コロン(:)を使い、2つのROW関数をつなぎます。 | ||||||||||||||||||
![]() |
||||||||||||||||||
ご注意下さい | ||||||||||||||||||
シート名にスペースや記号を含むときなどは | ||||||||||||||||||
シート名を シングルクォーテーション(') | ||||||||||||||||||
でくくる必要があります。 | ||||||||||||||||||
例:'Sheet(1)'!A1 | ||||||||||||||||||
数式: | ="入力表!"&ROW(入力表!A1)&":"&ROW(入力表!A3) | |||||||||||||||||
■ ご参考までに | ||||||||||||||||||
ADDRESS関数の中で指定したセルが削除されると #REF エラーになってしまいます。 | ||||||||||||||||||
プログラムの途中でセルを削除する処理があるときなどは、セルの参照の仕方を工夫する必要があります。 | ||||||||||||||||||
例)入力表シートのA2セルをADDRESS関数で指定したいが、 | ||||||||||||||||||
別の処理で2行目を行削除する処理がある場合 | ||||||||||||||||||
数式: | =ADDRESS(ROW(入力表!A1)+1,COLUMN(入力表!A1),4,TRUE,"入力表") | |||||||||||||||||
※ ご注意ください | ||||||||||||||||||
セル位置を返す関数として CELL関数 もありますが、プログラムの実行中に間違えたセル位置を返すことがありますので、 | ||||||||||||||||||
ADDRESS関数をご利用いただくことをお勧めします。 | ||||||||||||||||||
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます |