エクセルでのオフセット関数の使用

  • これを共有
Hugh West

今日ご紹介するのは エクセルのOFFSET関数 を3つの実例で紹介します。

まず、数式の構文を説明し、次にOFFSET関数が実際の問題解決にどのように利用できるかをお話しします。

はじめに

OFFSET関数は、他のセル(参照セル)や範囲(参照範囲)から指定した行数・列数だけ離れたセル(ターゲットセルと呼ぶことにします)や範囲(ターゲット範囲)への参照を返すことができます。

下図は、OFFSET 関数を使って、セル(左部)または範囲(右部)の参照を返す方法を示しています。

何がターゲットセルで何がリファレンスセルなのか、直感的にわかるようになります。

緑色でハイライトされているセルがターゲットセルで、黄色でハイライトされているセルがターゲット範囲となります。

青色でハイライトされているセルは、リファレンスセルです。

図1

エクセル(構文)で「OFFSET」の意味とは?

以下は、オフセット関数の構文です。 オフセット (参照, 行, 列, [高さ], [幅])

参考 必要です。 参照は、オフセットの開始点となるセルまたはセル範囲です。 セル範囲を指定する場合は、セルが互いに隣接している必要があることに注意してください。
必須 行数、上または下、参照セルまたは参照範囲の左上セル。 図1の左側を見てください。 OFFSET (C3, -1, -1) とすれば、B2がターゲットとなります。 B2はC3の1行上にあります。
コーンズ 必要です。 参照セルまたは参照範囲の左上セルから左右に何列分あるかを示す。 引数の値は コーンズ は正負の値をとることができます。 B4を参照セル、C3を対象セルとした場合、OFFSET関数はどのように書けばよいでしょうか。 答えはOFFSET (B4, -1, 1) です。 ここで、Colsは正、C3はB4より1列右側にあることが分かります。
高さ オプションです。 Heightは、対象が範囲の場合のみ使用する。 対象範囲が何行目に含まれるかを示す。 Heightは正の数でなければならない。 図1の右側の部分から、対象範囲に2行あることがわかる。 したがって、この場合はHeightを2に設定する。
オプションです。 幅引数は、対象が範囲の場合のみ使用する(図1の右側部分参照)。 対象範囲が含む列の数を示す。 幅は正の数でなければならない。

さて、ここからは実際にOFFSET関数を使って問題を解決する方法を紹介します。

ケース1:OFFSET関数とMATCH関数の組み合わせによる右から左への検索

VLOOKUP関数では、左から右へのルックアップしか行えないことはよく知られている。

検索する値は、テーブル配列の最初のカラムに配置する必要があります。

新しいルックアップ値を追加する場合は、テーブルの範囲全体を1列分右にずらす必要があり、別の列をルックアップ値として使用したい場合は、データ構造を変更する必要があります。

しかし、OFFSETとMatch機能を併用することで、VLOOKUP機能の制限を取り払うことができます。

MATCH関数とは何か、OFFSET関数とMatch関数を組み合わせてルックアップを行うにはどうしたらよいか?

さて、Match関数は、あるセル範囲の中から指定された項目を検索し、その項目の相対的な位置を返します。

図2.1の範囲B3:B8(異なる年の異なる国の収入を示す)を例にとって考えてみよう。

数式「=MATCH("USA", B3:B8, 0)」が返されます。 1 USA は範囲内の最初の項目なので(セル B10 と C10 を参照)。

別の範囲C2:F2については、「=MATCH (2015, C2:F2, 0)」という計算式が返されます。 3 を、2015 は範囲の 3 番目の項目であるため(セル B11 と C11 を参照)。

OFFSET機能に話を戻すと。

セルB2を参照セルとし、セルE3を対象セルとした場合、OFFSETの式はどのように書けばよいのでしょうか。

E3は 1 B2以下の行と 3 の列を右からB2まで表示します。

したがって、式は「=OFFSET(B2.A)」と書くことができます。 1 , 3 赤色で表示されている数字をよく見て、一致していることがわかりますか?

以上が、「OFFSET機能とMatch機能を組み合わせるには」という問いに対する答えです。 Match関数は、OFFSET関数の第2引数または第3引数として適用することができます。 (セルC13参照)。

セルC14は、VLOOKUP関数を使って同じデータを取得する方法を示しています。

VLOOKUP関数を書く前に、2015年の収益が表配列B2:F8の4列目に記録されていることを知っておく必要があります。

VLOOKUP関数を使うときは、データ構造についてよく知らなければならないということです。

これもVLOOKUPの限界ですが、OFFSET関数の引数にMATCH関数を使うことで、列のインデックスを知る必要がなくなります。

列がたくさんある場合に非常に便利です。

図2.1

さて、次にもっと複雑な例を見てみましょう。

異なる企業の会社名、担当者名、電子メールアドレスを含むテーブルがあるとします。

そして、既知の連絡先から会社名を取得したり、既知の電子メールアドレスから連絡先を取得したい。 どうすればよいのだろうか。

図2.2を見ると、範囲B5:E8には会社情報が含まれています。 セルC2とセルB3に入力を入れて、赤枠の数式を使えば、連絡先がわかっていれば会社名を取得することができるのです。

レンジD2:E4は、メールアドレスがわかっている連絡先の名前を取得する方法を示しています。

まとめると、この 2 つの例は右から左への検索が可能であり、検索値は右端の列に配置する必要がないことを示しています。 テーブル配列のどの列にも、検索値を格納することができます。

図2.2

ケース2:OFFSET関数とCOUNT関数を組み合わせた計算の自動化

列の中に新しい数字を追加するたびに計算を自動化する方法を紹介する前に、まずは列の中の最後の数字を自動的に返す方法から紹介します。

下図は、人事部からの入力を示しています。 B列の最後の数字を取得したい場合、数式は「=OFFSET (C2, 9 OFFSET関数を適用すると、「0)」となる。

この式から、次のことがわかります。 9 はキー番号です。

この数字を自動的に返すことさえできれば、ある列の最後の数字を自動的に探し出すことができる。

9 は、ちょうどC列の数字を含むセルの数です。

COUNT関数をご存知の方は、COUNT関数は、範囲内の数値を含むセルの数を数えることができることをご存知でしょう。

例えば、「=COUNT (C3:C11)」という数式は、セルC3からC11に数字が入っているセルの数を数えます。

この場合、列全体の数字を知りたいので、C列のすべての行を含むC:Cのような参照を使用します。

セルG4とH4を見てください。"=COUNT(C:C) "で返される数値は、ちょうど次のようになります。 9 .

したがって、上記のOFFSET関数の9をCOUNT(C:C)に置き換えると、新しい式「=OFFSET(C2, カウント(C:C) , 0)」(セルH5)。

返される数値は87000で、これはC列の最後の数値と同じである。

では、自動計算に移りましょう。 C列のすべての数値の合計が欲しいとします。

計算式は、「=SUM (OFFSET (C2, 1, 0, 9 SUMとOFFSETを併用すると、「1)」となります。

9 は範囲C3:C11の行の総数であり、また列Cに数字を含むセルの総数である。

したがって、「=SUM (OFFSET (C2,1, 0, COUNT (C:C), 1))」のように新しい書き方で計算式を書くことができます。

セルG10とH10を見てください。この9人の従業員の給与の合計は、521,700ドルです。

ここで、セルC12に$34,000のような数値を入れると、セルG5とG10の両方の数値がそれぞれ$34,000と$555,700に変更されることになります。

セルG5やG10の数式を更新する必要がないので、これはいわゆる自動化です。

COUNT関数は数字を含むセルの数しか返さないので、COUNT関数を使うときは注意が必要です。

例えば、"=COUNT (B: B)" は、B列に数字を含むセルがないため、9ではなく0を返します(セルG3、H3参照)。

D列には数字を含むセルが10個あり、「COUNT(D:D)」が返す数値も10である。

しかし、C列の場合と同じようにD列の最後の数字を取得したい場合は、0番を取得します(セルG8とH8を参照)。

明らかに、0は私たちが望むものではありません。 何が問題なのでしょうか? セルD13は、セルD2から10行ではなく、11行離れています。

これも「=OFFSET (D2, COUNT (D: D)」という式で示すことができる。 + 1 セルG7に "0 "を入力する。

まとめると、COUNT関数とOFFSET関数を併用して計算の自動化を可能にするためには、数値が隣接している必要があるのです。

図3

ケース3:OFFSET機能を使ってダイナミックレンジを作る場合

ある企業の月別販売台数をグラフ化したいと考え、図4.1に現在のデータと、現在のデータをもとに作成したグラフを示します。

毎月、C列の最後の数値の下に、直近の月の販売台数が追加されます。

チャートを自動的に更新する簡単な方法はありますか?

チャート更新のポイントは、OFFSET関数を使って、Units Sold列にダイナミックレンジ名を作ることです。

ユニットの売上高のダイナミックレンジは、新しいデータが入力されると、自動的にすべての売上高データを含みます。

図4.1

ダイナミックレンジを作成するには 計算式 タブを選択し 名 称 マネージャー または 名前の定義 .

以下 新名称 をクリックすると、ダイアログボックスが表示されます。 名前の定義 .

を選択した場合 名 称 マネージャー をクリックする必要があります。 新規 を作成します。 新名称 のダイアログボックスが表示されます。

図4.2

で、" 名前 「入力ボックスには,ダイナミックレンジの名前を入力する。 また," 参照元:" 入力ボックスでは、列Cに入力されたUnits Sold値に基づいて値の動的範囲を生成するOFFSET式「=OFFSET (Figure4!$C$2, 1, 0, COUNT (!$C: $C), 1)」を入力する必要があります。

デフォルトでは、名前はワークブック全体に適用され、ワークブック内で一意である必要があります。

しかし、特定のシートに範囲を限定したい。

そこで、ここでは図4の" スコープ 「をクリックすると、入力ボックスが表示されます。 よっしゃー ダイナミックレンジを作り出します。

新しいデータが入力されると、すべての販売データを自動的に含めます。

次に、チャート上の任意のポイントを右クリックし、"データの選択 "を選択します。

図4.3

プロンプトで データ選択 ソース、選択 シリーズ1 そして 編集する。

図4.4

そして、図4.5が示すように、"=Figure4!Units "と入力します。

図4.5

最後に、試しにセルC13に11を入力してみましょう。 チャートが変更され、値11が含まれているのがわかると思います。

新しいデータが追加されると、チャートは自動的に変更されます。

図4.6

続きを読む...

  • ExcelのOffset(...)関数とその例

作業用ファイルのダウンロード

以下のリンクから動作ファイルをダウンロードしてください。

Excel-Offset-Function.rar(エクセル・オフセット・ファンクション

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。