(57)【特許請求の範囲】
【請求項１】
スプレッドシートの行、列、及びシートを要素とし、行、列およびシートを軸とする各次元で、行軸に沿った左右と、列軸に沿った上下と、シート軸に沿った前後の方向を含む、アドレスによって各次元内で識別される複数のセルを含むスプレッドシート内のセル・アドレス範囲によって定義されるセルの名前付き範囲を、前記セルの名前付き範囲の端に新しいセルが追加される際に前記セル・アドレス範囲を1アドレスだけ拡張するオープン方向を指定することによってオープン名前付き範囲とし、当該オープン名前付き範囲を、オープン名前付き範囲フィールド、方向フィールド、隠し名前付き範囲フィールドを有する記憶手段を備えたコンピュータにより処理する方法であって、
ユーザが、オープン名前付き範囲を指定する際に、
・コンピュータに対して、ユーザがセルの名前付き範囲を指定するステップと、
・コンピュータに対して、ユーザが前記名前付き範囲のオープン方向を指定するステップと、
・コンピュータが、前記オープン名前付き範囲フィールドに前記名前付き範囲のセル・アドレス範囲を記録し、前記方向フィールドに前記オープン方向を記録するステップと、
・コンピュータが、オープンとして指定されたすべての方向で上記オープン名前付き範囲のセル・アドレス範囲を1アドレスだけ拡張し、当該拡張したセル・アドレス範囲を前記隠し名前付き範囲フィールドに記録するステップと、
を含み、
ユーザが、スプレッドシートに要素を挿入する際に、
・コンピュータに対して、ユーザが要素を挿入する位置を選択するステップと、
・コンピュータが、前記選択された位置のアドレスが、隠し名前付き範囲フィールドに記録されたセル・アドレス範囲に属すると判断した場合、２つの連続するセル・アドレスの間に、新しいセル・アドレスを挿入することによって、上記隠し名前付き範囲の上記セル・アドレス範囲を拡張し、当該拡張したセル・アドレス範囲を上記隠し名前付き範囲フィールドに更新記録するステップと、
・コンピュータが、上記隠し名前付き範囲のセル・アドレス範囲から前記方向フィールドにオープン方向として指定されたすべての方向で１アドレスだけ短縮したセル・アドレス範囲を計算し、当該短縮したセル・アドレス範囲を上記名前付き範囲フィールドに更新記録するステップと
を含む方法。
【請求項２】
オープン方向を指定する上記ステップが、
・行軸に沿った右方向または左方向もしくはその両方と、
・列軸に沿った上方向または下方向もしくはその両方と、
・シート軸に沿った前方向または後方向もしくはその両方と
のうちの１つまたは複数を指定するステップ
を含む、請求項１に記載の方法。
【請求項３】
コンピュータに、請求項１または２に記載の方法のいずれか一項の各ステップを実行させるためのスプレッドシート・プログラムを記録したコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタル・コンピュータによる情報処理の分野に関し、具体的には、電子スプレッドシート内で、セル名前付き範囲の外部であるがそれに直近する新しい要素（行、列、ページなど）の導入によって拡張することのできるセル名前付き範囲を定義し、処理するための方法およびシステムに関する。
【０００２】
【従来の技術】
コンピュータ以前には、数値分析、特に財務分析は、会計士の縦欄式パッド（columnar pad）またはスプレッドシート上で、鉛筆と電卓を手にして準備されることが通常であった。データを列と行に編成することによって、スプレッドシートは、読者によるすばやい情報の吸収をもたらす。しかし、紙の上でスプレッドシートを準備する作業は、それほどすばやくはない。逆に、このプロセスは非常に遅くなる傾向がある。というのは、各項目を延々と計算し、スプレッドシートに記入しなければならないからである。すべての計算が、それを準備する者の責任になるので、手作業で準備されたスプレッドシートは、誤りがある傾向もある。したがって、人の手によるスプレッドシートの準備は、遅く、冗長であり、信頼性がない。
【０００３】
マイクロコンピュータの出現に伴って、「電子スプレッドシート」の形の解決策が使えるようになった。単に「スプレッドシート」としてよりよく知られているこれらのソフトウェア・プログラムは、伝統的な財務モデリング・ツールすなわち、会計士の縦欄式パッド、鉛筆および電卓に代わる、コンピュータ化された代用品を提供する。いくつかの面で、スプレッドシート・プログラムは、これらのツールに対して、タイプライタに対するワード・プロセッサに相当する。スプレッドシートは、財務モデルの作成、編集および使用の容易さにおいて劇的な改善を提供する。
【０００４】
通常のスプレッドシート・プログラムは、会計士の縦欄式パッドの列／行またはグリッド・フォーマットに似るようにコンピュータのメモリを構成し、したがって、目に見える計算機をユーザに提供する。しかし、この「パッド」は、コンピュータのメモリ内に動的に存在するので、いくつかの重要な形で紙のパッドと異なる。たとえば、電子スプレッドシート内の位置は、コンピュータが理解できるフォーマットでコンピュータに伝えなければならない。これを達成する一般的な方式は、スプレッドシートの各行に番号を割り当て、各列に文字を割り当て、スプレッドシートの各シート（またはページ）にもう１つの文字を割り当てることである。たとえば、第２ページの列Ａの行１にある位置（すなわち左上隅）を参照するには、ユーザは、「Ｂ：Ａ１」と入力する。この形で、スプレッドシートによって、所与のページ内の行と列の交差点のそれぞれのアドレス可能記憶位置または「セル」が定義される。
【０００５】
電子スプレッドシートへのデータ入力は、会計士のパッドに情報を入力するのと同一の形で行われる。画面カーソルを所望の位置に位置決めした後に、ユーザは、英数字情報を入力することができる。しかし、テキスト情報および数値情報を保持するほかに、スプレッドシート・セルには、スプレッドシート・セルに格納された数値に対して実行される計算を指定する、特殊な命令または「数式」を格納することができる。そのようなスプレッドシート・セルは、セルのコネックス（connex）・セットとして配置される限り、範囲として定義し、名前を付けることもできる。そのような名前付き範囲の典型的な例は、単純に、会計士のパッドにある規則正しい表に対応する。この形で、範囲の名前は、式の変数として働くことができ、これによって、セルの間で正確な数学的関係を定義できるようになる。関数およびマクロなどの高度な機能を含むスプレッドシート・プログラムの構造および動作は、技術文献、商業文献および特許文献に記載されている。概要については、たとえば、Cobb, S.著「Using Quattro Pro 2」、Borland-OsbomeIMcGraw-Mll刊、１９９０年と、LeBlond, G.およびCobb, D.著「Using 1-2-3」、Que corp.刊、１９８５年を参照されたい。
【０００６】
電子スプレッドシートは、紙の対応物に対する多数の長所を提供する。たとえば、電子スプレッドシートは、紙の対応物よりはるかに大きく（すなわち、より多くの情報を保持し）、数千または数百万のセルを有する電子スプレッドシートも希ではない。また、スプレッドシート・プログラムを用いると、ユーザが、「what-if」シナリオを実行できるようになる。１組の計算関係をワークシートに入力した後に、たとえば組込み数式のおかげで、異なる組の仮定を使用してその情報を再計算することができ、再計算のそれぞれの結果が、ほぼ瞬間的に表示される。この動作を手作業で、紙と鉛筆を用いて実行するためには、変更を行うたびに、モデルのすべての関係を再計算することが必要になる。したがって、電子スプレッドシート・システムは、「what-if」問題を解決するために、すなわち、入力を変更し、出力に何が起きるかを見るために発明された。
【０００７】
スプレッドシートの計算を自動化するのに使用される名前付き範囲は、会計士のパッドに見られる古典的な表に項目が追加または削除されるのと同様に、スプレッドシートの「寿命」の間に展開することができる。従来のスプレッドシート・ツールは、新しい要素（通常は、新しい列、新しい行または新しいシート）が、すでに名前付き範囲に属する要素の間に追加される時または、すでに名前付き範囲に属するある要素（通常は列、行またはシート）が削除される時に、既存の名前付き範囲の内容を自動的に調節する手段を提供する。新しい要素が追加される、名前付き範囲内の相対位置は、一般に、たとえばなんらかのソート判断基準など、ユーザ独自の判断基準によって動機を与えられたスプレッドシート・ユーザが選択する。スプレッドシート・ユーザが、既存の名前付き範囲の最下部の要素の真下または最初の要素の真上に新しい要素を追加すると決定した場合、従来のスプレッドシートは、新たに挿入される要素が名前付き範囲に属する２つの要素の間に位置しないので、名前付き範囲を自動的に更新しない。この制限は、表の要素が日付によって横方向にソートされ、その結果、名前付き範囲の新しい（最近の）要素を、一般に、名前付き範囲の最新の要素の真下に新しい行を導入することによって追加しなければならないというよくある事例で非常に面倒になる可能性がある。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、名前付き範囲にすでに属する２つの要素の間ではなく、名前付き範囲に属する要素の直近に配置される新しい要素（行、列またはシート）を追加するために名前付き範囲の限界を自動的に調節することである。
【０００９】
【課題を解決するための手段】
本発明は、各次元が２つの方向を含む、アドレスによって各次元内で識別される複数のセルを含むスプレッドシート内のセル・アドレス範囲によって定義される名前付き範囲を処理するための方法およびシステムに関する。この方法は、
・上記名前付き範囲に対して１つまたは複数のオープン方向を指定することによってオープン名前付き範囲を定義するステップと、
・オープンとして指定されたすべての方向で上記オープン名前付き範囲を１アドレスだけ拡張したセル・アドレス範囲を有する隠し名前付き範囲を定義するステップと
を含む。
【００１０】
この方法は、さらに、ユーザの動作に応答して、
・１つまたは複数の方向を選択するステップと、
・２つの連続するセル・アドレスの間に、選択された方向の新しいアドレスを挿入することによって、上記隠し名前付き範囲の上記セル・アドレス範囲を増やすステップと、
・オープンとして指定されたすべての方向で１アドレスだけ短縮された上記隠し名前付き範囲のセル・アドレス範囲を用いて上記オープン名前付き範囲を更新するステップと
を含む。
【００１１】
【発明の実施の形態】
システム・ハードウェア
図１からわかるように、本発明は、中央プロセッサ１０１、主記憶１０２、入出力コントローラ１０３、キーボード１０４、ポインティング装置１０５（たとえば、マウス、トラック・ボール、ペン装置など）、表示装置１０６および大容量記憶装置１０７（たとえば、ハード・ディスク）を含むコンピュータ・システム１００上で実施することができる。印刷装置１０８などの追加の入出力装置を、望みに応じてコンピュータ・システム１００に含めることができる。図からわかるように、コンピュータ・システム１００のさまざまな構成要素は、システム・バス１１０または類似のアーキテクチャを介して通信する。好ましい実施形態では、コンピュータ・システム１００に、ＩＢＭ互換パーソナル・コンピュータが含まれ、これは、米国ニューヨーク州アーモンクのIBM Corporationを含む複数の売り手から入手できる。
【００１２】
図２からわかるように、コンピュータ・ソフトウェア・システム１５０が、コンピュータ・システム１００の動作を指示するために設けられる。コンピュータ・ソフトウェア・システム１５０は、主記憶１０２および大容量記憶装置１０７に記憶されるが、このコンピュータ・ソフトウェア・システム１５０には、カーネルまたはオペレーティング・システム１５１とシェルまたはインターフェース１５３が含まれる。アプリケーション・ソフトウェア１５２などの１つまたは複数のアプリケーション・プログラムを、コンピュータ・システム１００による実行のために「ロード」（すなわち、大容量記憶装置１０７から主記憶１０２に転送）することができる。コンピュータ・システム１００は、インターフェース１５３を介してユーザのコマンドおよびデータを受け取り、これらの入力を、オペレーティング・システム１５１またはアプリケーション・ソフトウェア１５２からの命令に従ってコンピュータ・システム１００によって操作することができる。インターフェース１５３は、グラフィカル・ユーザ・インターフェース（ＧＵＩ）であることが好ましいが、結果を表示するためにも働き、この上で、ユーザは、追加入力を供給するかセッションを終了することができる。好ましい実施形態では、オペレーティング・システム１５１およびインターフェース１５３は、米国ワシントン州レッドモンドのMicrosoft Corporationから入手できるMicrosoft Windows 95である。その一方で、アプリケーション・ソフトウェア１５２には、下で詳細に説明する本発明のスプレッドシート・ノートブックが含まれる。
【００１３】
インターフェース
Ａ．概論
以下の説明では、Microsoft Windows 95環境で動作するスプレッドシート・アプリケーションで実施される、本発明の好ましい実施形態に焦点を合わせる。しかし、本発明は、特定のアプリケーションまたは特定の環境に制限されない。そうではなくて、本発明のシステムおよび方法を、データベース管理システム、ワード・プロセッサおよび類似物を含むさまざまなシステムおよびアプリケーション・ソフトウェアに有利に適用できることに、当業者は気付くであろう。さらに、本発明は、Macintosh、UNIXを含むさまざまな異なるプラットホーム上で実施することができる。したがって、以下の例示的実施形態の説明は、制限ではなく例示を目的とするものである。
【００１４】
ここで図３を参照すると、コンピュータ・システム１００には、ウィンドウ操作インターフェースまたは作業スペース（以下では単にウィンドウと呼称する）１６０が含まれる。ウィンドウ１６０は、表示装置１０６に表示するための長方形のグラフィカル・ユーザ・インターフェース（ＧＵＩ）であり、追加のウィンドウ操作要素を、望みに応じてさまざまなサイズとフォーマット（たとえば、重ねて表示または並べて表示）で表示することができる。ウィンドウ１６０の最上部には、複数のユーザコマンド選択肢を有するメニュー・バー１７０があり、これらのユーザコマンド選択肢のそれぞれによって、追加のサブメニューおよびアプリケーション・オブジェクトと共に使用するソフトウェア・ツールを呼び出すことができる。ウィンドウ１６０には、グラフィック・オブジェクト１８１およびテキスト・オブジェクト１８２などの画面オブジェクトを表示し、操作するためのクライアント領域１８０が含まれる。本質的に、クライアント領域は、ユーザがコンピュータ・システム１００内に存在するデータ・オブジェクトと対話するための作業スペースまたはビューポートである。
【００１５】
ウィンドウ１６０には、対象の画面オブジェクトを選択するか別の形で呼び出すためのポインタまたは画面カーソル１８５が含まれる。ポインティング装置１０５からのユーザ移動信号に応答して、画面カーソル１８５は、表示装置１０６上で所望の画面位置へ移動する。当技術分野で既知のように、カーソルの移動中または移動後に、ユーザは、オブジェクトの選択および操作のためにユーザイベント信号（たとえば、マウス・ボタンの「クリック」および「ドラッグ」）を生成することができる。たとえば、ウィンドウ１６０は、それぞれ画面構成要素１７２、１７４または１７５、１７７または１７８を「クリック」（選択）することによって、閉じる、サイズを変更するまたはスクロールすることができる。
【００１６】
好ましい実施形態では、画面カーソル１８５は、マウス装置によって制御される。単一ボタン、２つボタンまたは３つボタンのマウス装置が、米国カリフォルニア州キューパーティーノのApple Computer社、米国ワシントン州レッドモンドのMicrosoft Corporation、米国カリフォルニア州フリーモントのLogitech Corporationを含むさまざまな売り手から販売されている。ポインティング装置１０５は、左右の両方の「マウス・ボタン」を含む２ボタン・マウス装置であることがより好ましい。
【００１７】
マウス装置のプログラミング技法および動作は、プログラミングおよびハードウェアの文献で明瞭に文書化されており、たとえば、「Microsoft Mouse Programmer's Reference」、Microsoft Press刊、１９８９年を参照されたい。WindowsなどのＧＵＩイベント駆動システムの全般的な構成および動作も、当技術分野で既知であり、たとえば、Petzold, C.著「Programming Windows」Second Edition、Microsoft Press刊、１９９０年を参照されたい。
【００１８】
Ｂ．好ましいインターフェース
図４に示された、本発明のスプレッドシート・ノートブック・インターフェースをこれから説明する。本発明のスプレッドシート・ノートブックまたはワークブックには、英数字情報ならびにグラフィック情報を含む情報を受け取り、処理し、提示するためのノートブック作業スペース２００が含まれる。ノートブック作業スペース２００には、メニュー・バー２１０、ツールバー２２０、現行セル・インジケータ２３０、入力ライン２３１、ステータス・ライン２４０およびノートブック・ウィンドウ２５０が含まれる。メニュー・バー２１０は、ユーザ入力に応答して、ユーザ・コマンドのメイン・レベルを表示し、呼び出す。メニュー・バー２１０は、ウィンドウ操作アプリケーションで既知のように、追加のプル・ダウン・メニューも呼び出す。入力ライン２３１は、セル内容の入力および編集のためのユーザ・コマンドおよび情報を受け入れるが、このセル内容には、データ、数式、マクロおよび類似物を含めることができる。現行セル・インジケータ２３０には、現在のカーソル（すなわち、アクティブ・セル）の位置のアドレスか、選択された名前付き範囲（すなわち、アクティブ選択領域）のアドレスまたは名前が表示される。ステータス・ライン２４０には、コンピュータ・システム１００が、ワークブックの現在の状態に関する情報を表示し、たとえば、「ＲＥＡＤＹ」インジケータは、システム側で、ユーザが、実行すべき別のタスクを選択する準備ができていることを意味する。
【００１９】
図５にさらに詳細に示されたツールバー２２０には、ツールの行またはパレットが含まれ、これによって、ユーザが、一般的に使用されるメニュー・コマンドまたはプロパティをすばやく選択する方法が提供される。例示的実施形態では、ツールバー２２０に、ファイル操作ボタン２２１、印刷ボタン２２２、元に戻すボタン２２３、切取り、コピーおよび貼付けボタン２２４、情報ポップアップ・ウィンドウ・ボタン・ツール２２５、名前付き範囲選択ボタン２２６、スタイル・コピー・ボタン２２７、列サイズ変更ボタン２２８および合計ボタン２２９が含まれる。これらのボタンの機能は、その名前によって暗示される。たとえば、切取り、コピーおよび貼付けボタン２２４は、Windowsのクリップボードとの間での、データおよびオブジェクトの切取り、コピーおよび貼付けを行う。同一の動作が、［Edit］メニュー（メニュー・バー２１０から使用可能）の対応するコマンドとしても使用可能である。
【００２０】
対象の情報の入力および表示のためのインターフェースを提供するノートブックには、複数のスプレッドシート・ページが含まれる。各ページには、移動、サイズ変更および削除など、通常のウィンドウ操作の特徴および動作を含めることができる。好ましい実施形態では、ノートブックに、２５６ページのスプレッドシートが含まれ、そのすべてが、単一のディスク・ファイルとして大容量記憶装置１０７に保管される。ノートブック作業スペース２００には、１つまたは複数のノートブックを表示することができ、各ノートブックのサイズおよび位置（たとえば、並べて表示、重ねて表示など）は、ユーザが指定した制約に従って決定される。
【００２１】
ノートブックの各スプレッドシート・ページには、２次元スプレッドが含まれる。たとえば、ノートブック作業スペース２００のページＡには、行３および列Ｆなど、行と列のフォーマットの格子が含まれる。行と列の交差点のそれぞれに、通常の形での情報の入力、処理および表示のためのボックスまたはセル（たとえば、セルＣ４）が設けられる。各セルは、アドレス可能であり、現在アクティブなセル（すなわち、現在選択されているセル）を示すためのセレクタが設けられる。
【００２２】
図６および７からわかるように、個々のノートブック・ページは、好ましくはノートブックの１つの縁に沿って配置される、ページ識別子２６０によって識別される。好ましい実施形態では、各ページ識別子は、ノートブックの上縁に沿って配置されたタブ・メンバ（たとえば、メンバ２６１ａ、２６２ａ、２６３ａ）の形である。各タブ・メンバには、テキスト・ラベルまたはグラフィック・ラベルなどの、表象の標識を含めることができ、このラベルには、対応するページの内容を表す、ユーザが選択したタイトルが含まれる。図６では、ページ識別子２６０に、それぞれ省略時の名前が設定されている。たとえば、最初の３つのタブ・メンバ（メンバ２６１ａ、２６２ａ、２６３ａ）には、それぞれ、Ａ、ＢおよびＣが設定されている。しかし、タブ・メンバには、通常はユーザが供給した記述的な名前が与えられる。たとえば、図７に示されているように、最初の３つのタブ・メンバには、ここでは、「Contents（内容）」（タブ・メンバ２６１ｂ)、「Summary（合計）」（タブ・メンバ２６２ｂ）および「Jan（１月）」（タブ・メンバ２６３ｂ）が設定されている。同様の形で、残りのタブに、１年の後続の月が設定されている。この形で、ユーザは、ページ識別子に、通常の紙のノートブックからの馴染みのあるタブを関連付ける。したがって、ユーザは、対象のページまたはスプレッドを選択する方法をすでに知っている。すなわち、ページに対応するタブを選択するだけである（紙のノートブックからページを選択する時に行うはずの動作）。
【００２３】
情報の適当なページの選択を助けるほかに、ユーザがカストマイズできるページ識別子は、スプレッドシート名前付き範囲アドレスの入力を助けるように働く。たとえば、別のページのセルの名前付き範囲を参照する数式を入力する時に、ユーザは、単純に、名前付き範囲アドレスに記述的なページ名を使用することができ、したがって、ユーザが、参照されるセルまたは情報の関係を理解するのが簡単になる。
【００２４】
スプレッドシート・ノートブック・インターフェースの特徴および動作の全般的な説明は、Borland International社から入手できるQuattro Pro for Windows（Getting Started、User's GuideおよびBuilding Spreadsheet Applications）で見つけることができる。
【００２５】
名前付き範囲の管理
Ａ．概論
この数年来スプレッドシート環境の威力が高まったので、現在では、Ｃ＋＋またはMicrosoft CorporationのVisualBasicなどの汎用プログラミング言語を用いて開発されたアプリケーションではなく、スプレッドシートだけに基づいて複雑なカスタム・アプリケーションを開発することが可能である。これを達成できるのは、情報の単一の要素（単一のセル名前付き範囲）と情報の複数の要素（複雑な名前付き範囲）のどちらに対応する名前付き範囲であっても、スプレッドシートの名前付き範囲のすべてを操作する、マクロ言語、スクリプト言語および数式などのスプレッドシートに組み込まれたツールのおかげである。
【００２６】
通常のスプレッドシート・ベース・アプリケーションでは、内容（またはそのサブセット）が名前付き範囲として宣言されたテーブルが見つかることが一般的である。そのような名前付き範囲を定義すると、たとえば、所与の判断基準の組に一致するテーブル項目に対してなんらかの計算（たとえば、合計、平均）を実行することのできるデータベース指向機能を使用することによって、テーブルから情報を取り出すのが簡単になる。新しい要素を名前付き範囲の「中」に追加する時には、従来のスプレッドシート・プログラムは、それ相応に名前付き範囲の定義を自動的に更新する。従来の表記を用いて、「CUSTOMER」という名前の範囲が、Ａ：Ｃ３．．Ａ：Ｈ３３として定義されていると仮定する。この名前付き範囲は、最初のシートＡの、両端を含めて３から３３までの３１行と、両端を含めてＣからＨまでの６列の交差に対応する。また、この名前付き範囲の各行が、特性（氏名、住所、電話番号など）を列ＣからＨまでの間に記録された所与の顧客に論理的に対応すると仮定する。新しい顧客をCUSTOMER名前付き範囲に追加しなければならない場合に、アルファベット順でそうする必要があるので、新しい行を行２３と行２４の間に挿入すると仮定する。新たに導入される行は、行軸への名前付き範囲の射影である区間［３  ３３］に含まれるので、従来のスプレッドシート・プログラムは、CUSTOMER名前付き範囲の定義を自動的に調節し、その定義はＡ：Ｃ３．．Ａ：Ｈ３４になる。実際、行２４ないし３３は、１位置だけ下に押しやられ（したがって行２５ないし３４になる）、行２４が空になり、新しい行を挿入できるようになる。
【００２７】
新しい顧客が、「ＺＺＺ  Ｌｔｄ」という会社である場合には、新たに追加される行は、アルファベット順に従えば行３４の後になる可能性が高い。この場合、従来のスプレッドシート・プログラムは、効果的に、前の行３４および３５の間に新しい行を追加するが、CUSTOMER名前付き範囲は、Ａ：Ｃ３．．Ａ：Ｈ３３に対応したままになる。実際、新たに導入された行は、区間［３  ３３］内ではなく、その端に位置する。CUSTOMER名前付き範囲の更新がないので、CUSTOMER名前付き範囲の定義に基づくマクロ、関数およびすべての手段によって、誤った情報が返される結果になる可能性がある。本発明は、名前付き範囲と共通する単一の縁を有する新しい要素をスプレッドシートに導入する時に自動的に「拡張」することのできる名前付き範囲の定義を可能にすることによって、この問題に対するユーザフレンドリな解決策を提供する。
【００２８】
Ｂ．改良された名前付き範囲マネージャ
上で述べた従来のツールとは違って、本発明は、名前付き範囲マネージャの形で、名前付きセル範囲の定義および更新を管理するためのより強力でユーザフレンドリな直観的手法を提供する。このマネージャを用いると、自動的に、名前付き範囲がいわゆる「オープン名前付き範囲」（従来の「クローズド名前付き範囲」ではなく）として振る舞わなければならない場合とその方法をスプレッドシート・ユーザが定義できるようになる。
【００２９】
本発明は、「クローズド名前付き範囲」と称する古典的な名前付き範囲ではなく、以下で「オープン名前付き範囲」と称する新しい種類の名前付き範囲をスプレッドシート内で定義し、管理するための方法およびシステムを対象とする。
【００３０】
・クローズド名前付き範囲：セルの３Ｄ（３次元）セット（３つの軸は、行軸、列軸およびシート軸である）として編成される通常のスプレッドシート・プログラムでは、クローズド名前付き範囲は、形式的には、各軸に沿って連続する要素の３つの空でない組の交差として定義することができる。従来の表記を用いると、アドレスＣ：Ｅ１０．．Ｃ：Ｋ１８を有する「MY_TABLE」という名前の範囲は、行が両端を含めて１０から１８までの間のセルの組と、列が両端を含めてＥからＫまでの間のセルの組と、シートが両端を含めてＣからＣまでの間のセルの組の交差に対応する。行が１０から１８までの間の新しい行または列がＥからＫまでの間の新しい列の追加は、MY_TABLEという名前のクローズド範囲の再定義をもたらす。
【００３１】
・オープン名前付き範囲：オープン名前付き範囲は、クローズド名前付き範囲と同様に、各軸に沿って連続する要素の３つの空でない組の交差として定義できるが、３つの軸のうちの１つに新しい要素が追加される時の振る舞いが異なる。実際に、前の名前付き範囲の例では、この名前付き範囲がオープンとして定義される場合には、行が両端を含めて９から１９までの間の新しい行、または、列がＤからＬまでの間の新しい列、または、両端を含めてシートＢからシートＤの間の新しいシートの追加が、クローズド名前付き範囲MY_TABLEの再定義をもたらす。
【００３２】
名前付き範囲がオープンとして定義される時には、従来のスプレッドシート・プログラムの３軸のうちの１つに沿った新しい要素の導入時のその振る舞いは、名前付き範囲がオープンとして定義された「方向」に依存する。３Ｄの従来のスプレッドシートでは、１軸あたり２つの６つの異なる方向すなわち、行軸に沿った左右と、列軸に沿った上下と、シート軸に沿った前後とを定義することができる。MY_TABLEという名前のオープン範囲（Ｃ：Ｅ１０．．Ｃ：Ｋ１８）の前の例では、この名前付き範囲は、実際には６つの方向のすべてにオープンされている。これと同じ名前付き範囲が、下方向だけについてオープンされた場合には、その名前付き範囲は、名前付き範囲の最下部の行の真下に新しい行が追加される時に、古典的なクローズド名前付き範囲と異なる。同様に、これと同一の名前付き範囲が、右方向だけにオープンされた場合には、その名前付き範囲は、名前付き範囲の右端の列で新しい列が追加される時に、古典的なクローズド名前付き範囲と異なる。名前付き範囲がオープンと宣言される方向について、その方向に沿った要素の新しい組の導入は、新しい要素の組が、定義済みのオープン名前付き範囲と共通する少なくとも１つの境界を有する場合に限って、名前付き範囲の定義に影響する。名前付き範囲がオープンと定義される方向の異なる組合せによって、異なる方向に対して異なる挙動を達成することができる。
【００３３】
Ｃ．オープン名前付き範囲
好ましい実施形態では、名前付き範囲は、次の６つの方向すなわち、行軸に沿った左右、列軸に沿った上下およびシート軸に沿った前後のいずれかでオープンとして指定することができる。選択された時に、オープン名前付き範囲は、フォント・スタイル、フォントの色、背景色など、特定のセル属性を使用することによって、表示装置１０６上のウィンドウ１６０のクライアント領域１８０内で簡単に識別できる。好ましい実施形態では、選択されたオープン名前付き範囲の背景色が、黒に設定される（通常のクローズド名前付き範囲と同様）が、さらに、名前付き範囲がオープンになっている方向の境界セルの背景色は、点滅モードになる。
【００３４】
好ましい実施形態では、本発明は、以下の２つのステップで使用される。
【００３５】
・１．第１ステップが発生する時は、所与の名前付き範囲が、セル内容マネージャを利用するに値するか否かに無関係に、本明細書では詳細に説明しない判断基準に基づいて、スプレッドシート・ユーザが決定する。
【００３６】
・ユーザはまず、ポインティング装置１０５またはキーボード１０４を使用することによって、適切な名前付き範囲を選択し、専用のプッシュボタン、キーボード入力ショート・カット、メニュー項目またはサブメニュー項目など（これに制限はされない）のスプレッドシート環境で使用可能な従来の手段によって、「Open_Range」と称する特定のコマンドを呼び出す。上で導入した６つの方向（右、左、上、下、前、後）のそれぞれについて、ユーザは、選択された名前付き範囲がオープンであるか否かを指定する。Open_Rangeコマンドの終了時に、選択された名前付き範囲の背景色が、オープンにされた方向で点滅モードに設定される。これと同一のコマンドを使用して、すでにある方向でオープンとして指定されている名前付き範囲の定義を更新することもできる。
【００３７】
・Open_Rangeコマンドの実行中に、スプレッドシート・プログラムは、名前付き範囲がオープンとして指定された方向を記録する目的で、「Open Table」と称する内部テーブルを更新する。このOpen Tableには、すべてのオープン名前付き範囲に独自に関連する「隠し」クローズド名前付き範囲の定義も記録される。
【００３８】
２．第２ステップが発生するのは、ユーザが、従来の手段を使用することによってスプレッドシートに新しい要素（行、列またはシート）を導入する時である。従来のスプレッドシート・プログラムは、新しい要素の導入によって影響を受けるすべてのクローズド名前付き範囲の定義を調節する目的の内部ルーチンを呼び出す。この従来のルーチンの実行中に、定義済みのクローズド名前付き範囲（ユーザによって定義されたものと、Open Tableに記録された隠し名前付き範囲も含む）のすべてが、新たに導入される要素がその境界「内」に配置される場合に更新される。本発明を用いる場合、スプレッドシート・プログラムは、さらに、「Update_Open_Range」として参照される特定の内部ルーチンを呼び出し、このルーチンが、オープンとして指定された方向に従ってオープン名前付き範囲の定義をさらに調整する。
【００３９】
Ｄ．Open Table
名前付き範囲がオープンまたはクローズドとして振る舞う方向を指定することの決定は、スプレッドシート・アプリケーション・ユーザに属する。「Open Table」と称する単一のリポジトリが、この情報の記録に使用される。このOpen Tableは、不揮発性記憶装置に（必ずではないが通常、大容量記憶装置１０７上のスプレッドシート・ディスク・ファイルの一部として）保管されることが好ましい。
【００４０】
ここで図８を参照すると、Open Table３００は、それぞれがオープン名前付き範囲に関連する複数のレコード３１０からなる論理的に単純な構造に対応する。各レコードには、以下の５つのフィールドが含まれる。
【００４１】
・User Range Nameフィールド３１１は、スプレッドシート・ユーザによってオープン名前付き範囲に与えられた名前を記録するのに使用される。たとえば、User Range Nameフィールドには、上で示した例では文字列「CUSTOMER」が格納される。
【００４２】
・User Range Addressフィールド３１２には、ユーザによって指定される、オープン名前付き範囲のアドレスが記録される。たとえば、User Range Addressフィールドは、従来のアドレス構造Startsheet:StartrowStartcolumn..Endsheet:EndrowEndcolumnに対応することができ、これは、上の例ではＡ：Ｃ３．．Ａ：Ｈ３３と記述される。
【００４３】
・Range Openess Directionフィールド３１３には、名前付き範囲がオープンされている方向が記録される。本発明の好ましい実施形態では、このフィールドは、それぞれが所与の方向（右（Right）、左（Left）、上（Up）、下（Down）、前（Forward）および後（Backward））に関連する６つのサブフィールドの構造に対応する。このサブフィールドのそれぞれについて、ブール変数によって、現行のオープン名前付き範囲に関して関連する方向がオープンされているか否かを示す。
【００４４】
・Hidden Range Nameフィールド３１４は、スプレッドシート・ユーザには不可視の、本発明の一部として使用される、内部名前付き範囲の名前を記録するのに使用される。
【００４５】
・Hidden Range Addressフィールド３１５には、前のフィールドに名前を記録された内部名前付き範囲のアドレスが記録される。たとえば、Hidden Range Addressフィールドは、従来のアドレス構造Startsheet:StartrowStartcolumn..Endsheet:EndrowEndcolumnに対応することができる。
【００４６】
本発明は、主に、ユーザが定義したオープン名前付き範囲と隠しクローズド名前付き範囲の間で確立される関係に頼ることに留意することが重要である。この両方の名前付き範囲が、その境界内に含まれる新しい要素が導入される時に従来の手段によって自動的に調整されるという意味で、従来のクローズド名前付き範囲の属性を有する。さらに、オープン名前付き範囲は、その境界の縁に含まれる新しい要素が導入される時にも自動的に調節されるという意味で、本発明から利益を得る。
【００４７】
好ましい実施形態では、Open Tableは、スプレッドシート・ファイル自体の中に明示的に含まれるが、他の明白な実施形態では、その代わりに他の手段に頼ることができる。
【００４８】
Ｅ．Open_Rangeメソッド
所与の名前付き範囲が本発明を利用することを可能または不可能にするためのメソッドを、図９の流れ図４００にまとめる。このメソッドは、「Open_Range」コマンドの処理とみなすことができる。このメソッドには、以下のステップが含まれる。
【００４９】
・ステップ４０１で、このメソッドは、その省略時状態であり、処理を開始するためのイベントを待つ。
【００５０】
・ステップ４０２で、ユーザ動作の結果として、イベントが検出される。この動作は、たとえば、キーボード１０４のキーの特定の組合せか、ポインティング装置１０５の特定のボタンのクリックか、本明細書ではこれ以上指定しない他の類似の手段とすることができる。
【００５１】
・ステップ４０３で、メニューおよびサブメニュー内のポインティング装置１０５を用いるナビゲーション、キーボード１０４のキーの特定の組合せなど（これに制限はされない）の従来のユーザインターフェース手段を使用することによって、オープン名前付き範囲の異なる属性を取り出す。
【００５２】
・ステップ４０４は、指定されたオープン名前付き範囲が、前にすでに宣言され、このテーブルに記憶されているかどうかを判定するためのOpen Tableでの探索に対応する。本発明の好ましい実施形態では、探索判断基準は、Open Tableのレコード３１０内のUser Range Nameフィールド３１１に記録されたオープン名前付き範囲の名前に対応する。そのような一致するレコード３１０がOpen Table内で見つかった場合には、制御をステップ４０８に与え、そうでない場合には、制御をステップ４０５に与える。
【００５３】
・ステップ４０５で、テストを行って、ステップ４０３で少なくとも１つの方向がオープンとして指定されたかどうかを検証する。そうである場合には、制御をステップ４０６に与える。そうでない場合には、Open_Rangeコマンドは、Open Table内の更新なしに終了し、制御をステップ４０１に戻して、次のOpen_Rangeコマンドを待つ。
【００５４】
・ステップ４０６で、新しいレコード３１０をOpen Table内で作成し、対応するフィールド、User Range Nameフィールド３１１およびUser Range Addressフィールド３１２を、ステップ４０３で知った現行のオープン名前付き範囲の名前およびアドレスに初期設定する。
【００５５】
・ステップ４０７で、Hidden Range Nameフィールド３１４に、User Range Nameフィールド３１１から独自に導出される名前を書き込む。この独自性によって、これら２つの名前付き範囲の一方の名前を、他方の名前に基づいて曖昧さなしに決定できるようになる。
【００５６】
・ステップ４０８で、テストを行って、ステップ４０３で少なくとも１つの方向がオープンとして指定されたことを検証する。そうである場合には、制御をステップ４１０に与え、そうでない場合には、制御をステップ４０９に与える。
【００５７】
・ステップ４０９に達した時には、既存のオープン名前付き範囲が、ステップ４０３でユーザによってもはやオープンでないとして指定されている。したがって、ステップ４０４で見つかったレコードを削除することによって、Open Table内でハウスキーピングを行わなければならない。その後、制御をステップ４０１に戻して、次のOpen_Rangeコマンドを待つ。
【００５８】
・ステップ４１０で、ステップ４０３でユーザによってオープンと宣言された方向に従って、Range Openess Directionフィールド３１３を書き込む。本発明の好ましい実施形態では、これは、３Ｄスプレッドシートの６方向のそれぞれに対応する６つのサブフィールドのそれぞれにブール値（真または偽）をセットすることに対応する。
【００５９】
・ステップ４１１で、レコード３１０の最後のフィールドを書き込む。これは、Hidden Range Addressフィールド３１５である。このアドレスは、User Range Addressフィールド３１２から、この範囲アドレス定義をオープンとして指定された方向のすべてで１位置だけ拡張することによって導出される。ステップ４１１の終りに、Open_Rangeコマンドが終了し、制御はステップ４０１に戻されて、次の新しいコマンドを処理する。
【００６０】
Ｆ．Update_Open_Rangeメソッド
本発明による、行、列およびシートなどの新しい要素の導入時にオープン名前付き範囲を更新するためのメソッドを、図１０の流れ図５００にまとめる。このメソッドは、従来のクローズド名前付き範囲に適用される、要素が名前付き範囲にすでに属する２つの要素の間に配置される時だけ名前付き範囲を更新する、従来のメソッドの拡張とみなすことができる。このメソッドには、以下のステップが含まれる。
【００６１】
・ステップ５０１で、このメソッドは、その省略時状態であり、次の処理を開始するためのイベントを待つ。
【００６２】
・ステップ５０２で、スプレッドシート内の新しい要素の導入時に従来の範囲を更新する従来のルーチンが終了した時に、Update_Open_Rangeメソッドを実施するルーチンへの呼び出しの結果として、イベントが検出される。
【００６３】
・ステップ５０３で、Open Tableの最初のレコード３１０が選択され、現在のレコードになる。
【００６４】
・ステップ５０４で、レコード３１０の第２のフィールドすなわちUser Range Addressフィールド３１２が書き込まれる。このアドレスは、Hidden Range Addressフィールド３１５から、この範囲アドレス定義をオープンとして指定されたすべての方向で１位置だけ減らすことによって導出される。
【００６５】
・ステップ５０５で、テストを行って、Open Tableの終りに達したかどうかを検査する。そうである場合には、制御をステップ５０１に与えて、新しいUpdate_Open_Rangeコマンドを待つ。そうでない場合には、制御をステップ５０６に与える。
【００６６】
・ステップ５０６で、Open Tableの次の項目を選択し、その結果、現行のレコードが、前のレコードに続くレコードになるようにする。その後、制御をステップ５０４に返して、新しい現在のレコードを処理する。
【００６７】
代替実施形態
好ましい実施形態に関して本発明を具体的に図示し、説明してきたが、本発明の主旨および範囲から逸脱せずに、形態および詳細においてさまざまな変更を行うことができることを理解されたい。
【００６８】
たとえば、本発明による改良された名前付き範囲管理の方法およびシステムは、情報の要素が４次元以上を有する多次元テーブルとして編成される環境で有利に使用することができる。
【００６９】
本発明の改良は、所与のオープン方向のパターンに対応する「オープン性テンプレート」の定義にある。ユーザが、所与の名前付き範囲をオープンしなければならない方向を定義する（ステップ４０３の一部として）時に、ユーザは、各方向についてそれをオープンにするか否かを指定するのではなく、定義済みのオープン性テンプレートを適用することを単純に指定することができる。
【００７０】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００７１】
（１）各次元が２つの方向を含む、アドレスによって各次元内で識別される複数のセルを含むスプレッドシート内のセル・アドレス範囲によって定義される名前付き範囲を処理するための方法であって、
・上記名前付き範囲に対して１つまたは複数のオープン方向を指定することによってオープン名前付き範囲を定義するステップと、
・オープンとして指定されたすべての方向で上記オープン名前付き範囲を１アドレスだけ拡張したセル・アドレス範囲を有する隠し名前付き範囲を定義するステップと
を含み、ユーザの動作に応答して、
・１つまたは複数の方向を選択するステップと、
・２つの連続するセル・アドレスの間に、選択された方向の新しいアドレスを挿入することによって、上記隠し名前付き範囲の上記セル・アドレス範囲を増やすステップと、
・オープンとして指定されたすべての方向で１アドレスだけ短縮された上記隠し名前付き範囲のセル・アドレス範囲を用いて上記オープン名前付き範囲を更新するステップと
を含む方法。
（２）１つまたは複数のオープン方向を指定する上記ステップが、
・行軸に沿った右方向または左方向もしくはその両方と、
・列軸に沿った上方向または下方向もしくはその両方と、
・シート軸に沿った前方向または後方向もしくはその両方と
のうちの１つまたは複数を指定するステップ
を含む、上記（１）に記載の方法。
（３）・上記オープン名前付き範囲を
・上記オープン名前付き範囲の名前と、
・上記オープン名前付き範囲のセル・アドレス範囲と、
・オープン方向の識別と、
・上記隠し名前付き範囲の名前と、
・上記隠し名前付き範囲のセル・アドレス範囲と
を含むテーブルと関連付けるステップと、
・上記オープン名前付き範囲が更新されるたびに、上記テーブルを保守管理するステップと
をさらに含む、上記（１）ないし（２）のいずれか一項に記載の方法。
（４）・上記オープン名前付き範囲内で、以前にオープンされた１つまたは複数の方向をクローズするステップ
をさらに含む、上記（１）ないし（３）のいずれか一項に記載の方法。
（５）オープン名前付き範囲を定義する上記ステップまたは１つまたは複数の方向をクローズする上記ステップもしくはその両方が、
・前記オープン名前付き範囲に付加された１つまたは複数の表示属性を変更するステップであって、前記属性が、好ましくは、色、フォント、背景色などを含む、上記変更するステップ
を含む、上記（１）ないし（４）のいずれか一項に記載の方法。
（６）上記（１）ないし（５）のいずれか一項に従う方法を実行するように適合された手段を含む、システム、具体的にはスプレッドシート。
（７）上記（１）ないし（５）のいずれか一項に従う方法を実行するように適合された命令を含む、コンピュータ可読媒体。
【図面の簡単な説明】
【図１】本発明を実施することができるコンピュータ・システムのブロック図である。
【図２】オペレーティング・システム、アプリケーション・ソフトウェアおよび本発明を実行するためのユーザ・インターフェースを含むソフトウェア・システムのブロック図である。
【図３】本発明を実施することができるグラフィカル・ユーザ・インターフェースの基本アーキテクチャおよび機能性を示す図である。
【図４】本発明の好ましい実施形態によるスプレッドシート・ノートブック・インターフェースを示す図である。
【図５】図４に示されたノートブック・インターフェースのツールバー・コンポーネントを示す図である。
【図６】図４に示されたノートブック・インターフェースの個々のページのすばやいアクセスおよび操作のためのページ識別子を示す図である。
【図７】図４に示されたノートブック・インターフェースの個々のページのすばやいアクセスおよび操作のためのページ識別子を示す図である。
【図８】本発明の好ましい実施形態によるOpen Tableの構造を示す図である。
【図９】所与の名前付き範囲が本発明を利用する方法を指定するための好ましいメソッドを示す流れ図である。
【図１０】本発明による、新しい要素（行、列またはシート）の導入時にオープン名前付き範囲を更新するための好ましいメソッドを示す流れ図である。
【符号の説明】
３００  Open Table
３１０  レコード
３１１  User Range Nameフィールド
３１２  User Range Addressフィールド
３１３  Range Openess Directionフィールド
３１４  Hidden Range Nameフィールド
３１５  Hidden Range Addressフィールド
【図１】
0003873132.tif 000002
【図２】
0003873132.tif 000003
【図３】
0003873132.tif 000004
【図４】
0003873132.tif 000005
【図５】
0003873132.tif 000006
【図６】
0003873132.tif 000007
【図７】
0003873132.tif 000008
【図８】
0003873132.tif 000009
【図９】
0003873132.tif 000010
【図１０】
0003873132.tif 000011