「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) アイエルアイ総合研究所 無断転載を禁じます