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

Excelでシートをコピーする時に、「名前が既に存在します。」と言われるのを回避して、Excel出力を早くしたい。

結論から書いてしまうと、名前の重複を削除しても、Excelの出力は別に早くならなかった。 早くなるという意味だと、手動でシートをコピーした時に、いちいちダイアログの対応をしなくて済むので、自分で作業し …

EXCELで名前の定義を消す方法。

EXCELで名前の定義を消す方法を調べました。 普段使っている分には多分意識することは無いんだけど、先輩社員から譲りうけたファイルとか、共通で何年も使っているファイルやシートをコピーして使わなきゃいけ …

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

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

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

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


カテゴリー