Excelで結合したセルからのオフセット参照でつまずいた話。

投稿日:

どハマリ・・・
オフセットは便利なんだけど曲者だった。

Excelでオフセット参照をしようとして、悩みに悩んだ話w

オフセットって何よってところから・・・

オフセットって何?

オフセットって、ざっくり言うと相対位置を参照する時に使うものっていう認識でいいのかな?
だから、A1セルを選択しているときのオフセットで2列2行を参照しようとすると、C3セルになる。

これは、感覚的にも分かりやすいかな。

縦横方向の相対位置だから、C3セルを基準にすると、
B2セルは「-1,-1」だし、

D4セルは「1,1」。

B3セルは「0,-1」となる。

Excel上では、下方向にプラス、右方向にプラス、その逆はそれぞれマイナスとなる。

まぁ、Excelの場合、画面の下を向いて、いくつセルを移動すればいいのか?みたいな感じ。

結合が絡むとややこしくなる

理屈が分かれば別にややこしくないんだけど、結合したセルが絡んだ時に同じオフセットで異なるセルを参照することになる。

先ほどと同じようにC3セルを選択した状態で、オフセットを表示してみると。

分かりやすいように罫線で囲ったけど、D4~E5セルは結合してあります。
多分、表示しているオフセットも予想通りだったかと。

では、次のパターン。
次は、結合したセルD4:E5のセルを選択した状態で、オフセットを表示します。

どうでした?
予想通りでしたか?
自分は、予想通りじゃありませんでした。

多分、間違えた人は、赤線で引いたセルがずれてたかと。

オフセットの考え方

あくまで、セルからの相対位置なので、

みたいな場合に気をつける必要があります。

左上のセルは、D4セルからの相対位置。
(これは、基本的に間違えない)

右上のセルはE4セルからの相対位置。
同じく、
右下のセルはE5セルからの相対位置。
左下のセルはD5セルからの相対位置。
となります。

まとめ

これを知らずにオフセットで値を取得しようとしたり、値をセットしようとすると、値を正しく取得できないし、正しくセットすることができません。
っていうか、自分がどハマリしてましたw

これ、結合だらけのExcelフォーマットを使う時なんかは、何がどこだか分からなくなる可能性が高いので、気をつけたいところ。
相対参照って、便利は便利で割りと使うんだけど、こんなはまり方をするとは思わなかった・・・

今回はExcelのマクロでは無く、C#からExcelへ出力するプログラムを作っている最中にぶち当たってしまい、2時間ほど悩んでましたね。
Excelのマクロでやるときも理屈は同じなので、自分のメモのためにも整理を兼ねて記事にしました。







-Excel

関連記事

Excelで任意の位置に画像を貼り付ける方法

Excelで資料を作る際、ほぼ必須だと思う作業の1つが、画像の貼付。 基本的には、Excelのセルを選んだところに画像は貼り付く・・・はずなんです。 が、場合によっては、セルの位置に張り付かず、A1セ …

[Access]埋め込みマクロのChrW関数で表現された文字列を得る方法

  困ったので調べたことを。 事の発端は、社内で作成されたAccessの引継ぎをしたこと。 埋め込みマクロの存在・・・ 担当者は自分だけじゃないので、みんなで困ったのが、表題の通り埋め込みマ …

[Excel]空白の時に0ではなく、空白のままにする方法(IF関数不使用)

Excelを編集している時に、空白になって欲しいところが「0」と表示されてしまい、ぬぁぁぁっ~ってなることが多々あります。 特に、そんなときの対処法です。 普通にIF関数 タイトルにIF関数不使用って …

Excelマクロのエラーだと思ったら、単に使い方が間違っていた話・・・

タイトルのようにExcelマクロのエラーだと思って四苦八苦してたら、結局、使い方を間違えていたっていう話。 使用方法はよく読みましょうw   他部署に連携しての作業の進捗管理を頼まれたこと …

Excelのシートが表示されなくなった時の対処法

Excelのシートが表示されなくなった! なんか、少しだけいつものExcelの画面と違いませんか? 人によっては、見慣れた画面かもしれませんが、左下にあるべきものがありません・・・ ちなみに、シートを …


カテゴリー