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