(57)【特許請求の範囲】
【請求項１】
コンピュータによって、スプレッドシートアプリケーションにおけるデータのテーブルを処理するための方法であって、
前記スプレッドシートアプリケーションのセル内で、入力データを処理するための１つ又は複数のデータベース関数を受け取ることと、
ここで、前記データベース関数は１つ又は複数の引数を含み、該引数は、前記テーブルのセル内の入力データを参照して、前記データベース関数の実行を調整し、
前記データベース関数は、フィルタ関数、ソート関数、重複除去関数、テーブル付加関数、又は列追加関数のうちの１つであり、
前記１つ又は複数の引数は、数式を含み、
前記データのテーブルの１つ又は複数のセルからなる入力データの選択を受け取ることと、
ここで、前記入力データは、前記スプレッドシートアプリケーション内に存在し、前記データのテーブルは、複数の行と複数の列との両方を占めるセルの集合体として構成され、
前記１つ又は複数のデータベース関数を用いて前記入力データを処理することと、
ここで、前記入力データを処理することは、
前記１つ又は複数のデータベース関数が、前記テーブル内の行毎に前記入力データの選択に適用可能かどうかを判定することと、
前記判定されたデータベース関数を前記入力データの選択の各行に別個に適用することであって、該判定されたデータベース関数を適用する前に、該判定されたデータベース関数が前記引数に基づいて処理の実行の順序付けがなされることとを含み、
前記処理された入力データを前記スプレッドシートアプリケーション内に出力データとして出力することと、
ここで、該出力データは、前記１つ又は複数のデータベース関数が受け取られた前記セル内にアンカーされ、該出力データは、前記スプレッドシートアプリケーションの１つ以上のセルからなるデータの配列として提示され、該配列は、前記データのテーブルから分離されており、
を具え、
前記データベース関数は、前記スプレッドシートアプリケーション内に存在する前記入力データを受取り、該入力データを処理して、前記スプレッドシートアプリケーション内の前記１以上のセルからなるデータの配列からなる前記出力データを生成することができる、前記スプレッドシートアプリケーションの関数であり、
前記１つ又は複数のデータベース関数と共に前記１つ又は複数の引数を受け取る場合において、
前記入力データを処理することは、
１つ又は複数の引数を行毎に適用可能かどうかを判定することと、
前記判定された引数を各行に別個に適用することと、
ここで、前記判定された引数を適用する前に、該判定された引数が所定の処理を実行するための順序付けがなされ、
前記複数の引数のうちの残りの任意の引数又はデータベース関数を適用することと
をさらに含むことを特徴とする方法。
【請求項２】
前記１つ又は複数の引数は、前記データベース関数に対する１つ又は複数の式又は変更子を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記１つ又は複数の引数は、セマンティック参照を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記１つ又は複数の引数は、ユーザ入力装置によって入力されることを特徴とする請求項１記載の方法。
【請求項５】
前記入力データは、データのテーブルであることを特徴とする請求項１記載の方法。
【請求項６】
前記出力データは、データのテーブルであることを特徴とする請求項１記載の方法。
【請求項７】
前記出力データを出力することは、既存のデータの１つ又は複数のアイテムを移動させることを特徴とする請求項１記載の方法。
【請求項８】
前記フィルタ関数は、
少なくとも１つの入力データのアイテムをフィルタ引数と比較することと、
フィルタ引数を満たす前記入力データのアイテムなしで出力データを返すことと
をさらに具えたことを特徴とする請求項１記載の方法。
【請求項９】
前記ソート関数は、
１つ又は複数のソート引数に従って編成された出力データのセットを返すことをさらに具えたことを特徴とする請求項１記載の方法。
【請求項１０】
前記重複除去関数は、
引数で指定された、前記入力データ中の２つのデータのアイテムが同じであることを判定することと、
出力データを返すことであって、前記２つの同じデータのアイテムのうち１つが除去されることと
をさらに具えたことを特徴とする請求項１記載の方法。
【請求項１１】
前記テーブル付加関数は、
入力データの２つのセットを受け取ることと、
出力データを返すことであって、前記入力データの第１のセットの少なくとも一部が前記入力データの第２のセットの少なくとも一部に付加されることと
をさらに具えたことを特徴とする請求項１記載の方法。
【請求項１２】
前記列追加関数は、
１つ又は複数の引数に従って前記入力データからデータの列を作成することと、
出力データを返すことであって、前記出力データは前記入力データおよび前記データの列を含むことと
をさらに具えたことを特徴とする請求項１記載の方法。
【請求項１３】
データの第１の中間セットは、前記引数およびデータベース関数を各行に別個に適用することから作成されることを特徴とする請求項１記載の方法。
【請求項１４】
データの１つ又は複数の後続の中間セットは、前記データの第１の中間セットあるいは前記データの１つ又は複数の後続の中間セットに適用された各残りの引数又はデータベース関数がもとで作成されることを特徴とする請求項１３記載の方法。
【請求項１５】
１つ又は複数の引数を含む１つ又は複数のデータベース関数のうちの１つの選択を受け取ることをさらに具え、
前記入力データを処理することは、
前記１つ又は複数の引数、および前記１つ又は複数のデータベース関数をパースすることと、
１つ又は複数の引数、あるいは１つ又は複数のデータベース関数が行毎に適用可能かどうかを判定することと、
前記判定された引数およびデータベース関数を各行に別個に適用することであって、該引数又はデータベース関数を適用する前に、該引数又はデータベース関数が所定の処理を実行するために順序付けがなされることと、
前記複数の引数のうちの残りの任意の引数又はデータベース関数を適用することと
をさらに含むことを特徴とする請求項１記載の方法。
【請求項１６】
データの第１の中間セットは、前記引数およびデータベース関数を各行に別個に適用することから作成されることを特徴とする請求項１５記載の方法。
【請求項１７】
データの１つ又は複数の後続の中間セットは、前記データの第１の中間セット、あるいはデータの１つ又は複数の後続の中間セットに適用された各残りの引数又はデータベース関数がもとで作成されることを特徴とする請求項１６記載の方法。
【請求項１８】
表示デバイスおよびユーザインターフェース選択デバイスを含むグラフィカルユーザインターフェースを有するコンピュータシステムにおいて、１つ又は複数のデータベース関数を受け取って入力データのセットを適用することをさらに具え、
前記１つ又は複数のデータベース関数を受け取って入力データのセットを適用することは、
前記ユーザインターフェース選択デバイスを用いて、スプレッドシートアプリケーションの１つ又は複数のセルからなる入力データの選択を受け取ることと、
前記表示デバイスを用いて、前記データベース関数が前記入力データに適用された後に出力データを表示することと
をさらに含み、
前記出力データは、スプレッドシートアプリケーションにおいて表示され、
前記１つ又は複数のデータベース関数が受け取られた前記スプレッドシートアプリケーションの前記１つ又は複数のセルにアンカーされ、該出力データは、前記スプレッドシートアプリケーションの１つ以上のセルからなるデータの配列として提示され、該配列は、前記データのテーブルから分離されることを特徴とする請求項１記載の方法。
【請求項１９】
１つ又は複数の引数を１つ又は複数のデータベース関数と共に受け取ることをさらに具え、前記引数は、前記データベース関数をどのように適用するかを調整することを特徴とする請求項１８記載の方法。
【請求項２０】
前記１つ又は複数の引数は、列トークンを含むことを特徴とする請求項１９記載の方法。
【請求項２１】
前記１つ又は複数の引数は、セマンティックであることを特徴とする請求項１９記載の方法。
【請求項２２】
２つ以上の前記データベース関数は、組込みデータベースフォーミュラとして受け取られることを特徴とする請求項１８記載の方法。
【請求項２３】
前記出力データは、前記スプレッドシート中の２つ以上のセルを占めることを特徴とする請求項１８記載の方法。
【請求項２４】
コンピュータにより、請求項１ないし２３のいずれかに記載の方法を実行することが可能な命令を有するコンピュータプログラム。
【請求項２５】
請求項２４記載のコンピュータプログラムを有するコンピュータ読取り可能な記録媒体。
【請求項２６】
スプレッドシートアプリケーションにおけるデータのテーブルを処理するためのシステムであって、
プロセッサと、
該プロセッサにより処理されるコンピュータ実行可能命令を有するメモリと
を具え、前記プロセッサにより処理されるコンピュータ実行可能命令は、
前記スプレッドシートアプリケーションのセル内で、入力データを処理するための１つ又は複数のデータベース関数を受け取ることと、
ここで、前記データベース関数は１つ又は複数の引数を含み、該引数は、前記テーブルのセル内の入力データを参照して、前記データベース関数の実行を調整し、
前記データベース関数は、フィルタ関数、ソート関数、重複除去関数、テーブル付加関数、又は列追加関数のうちの１つであり、
前記１つ又は複数の引数は、数式を含み、
前記データのテーブルの１つ又は複数のセルからなる入力データの選択を受け取ることと、
ここで、前記入力データは、前記スプレッドシートアプリケーション内に存在し、前記データのテーブルは、複数の行と複数の列との両方を占めるセルの集合体として構成され、
前記１つ又は複数のデータベース関数を用いて前記入力データを処理することと、
ここで、前記入力データを処理することは、
前記１つ又は複数のデータベース関数が、前記テーブル内の行毎に前記入力データの選択に適用可能かどうかを判定することと、
前記判定されたデータベース関数を前記入力データの選択の各行に別個に適用することであって、該判定されたデータベース関数を適用する前に、該判定されたデータベース関数が前記引数に基づいて処理の実行の順序付けがなされることとを含み、
前記処理された入力データを前記スプレッドシートアプリケーション内に出力データとして出力することと、
ここで、該出力データは、前記１つ又は複数のデータベース関数が受け取られた前記セル内にアンカーされ、該出力データは、前記スプレッドシートアプリケーションの１つ以上のセルからなるデータの配列として提示され、該配列は、前記データのテーブルから分離されており、
を実行するように具え、
前記データベース関数は、前記スプレッドシートアプリケーション内に存在する前記入力データを受取り、該入力データを処理して、前記スプレッドシートアプリケーション内の前記１以上のセルからなるデータの配列からなる前記出力データを生成することができる、前記スプレッドシートアプリケーションの関数であり、
前記１つ又は複数のデータベース関数と共に前記１つ又は複数の引数を受け取る場合において、
前記入力データを処理することは、
１つ又は複数の引数を行毎に適用可能かどうかを判定することと、
前記判定された引数を各行に別個に適用することと、
ここで、前記判定された引数を適用する前に、該判定された引数が所定の処理を実行するための順序付けがなされ、
前記複数の引数のうちの残りの任意の引数又はデータベース関数を適用することと
をさらに含むことを特徴とするシステム。
【請求項２７】
１つ又は複数の引数を含む１つ又は複数のデータベース関数のうちの１つの選択を受け取ることをさらに具え、
前記入力データを処理することは、
前記１つ又は複数の引数、および前記１つ又は複数のデータベース関数をパースすることと、
１つ又は複数の引数、あるいは１つ又は複数のデータベース関数が行毎に適用可能かどうかを判定することと、
前記判定された引数およびデータベース関数を各行に別個に適用することであって、該引数又はデータベース関数を適用する前に、該引数又はデータベース関数が所定の処理を実行するために順序付けがなされることと、
前記複数の引数のうちの残りの任意の引数又はデータベース関数を適用することと
をさらに含むことを特徴とする請求項２６記載のシステム。
【請求項２８】
データの第１の中間セットは、前記引数およびデータベース関数を各行に別個に適用することから作成されることを特徴とする請求項２７記載のシステム。
【請求項２９】
データの１つ又は複数の後続の中間セットは、前記データの第１の中間セット、あるいはデータの１つ又は複数の後続の中間セットに適用された各残りの引数又はデータベース関数がもとで作成されることを特徴とする請求項２８記載のシステム。
【請求項３０】
表示デバイスおよびユーザインターフェース選択デバイスを含むグラフィカルユーザインターフェースを有するコンピュータシステムにおいて、１つ又は複数のデータベース関数を受け取って入力データのセットを適用することをさらに具え、
前記１つ又は複数のデータベース関数を受け取って入力データのセットを適用することは、
前記ユーザインターフェース選択デバイスを用いて、スプレッドシートアプリケーションの１つ又は複数のセルからなる入力データの選択を受け取ることと、
前記表示デバイスを用いて、前記データベース関数が前記入力データに適用された後に出力データを表示することと
をさらに含み、
前記出力データは、スプレッドシートアプリケーションにおいて表示され、
前記１つ又は複数のデータベース関数が受け取られた前記スプレッドシートアプリケーションの前記１つ又は複数のセルにアンカーされ、該出力データは、前記スプレッドシートアプリケーションの１つ以上のセルからなるデータの配列として提示され、該配列は、前記データのテーブルから分離されることを特徴とする請求項２６記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、スプレッドシートアプリケーションの分野に関する。より詳細には、本発明は、スプレッドシート中のデータの再編成に関する。
【背景技術】
【０００２】
情報化時代で生き残るために、企業および組織は、自己の組織、市場、および運営に関する有用な情報を必要としている。有用なビジネス情報は、通常、理解しやすく、吸収しやすい凝縮されたデータのコレクションである。有用な情報を作成するために、企業および組織は、一般に、数多くの異なるソースに由来する膨大なデータのコレクションを獲得し、次いで、データをより有用な形態およびフォーマットに凝縮し、編成する。企業および組織は、通常、ソフトウェアパッケージに依拠して、データを有用な情報に凝縮したり、操作したり、または定式化したりする。こうしたソフトウェアパッケージにより、膨大なデータコレクションの操作が可能になり効率的になる。データコレクションから有用な情報を導き出すのに使用される最も一般的なソフトウェアパッケージの１つは、マイクロソフト（登録商標）社によって提供されているＭｉｃｒｏｓｏｆｔ（登録商標）Ｅｘｃｅｌスプレッドシートアプリケーションなどのスプレッドシートアプリケーションである。
【０００３】
いくつかのスプレッドシートアプリケーションは、データベースオペレーションを用いてデータのある種の操作を可能にする。ソートやフィルタなどのデータベースオペレーションにより、ユーザが、スプレッドシート内のデータをフォーマットしたり、凝縮したり、または編成することができるようになる。Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｅｘｃｅｌスプレッドシートアプリケーションなどのスプレッドシートアプリケーション内で、データベースオペレーションは、一度限りのオペレーションとしてユーザに利用可能になるだけである。データベースオペレーションは、一般に、スプレッドシートアプリケーションにおけるドロップダウンメニューを介してアクセスされる。メニューの選択によって一般に、ユーザがデータベースオペレーションを使用するプロセスを段階的に導くためのオペレーションユーザインターフェースが開く。遺憾なことに、ユーザは、こうしたオペレーションを一度しか用いることができず、データベースオペレーションが機能する仕方を変更する少数の選択肢しか与えられていない。データベースオペレーションを繰り返すために、ユーザは、再度、メニューからオペレーションを選択し、もう一度オプションを入力しなければならない。このように、データベースオペレーションは一般に、自動的に繰り返し可能ではなく、柔軟ではない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
こうした問題は、ユーザがいくつかの異なるソースに由来する大きなデータコレクションを操作したいと望む大きな組織であるとき、深刻となる。スプレッドシートアプリケーションにおいて複雑でテーブルベースのデータベースオペレーションを必要とするユーザは、しばしば、データを手作業で操作するか、またはマクロコードを作成してデータを用意することになる。最初のオプションは、時間がかかり費用が高く間違いが起こりやすい。というのは、この解決策は、データを変更するたびに手作業の介在を要するためである。このプロセスを自動化するために、ユーザは、Ｖｉｓｕａｌ  Ｂａｓｉｃ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ（登録商標）プログラムによって作成されるようなマクロコードを用いることができるであろう。遺憾なことに、マクロコードのシンタックスおよび編成は、スプレッドシートアプリケーションのほとんどのユーザにとって難解である。マクロコードはまた、保守することが困難になることがある。ほとんどのユーザは、実際のコードを解読することができず、したがって、ユーザは、エラーを訂正することができず、将来、この解決策を調整することができない。
【０００５】
加えて、ユーザは、しばしば、反復または定期的なベースでスプレッドシートに新しいデータを導入する。例えば、月次売上データは、月毎にスプレッドシートアプリケーションに組み入れられる。ユーザは、毎月にデータを操作して、経過した月の業績について有用な情報を作成しなければならない。月次データの操作を達成するために、ユーザは、極めて時間がかかり不経済となる数多くのデータベースオペレーションを毎月使用するか、ユーザが新しいデータを扱うためにしばしば変更しなければならない上述の手作業のオペレーションを使用しなければならず、あるいは新しい一式のデータを扱うことができるが作成が困難な上述のマクロコードを作成しなければならない。
【課題を解決するための手段】
【０００６】
本発明は、スプレッドシートにおいてデータを操作することができる「データベースフォーミュラ」を作成するために使用することができるデータベース関数の一式に関する。各データベース関数は、いくつかの定義可能なパラメータまたは引数を有し、他のデータベース関数、他のスプレッドシート関数、およびカスタマイズ可能な出力を作成する他の演算子と組み合わせることができる。このように、ユーザは、特定の形態またはフォーマットのデータ出力に対するユーザの要望を網羅できる数多くのオプションを入力することができる。
【０００７】
本発明の実施形態では、各データベース関数への入力は、データのセットである。データのセットは、２行以上の行、２列以上の列、または２列以上の列および２行以上の行を占めるセルの配列とすることができる。本発明の実施形態では、各データベース関数の出力は、データのセットとすることができる。このように、各データベース関数は、複数のデータ値を有するデータ、「バルク」データを出力する新しいデータのテーブルを作成することができる。これらのデータベース関数は、データベース関数が入力データにどのように作用するかに応じて、編成およびサイズが異なるデータのセットをユーザが作成できるようにする。
【０００８】
本発明の一実施形態では、スプレッドシートアプリケーションにおいてデータのテーブルを操作するための方法は、１つまたは複数のデータベース関数を受け取ることと、データのテーブル内から入力データについての選択を受け取ることと、１つまたは複数のデータベース関数に従って入力データを操作することと、スプレッドシートに出力データを提示することとを備える。いくつかの実施形態では、２つ以上のデータベース関数は、組込みデータベースフォーミュラとして受け取られる。
【０００９】
本発明は、スプレッドシートへの入力とスプレッドシートからの出力を含むことができる。一実施形態では、１つまたは複数のデータベース関数は、１つまたは複数の引数を有する。さらなる実施形態では、引数の１つがセマンティック参照を有する。いくつかの実施形態では、ユーザは、１つまたは複数の引数を提供する。さらなる実施形態では、１つまたは複数の引数は、列トークンを含む。一実施形態では、１つまたは複数の引数は、数式を含む。
【００１０】
いくつかの実施形態では、入力データは、データのテーブルである。本発明の実施形態では、出力データは、データのテーブルである。いくつかの実施形態では、出力データを提示することにより、既存のデータの１つまたは複数のアイテムが移動するようにする。いくつかの実施形態では、出力データは、スプレッドシートの２つ以上のセルを占める。
【００１１】
本発明はまた、データベース関数の例示的実施形態を含む。一実施形態では、データベース関数は、フィルタ関数、ソートフォーミュラ、重複除去フォーミュラ、テーブル付加フォーミュラ、または、列追加フォーミュラを含む。いくつかの実施形態では、フィルタ関数は、少なくとも１つのデータのアイテムをフィルタ引数と比較することと、フィルタ引数に合うどの入力データのアイテムもなしで出力データを返すこととを備える。ある実施形態では、ソート関数は、１つまたは複数のソート引数に従って編成された出力データのセットを返すことを備える。いくつかの実施形態では、重複除去関数は、引数で指定され、入力データで２つのデータアイテムが同じであることを判定することと、同様の２つのデータのアイテムうちの１つが除去された出力データを返すこととを備える。いくつかの実施形態では、テーブル付加関数は、入力データの２つのセットを取り出すことと、入力データの第１のセットの少なくとも一部分が、入力データの第２のセットの少なくとも一部分に付加される出力データを返すこととを備える。いくつかの実施形態では、列追加関数は、１つまたは複数の引数に従って入力データからデータの１列を作成することと、出力データが入力データとデータの列とを含む出力データを返すこととを備える。
【００１２】
本発明の実施形態では、入力データを操作することは、１つまたは複数の引数を１つまたは複数のデータベース関数と共に受け取ることと、１つまたは複数の引数および１つまたは複数のデータベース関数をパースすることと、１つまたは複数の引数あるいは１つまたは複数のデータベース関数が行毎に適用できるかどうかを判定することと、１つまたは複数の引数あるいは１つまたは複数のデータベース関数が行毎に適用できる場合、これらの引数またはこれらのデータベース関数を各行に別個に適用することと、任意の残りの引数またはデータベース関数を適用することとを備える。本発明のさらなる実施形態では、データの第１の中間セットが引数およびデータベース関数を各行に別個に適用することから作成される。いくつかの実施形態では、１つまたは複数の後続のデータの中間セットは、データの第１の中間セットあるいは１つまたは複数の後続のデータの中間セットに適用された各残りの引数またはデータベース関数のため、作成される。
【００１３】
本発明の実施形態では、出力データを表示するためのユーザインターフェースは、入力データのセットに適用するために１つまたは複数のデータベース関数を受け取ることと、入力データの選択を受け取ることと、データベース関数が入力データに適用された後に出力データを表示することとについて提供する。
【００１４】
本発明は、コンピュータプロセス、コンピュータシステム、またはコンピュータプログラム製品などの製造品として実施することができる。コンピュータプログラム製品は、コンピュータシステムによって可読であって、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化しているコンピュータ記憶媒体とすることができる。コンピュータプログラム製品は、コンピュータシステムによって可読であって、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化している搬送波上の伝播信号とすることができる。
【００１５】
本発明およびその改良点の完全に理解は、以下に簡潔にまとめた添付の図面、本発明の現在の例示的実施形態の詳細な説明、および添付の特許請求の範囲を参照することにより、得ることができる。
【発明を実施するための最良の形態】
【００１６】
これから本発明の実施形態が示されている添付の図面を参照して、本発明について以下により完全に説明するであろう。しかし、本発明は、多くの異なる形態で実施することができ、本明細書で説明する実施形態に限定されるものと解釈されるべきではない。そうではなく、これらの実施形態は、本開示が詳細かつ完全となり、本発明の範囲を当業者に十分に伝えるために提供されている。
【００１７】
一般に、本発明は、スプレッドシートアプリケーションにおいてデータベース関数を適用する方法の実施形態に関する。本発明の実施形態によれば、ここに記載の方法は、単一のスタンドアロンのコンピュータシステム上で読み込まれ、実行されるコンピュータ命令のセットとして実行することができる。
【００１８】
本発明は、１つまたは複数のコンピュータまたは他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで記述することができる。一般的に、プログラムモジュールは、特定のタスクを実行したり、または特定の抽象データ型を実装したりする、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、様々な実施形態において所望に応じて組み合わせたり、または分散させたりすることができる。
【００１９】
本発明の態様を有する例示的スプレッドシートアプリケーションが、図１Ａ、図１Ｂ、および図１Ｃに示されている。本発明の実施形態では、スプレッドシートアプリケーションまたはスプレッドシートは、データを格納し、データに対する計算を行い、データを表示することができるソフトウェアアプリケーションである。スプレッドシートは、１つまたは複数のスプレッドシートを有するワークブックとして編成される。各スプレッドシートは、一連の行と一連の列の交差部分から形成される複数のセルを有する。データのアイテムはセルに配置することができる。データテーブルは、スプレッドシート内の複数の行および複数の列の両方を占めるセルの集合体である。スプレッドシートは、当業者に周知であり、これ以上の説明をしないであろう。
【００２０】
例示的スプレッドシート１００を図１Ａに示す。スプレッドシート１００は、データのテーブル１０２を含む。テーブル１０２は、「SalesList」と称するタイトル１０４を有する。テーブル１０２は、行５から行２６までの２２行１０６を有する。テーブル１０２はまた、行５において「Country」、「Total Sales」、および「Average Sales」とラベル付けされた列ヘッダ１１０を有する３つの列１０８を有する。データは、列Ｄおよび列Ｅにおける行６から行２６までにある。
【００２１】
１つまたは複数のデータベース関数を有するデータベースフォーミュラをスプレッドシート１００に入力することができる。本発明の実施形態では、データベース関数は、入力データのセットを受け取り、その入力データを操作して別の形態またはフォーマットに操作し、出力データのセットを生成することができるスプレッドシートアプリケーションの関数である。ある範囲のデータまたはデータのセットは、スプレッドシートの１つまたは複数のセルを占める１つまたは複数のデータのアイテムである。データベース関数は、データの外観または編成を変更する。一般に、データベース関数は、入力データを認識し、入力データ内のデータのアイテムを除去するか、または入力データにデータを追加する。本発明の実施形態では、いくつかのデータベース関数は、ソート、フィルタ、テーブルの付加、重複の除去、および列の追加を備える。これらの特定の実施形態を下記でより詳細に説明するが、本発明は、これらの具体的な実施形態に限定されない。本発明のいくつかの実施形態では、データベース関数は、繰り返し可能である。言い換えれば、入力データが変化するとき、データベース関数は、自動的に再実行されて、更新された出力データを提供することができる。
【００２２】
いくつかの実施形態では、入力データは、設定サイズを有する必要はないが、変更および更新を行うことができ、データベース関数は、そうした変更に適合するであろう。一実施形態では、データベース関数は、セマンティック指定を用いることができる。セマンティック的に指定すること、すなわちセマンティック指定は、データのセットを選択する特定の方法のことを指す。セル、行、または列を参照する代わりに、ユーザは、ユーザが選択したいスプレッドシートデータを見つけるためにスプレッドシートが使用できるある種の言語記述子を使用することができる。例えば、Ｃ列が、あるグループの子供のすべての年齢を含む場合、ユーザは、例えば「[age]=3」のような式表現でＣ列に対してセマンティック指定を使用することができる。セマンティック指定の「age」は、引数の列トークンである。本発明の実施形態では、列トークンは、特定の列を参照するある種の引数である。上記の例では、ターム「age」は、列トークンである。列トークンは、スプレッドシートが、ある特定の列を認識し、フォーミュラまたは引数をその列に適用可能とする任意の仕方で表現することができる。セマンティック指定については、参照によりその全体を本明細書に組み入れる、２００４年９月３０日出願の「Method and Implementation for referencing dynamic data in spreadsheet applications」と称する関連の米国特許文献でさらに詳細に説明されている。
【００２３】
データベース関数の出力は、１つまたは複数のセルを占めることができるデータのセットとすることができる。出力データは、１つまたは複数の適用されたデータベース関数から作成されたデータの最終セットである。換言すれば、すべてのデータベース関数が入力データに提供された後、出力データがデータの最終セットを形成する。一実施形態では、ユーザまたはスプレッドシートアプリケーションは、出力データのサイズ、出力データが占めることになるセルの範囲を定義する必要はないが、その出力データのサイズは、境界付けられず、入力とその入力データに関するデータベース関数の効果とを完全に反映することができる。
【００２４】
各データベース関数は、データベース関数の実行を調整または適合することができる１つまたは複数のカスタマイズ可能な引数またはパラメータを有することができる。本発明の実施形態では、１つまたは複数の引数は、データベース関数に対する１つまたは複数の式または変更子を指す。引数は、フォーミュラを調整または適応して特定の仕方で実行することができる。引数は、代数、ブール、または他の形式とすることができる。一実施形態では、引数は、セルを参照することができる。本発明の実施形態では、式は、数学もしくは論理記号、または記号の意味ある組合わせである。本説明では、式は、データベースフォーミュラ内のデータベース関数または引数のことを指すことがある。
【００２５】
本発明の実施形態では、データベースフォーミュラは、ある単一のフォーミュラ定義において一連のデータベースオペレーションを行うために、１つまたは複数のデータベース関数を利用するフォーミュラである。本発明の実施形態では、組み込みデータベースフォーミュラまたはネストされたデータベースフォーミュラは、データベースフォーミュラのシンタックス内に１つまたは複数のデータベース関数を配置する能力を指す。例えば、データベースフォーミュラは、式「SORT(table1(FILTER))」を有することがある。データベースフォーミュラのこの例では、FILTER関数が、SORT関数内に組み込まれている。関数を組み込むことにより、ユーザが、別個のフォーミュラを作成することなく、いくつかのやり方でデータを操作する複雑な式を作成できるようにする。
【００２６】
データベース関数を有する例示的データベースフォーミュラ１０２が、図１ＢのＧ５セル１１２に示されている。例示的データベースフォーミュラ１１２は、FILTER関数を含む。FILTER関数の引数により、データベースフォーミュラの引数の中のテーブル１０２のセマンティック参照１１４に従って、フィルタがテーブル「SaleList」１０２に適用されることになる。データベースフォーミュラ１１２はまた、他の引数１１６を含む。データベースフォーミュラ１１２は、引数１１６「[Total Sales]>20000」に見ることができるように、列トークンのセマンティック参照１１６を使用している。列トークンは、Ｄ列１１８のデータを指し示す。この引数１１６により、Ｄ列内のデータが値２００００より大きくないデータのすべての行が最終出力データから除去されるべきである。このように、この例でのデータベースフォーミュラ１１２は、Total Salesの値２００００より大きくないテーブル「SalesList」１０２のすべての行をフィルタして除去することになる。
【００２７】
図１Ｃを参照すると、出力データが、列５から列１９までの行のセット１２２と、列Ｇから列Ｉまでの列のセット１２４を占める第２のテーブル１１２に示されている。出力データテーブル１１２は、ユーザがデータベースフォーミュラを入力するＧ５セルでアンカされている。図１Ｃに見られるように、スプレッドシートアプリケーションは、FILTER関数をテーブル１０２に適用することにより、「SalesList」テーブル１０２から７行のデータを除去している。除去された行は、SalesListテーブル１０２のＤ列１１８において２００００より大きいデータ値を有していなかったすべての行であり、それらは、行６、１１、１５、１６、１７、１８、および１９である。出力データは同じ列数を維持しているが、行数が変更されている。出力データは、データベースフォーミュラが入力された１つのセルにではなく、ある範囲の一連のセルに配置されている。
【００２８】
いくつかの実施形態では、データベース関数でデータを操作するプロセスは、出力データが表示されると終了することができる。他の実施形態では、１つまたは複数のデータベース関数を有する１つのデータベースフォーミュラからの出力データは、１つまたは複数のデータベース関数を有する他のスプレッドシート関数、または他のデータベースフォーミュラの入力を形成することができる。いくつかの実施形態では、選択された入力データが変わると、データベースフォーミュラまたはデータベース関数は繰り返し再実行することができる。このように、データベースフォーミュラまたは関数は、指定された入力データに対するどんな変更の後でも、再適用し、出力データを再作成する。本質的に、データベース関数は、入力データの変更の際に再計算をすることができる他のスプレッドシート関数と同様に動作することができる。データベース関数およびフォーミュラの再適用は、単一のデータベースオペレーションの適用とは異なる。データベースフォーミュラおよびデータベース関数の再適用については、上記でより完全に説明されている。
【００２９】
本発明を実装することができる適切な動作環境を図２に示す。この動作環境は、適切な動作環境の一例にすぎず、本発明の使用または機能の範囲に関していかなる限定も示唆するものではない。本発明と共に使用するのに適切となり得る他の周知のコンピューティングシステム、環境、および／または構成には、以下に限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および上記の任意のシステムまたはデバイスを含む分散コンピューティング環境などが含まれる。
【００３０】
図２を参照すると、本発明を実施するための例示的システムは、コンピューティングデバイス２００などのコンピューティングデバイスを含んでいる。その最も基本的な構成では、コンピューティングデバイス２００は、典型的には、少なくとも１つの処理ユニット２０２、およびメモリ２０４を含む。コンピューティングデバイス２００の正確な構成およびタイプに応じて、メモリ２０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこれら２つの何らかの組合わせとすることができる。コンピューティングデバイス２００の最も基本的な構成は、破線２０６によって図２に示されている。さらに、デバイス２００は、追加の特徴／機能を有することもできる。例えば、デバイス２００は、これだけに限定されないが、磁気または光学式のディスクまたはテープを含む追加の（リムーバルおよび／または非リムーバルの）ストレージを含むこともできる。このような追加のストレージは、図２では、リムーバルストレージ２０８および非リムーバルストレージ２１０によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のための任意の方法または技術で実装された揮発性および不揮発性、リムーバルおよび非リムーバルの媒体を含む。メモリ２０４、リムーバルストレージ２０８、および非リムーバルストレージ２１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ディスクストレージデバイス、あるいは所望の情報を格納するために使用することができ、コンピューティングデバイス２００によってアクセスすることができる他の任意の媒体が含まれる。いずれのこのようなコンピュータ記憶媒体もデバイス２００の一部とすることができる。
【００３１】
デバイス２００はまた、デバイス２００が他のデバイスと通信することを可能にする通信接続２１２を収容することもできる。通信接続２１２は、通信媒体の一例である。通信媒体は、一般に、搬送波または他のトランスポートメカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号に情報を符号化するようにその特性の１つまたは複数を設定または変更した信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。
【００３２】
デバイス２００は、キーボード、マウス、ペン、音声入力デバイス、およびタッチ入力デバイスなどの入力デバイス２１４を含むこともできる。ディスプレイ、スピーカ、プリンタなどの出力デバイス２１６を含むこともできる。すべてのこれらのデバイスは当業者に周知であり、ここで詳細に論じる必要はない。
【００３３】
コンピューティングデバイス２００は、通常、少なくとも何らかの形態のコンピュータ可読媒体を含む。コンピュータ可読媒体は、処理ユニット２０２によってアクセスすることができる任意の利用可能な媒体とすることができる。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。上記の任意の組合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。本明細書で使用される用語のコンピュータ可読媒体は、記憶媒体と通信媒体の両方を含む。
【００３４】
本発明の態様を有するスプレッドシートアプリケーション３００の機能図を図３に示す。スプレッドシートアプリケーション３００は、ユーザ入力３０２を受け入れることができるスプレッドシートモジュール３０６を含む。スプレッドシートモジュール１００は、スプレッドシートモジュール３０６の一実施形態である。本発明の実施形態では、ユーザ入力３０２は、１つまたは複数のデータベース関数３１２、１つまたは複数のデータベース関数を有する１つまたは複数のデータベースフォーミュラ３１４、および／または入力データのセットの選択３０４とすることができる。データベースフォーミュラ１１２は、データベースフォーミュラ３１４の一実施形態である。入力データ１０２は、入力データ３０４の一実施形態である。スプレッドシートモジュール３０６は、データベース関数およびデータベースフォーミュラを適用することができる。スプレッドシートモジュール３０６は、データベース関数３１２またはデータベースフォーミュラ３１４を、入力データのセット３０４に適用することができる。スプレッドシートモジュール３０６は、データベース関数３１２またはデータベースフォーミュラ３１４に従って、入力データ３０４を操作することができ、出力データのセット３１０を作成する。出力データ１２０は、出力データ３１０の一実施形態である。いくつかの実施形態では、スプレッドシートモジュール３０６は、出力データ３１０を、スプレッドシート内の１つまたは複数のセルに配置することができる。他の実施形態では、スプレッドシートモジュール３０６は、他の関数または計算において出力データを使用することができる。いくつかの実施形態では、スプレッドシートモジュール３０６は、最終的に出力データ３１０を生成する前に、１つまたは複数のデータの中間セット３１６を作成することができる。データの中間セット３１６は、スプレッドシートが連続または後続のデータベース関数３１２または引数の実行と実行の間に作成しなければならないデータのテーブルまたはデータのセットを指す。各後続のデータベース関数３１２または引数は、最新のデータの中間セット３１６に適用することができる。
【００３５】
スプレッドシートアプリケーション３００は、データベースフォーミュラ３１４にあってもデータベースフォーミュラ３１４とは別個であっても、データベース関数３１２を受け入れることができ、データベース関数３１２に従ってデータベースオペレーションを行うことができる。換言すれば、ユーザは、入力データの形態、フォーマット、編成、構造、または内容を操作するデータベース関数３１２を選択または提供することできる。いくつかの実施形態では、データベース関数３１２は、テーブル全体を含む入力データの配列３０４に適用することができ、出力データ３１０を別個のデータ配列として提供することができる。他の実施形態では、データベース関数３１２は、基となっている入力データ３０４が変化するときデータベース関数３１２が再実行されることになるという点で動的である。このように、ユーザは、データベース関数３１２を手動で再適用する必要はなく、データベース関数３１２は、入力データ３０４の任意の変化するソースから、出力データ３１０を継続的に生成することになる。
【００３６】
（データベース関数３１２のような）１つまたは複数のデータベース関数を（入力データ３０４のような）入力データのセットに適用するための方法４００の一実施形態を図４に示す。先ず、提供オペレーション４０２が、ユーザに、１つまたは複数のデータベース関数１０２の選択肢を提供する。本発明の実施形態では、（スプレッドシートモジュール３０６などの）スプレッドシートモジュールは、データベース関数をユーザに利用可能にすることによって、データベース関数を提供することができる。一実施形態では、スプレッドシートモジュールは、メニューなどでデータベース関数のリストを提供することができる。他の実施形態では、スプレッドシートモジュールは、ユーザが（スプレッドシート３００などの）スプレッドシート中にデータベース関数の名前をタイプすることができるようにすることによって、データベース関数を提供する。
【００３７】
次に、受入れオペレーション４０４は、データベース関数のユーザのエントリを参照することを受け入れる。本発明の実施形態では、スプレッドシートモジュールは、ユーザがデータベース関数を入力することができるセルにデータベース関数を格納することができる。他の実施形態では、スプレッドシートモジュールは、データベース関数が入っている（データベースフォーミュラ３１４などの）データベースフォーミュラを、ユーザがデータベースフォーミュラを入力することができるセルに格納することができる。
【００３８】
次に、受入れオペレーション４０６では、１つまたは複数の引数を受け入れる。本発明の実施形態では、引数は、データベース関数の実行を調整するかまたは適合する式である。一実施形態では、引数は、より大きなデータベースフォーミュラの部分とすることができる。他の実施形態では、引数は、データベース関数のシンタックスの部分とすることができる。スプレッドシートモジュールは、データベース関数と共に引数を格納することができる。
【００３９】
次に、受入れオペレーション４０８は、入力データのセットの選択を受け入れる。入力データは、データの１つまたは複数のセルとすることができる。一実施形態では、ユーザは、入力データのセル範囲を入力することができる。他の実施形態では、ユーザは、入力データのセットを参照するためにセマンティック指定を用いることができる。さらに他の実施形態では、ユーザは、マウスまたは他のグラフィカルユーザインターフェース入力デバイスを用いて、入力データを強調表示し選択することができる。スプレッドシートモジュールは、この入力データの選択をデータベース関数と共に格納することができる。データベース関数、引数、入力データ選択に対して必要な任意の訂正は、スプレッドシートモジュールによってプロンプトすることができ、ユーザによって行うことができる。いくつかの実施形態では、ユーザは、データベース関数、入力データ選択、および１つまたは複数の引数を、単一の式として入力することができる。
【００４０】
次に、操作オペレーションは、１つまたは複数のデータベース関数に従って入力データを操作する。本発明の実施形態では、スプレッドシートモジュールは、選択された入力データに関して、引数と共にデータベース関数を実行する。スプレッドシートモジュールは、データベース関数のタイプおよび付随する引数に従って入力データを操作する。説明したように、入力データを操作することは、入力データの編成またはフォーマットに対する任意のタイプの変更を意味することができる。一実施形態では、（任意の組込みデータベースフォーミュラのうち最初にリストされたもの、または一連の引数の最初の引数を意味する）第１のデータベース関数または引数が、入力データに関して実行される。次いで、スプレッドシートモジュールは、一連の順序で各後続の関数または引数を通して進める。いくつかの実施形態では、スプレッドシートは、各関数または引数の適用後、（データの中間セット３１６など）データの中間セットを出力する。最終の関数または引数は、（出力データ３１０などの）出力データを作成する。
【００４１】
例えば、FILTER関数およびソートフォーミュラが、同じデータのテーブルに適用される場合、スプレッドシートは、まず、フィルタオペレーションの後であるが、ソートオペレーションの前に、第２のデータテーブルなどのデータの中間セットを作成することができる。スプレッドシートは、このデータの中間セットを格納することができる。次いで、スプレッドシートは、ソートフォーミュラをデータの中間セットに適用して、出力データを作成することができる。フォーミュラまたは式の順次的または連続する実行と実行との間に作成され、そして／または格納された任意のデータが、データの中間セットである。１つまたは複数のデータベース関数を用いてデータを操作するための方法の一実施形態のより詳細については、図５を参照して説明する。
【００４２】
次に、送りオペレーション４１２では、出力データをスプレッドシートに送る。出力データは、新しいデータのテーブルまたはデータのセットとすることができる。本発明の実施形態では、スプレッドシートモジュールは、出力データを形成する。一実施形態では、スプレッドシートモジュールは、列および行ヘッダを有するテーブルを生成する。一実施形態では、スプレッドシートモジュールは、出力データに名前を付けることができる。
【００４３】
一実施形態では、スプレッドシートモジュールは、出力データのサイズおよび構成を判定する。スプレッドシートモジュールは、いくつの行およびいくつの列で出力データを構成するかを判定することができる。次いで、スプレッドシートモジュールは、スプレッドシートに出力データを配置する十分なスペースがスプレッドシートに存在するかどうかを判定することができる。一実施形態では、スプレッドシートモジュールは、データベース関数またはフォーミュラがアンカされるセルを見つけることができる。スプレッドシートモジュールは、次いで、アンカセルの周辺の列と行を何らかの既存データについてチェックすることができる。既存のデータが存在する場合、既存のデータがシフトされて出力データのための場所を作ることができる。
【００４４】
次に、提示オペレーション４１４は、出力データを提示する。本発明の実施形態では、スプレッドシートモジュールが、出力データをスプレッドシートに表示する。出力データは、１つのセルのデータ、列または行のある範囲のデータ、テーブルのデータ、あるいは、任意の配置のセルまたはスプレッドシートの他の任意の配置のデータを形成することができる。
【００４５】
（データベース関数３１２のような）１つまたは複数のデータベース関数を用いて（入力データ３０４のような）入力データを操作するための方法の他の実施形態５００を図５に示す。まず、パースオペレーション５０２が、（データベースフォーミュラ３１４などの）データベースフォーミュラまたはデータベース関数をパースする。本発明の実施形態では、（スプレッドシートモジュール３０６などの）スプレッドシートモジュールが、ユーザから、１つまたは複数の引数を含むことができる１つまたは複数のデータベースフォーミュラまたは関数を受け取る。いくつかの実施形態では、ユーザは、１つまたは複数のデータベース関数がデータベースフォーミュラに組み込まれるフォーミュラ式を提供することができる。そして、スプレッドシートアプリケーションによって受け取られるデータベースフォーミュラ式は、REMOVE DUPLICSTESフォーミュラ内のSORTフォーミュラ内でFILTER関数を有することができる。このフォーミュラ式は、次のようなものにすることができる：「=RemoveDuplicates(Sort(Filter(Tablel, [Column 1]="Product 1", [Sales]>1200), [Salesperson Name], 1), [Column 1], [Salesperson Name])」。この例では、フォーミュラにより、「salesperson」によってソートされ、単一の注文で販売員が１２００単位より多く販売した製品が含まれるようにフィルタされ、重複した販売員／製品の名前の組合せが除去されたリストがもたらされる。
【００４６】
いくつかの実施形態では、組込みデータベースフォーミュラは、スプレッドシートに異なる式を、これらの式がデータベース関数であるかデータベース関数の引数であるかにかかわらず、パースするように要求することができる。データベースフォーミュラは、組込みか独立かにかかわらず、１つまたは複数の引数を有することができる。一実施形態では、スプレッドシートモジュールは、各式を別個のデータベースオペレーションとして取り扱うことができる。このように、各式は、分離され、個別に評価される。このデータベースオペレーションのコレクションは、プロセスにおいて任意の順序および任意の時点で、入力データに適用することができる。このように、一連の順序でこれらの式を実行するのではなく、スプレッドシートモジュールは、データベースオペレーションの適用の順序および／または方法を変更して、データベースフォーミュラの実行を最適化することができる。いくつかの実施形態では、後のアクセスのためにパースされた式を格納することができる。
【００４７】
次に、取り出しオペレーション５０４は、パースされた式を取り出す。いくつかの実施形態では、スプレッドシートモジュールは、格納され、パースされた式の１つを取り出すことができる。スプレッドシートモジュールは、メモリにアクセスして、式を呼び出し、さらなる評価のために式を提供することができる。式を一度に１つ取り出すことによって、スプレッドシートモジュールは、データベース関数および引数の実行を再順序付けすることができる。
【００４８】
次に、判定オペレーションは、式のクラスを判定する。本発明の実施形態では、式は、２つのクラスの１つを有することができる。第１に、式はデータの単一の行または行毎に適用することができる。第２に、式は単一の行にではなく「テーブル全体」のデータに適用することができる。あるデータベースオペレーションは、単一の行に関して作用することができる。例えば、１つのセルでデータ値を調べるフィルタオペレーションは、行毎に適用することができる。対照的に、あるデータベースオペレーションは、テーブル「全体」または全部のデータにのみ適用することができる。例えば、ソートオペレーションは、テーブル全体のデータにのみ適用することができる。このように、本発明の実施形態では、スプレッドシートモジュールは、スプレッドシートモジュールが単一のデータ行に適用できると分かっている式のセットに対して式をチェックする。式がこのリストにあれば、その式は直ちに適用することができる。
【００４９】
式が行毎に適用できる場合、分離オペレーション５０８は、行毎の式を分離する。一実施形態では、スプレッドシートモジュールは、式を分離し、別個のグループとして格納する。いくつかの実施形態では、式を格納するのではなく式を入力データの各行に一連の順序で直ちに適用する。他の実施形態では、スプレッドシートモジュールは、式を適用する前にさらなる評価のためにあらゆる行毎の式を格納する。それゆえ、スプレッドシートモジュールは、後の処理のために式を分離することができる。
【００５０】
次に、判定オペレーション５１０は、検討すべき他の式が存在するかどうかを判定する。本発明の実施形態では、スプレッドシートモジュールは、すべての式が、クラス、行毎、または「テーブル全体」について検討されたかどうかを判定することができる。ある式が検討されていない場合、プロセス５００は、取出しオペレーション５０４に戻る。しかし、検討を要する他の式が存在しない場合、プロセス５００はオペレーション５１２に進む。
【００５１】
次に、オプションの順序付けオペレーション５１２は、行毎の式を順序付けする。本発明の実施形態では、スプレッドシートモジュールは、行毎の式を直ちに適用するのではなく式を順序付けすることができる。順序付けは、式を処理に最も効率的な編成に配置することを含むことができる。一実施形態では、順序付けは最も制限が強いものから最も制限の弱い式とすることができる。例えば、式「Ｃ＝５」は、式「Ｃ＞５」よりも制限的である。というのは、第１の式は値が５であるという１つの可能性しか有さず、第２の式は値が５より大きいすべてという数多く可能性を有するからである。式の順序付けがより効率的であるのは、より制限の強い式を最初に適用することにより、制限の弱い式を適用する前にさらなる処理から行を排除することができるためである。
【００５２】
次に、評価オペレーション５１４は、すべての順序付けされた行毎の式によって各行を評価する。本発明の実施形態では、スプレッドシートモジュールは、パースされ、分離され、順序付けられた行毎の式をセットとして各行に個別に適用する。スプレッドシートモジュールは、シリアル的にまたはランダムに各行を評価することができる。任意の式が行に適用されると、必要ならば、その行内のデータを除去することができる。除去された行にまだ適用されていないどの式も、適用する必要なく、スプレッドシートモジュールは、式の評価のために次の行に移動することができる。このように、行毎の式は、テーブルフォーミュラよりはむしろ、配列フォーミュラのように作用することができる。この実施形態では、式を行毎に適用するが列毎に適用することも可能である場合もある。このように、いくつかの実施形態では、分離し、順序付けし、評価することを列毎の式についても完了することができる。スプレッドシートモジュールが、行毎の式を各行に適用した後、スプレッドシートモジュールは、（データの中間セット３１６など）第１の中間データセット５１６を作成する。
【００５３】
判定オペレーション５０６で、パースされた式が行毎の式ではないと判定する場合、プロセス５００は、オプションの順序付けオペレーション５１８に進むことができる。順序付けオペレーション５１８は、「テーブル全体」式を直ちに適用するのではなく、「テーブル全体」式を順序付けすることができる。いくつかの実施形態では、「テーブル全体」式を、上述のように、最も制限の強い式から最も弱い式へと順序付けすることができる。他の順序付けの方法が行毎の式および「テーブル全体」式の両方について完了される。というのは、これらの式の処理は、何らかの式が他の式の後に続く場合に、より効率的または効果的となることがあるためである。例えば、ソートが「上位１０個を取る」オペレーションに先行する場合、処理はより効率的になることがある。
【００５４】
次に、適用オペレーション５２０は、「テーブル全体」式を適用する。一実施形態では、スプレッドシートモジュールが、行毎の式によって作成された第１の中間データセットをメモリから取り出す。次いで、スプレッドシートモジュールは、第１の「テーブル全体」式を適用する。スプレッドシートモジュールは、中間データの後続のセット５２２を作成し、その中間データの後続のセット５２２を格納する。
【００５５】
次に、判定オペレーション５２４は、他の「テーブル全体」式が適用される必要があるかどうかを判定する。他の「テーブル全体」式が、中間データの後続のセットにまだ適用されていない場合、プロセス５００は、適用オペレーション５２０に戻る。他の「テーブル全体」式が適用される必要がない場合、メモリに格納された後続の中間データの最後のセット４２１が、（出力データ３１０などの）出力データとなる。
【００５６】
受取りオペレーション５２６を参照すると、基となっている入力データが変化すると、受取りオペレーション５２６は、この変更を受け取る。一実施形態では、データベースフォーミュラまたは関数がスプレッドシート内に既に入力されていることがある。この既存のデータベースフォーミュラまたは関数は、式が適用される入力データの選択されたセットを有する。この入力データのセットの格納された選択は、データベースフォーミュラまたはデータベース関数の「依存関係」を表す。ユーザは、データベースフォーミュラまたは関数に対する入力として指定された複数の「依存関係」セルのある部分を変更することができる。入力データに対する変更は、入力データの編集、入力データへの追加、入力データのリフレッシュ、または他のアクション由来することがある。入力データが変更されると、式を適用するプロセス５００は、ブロック５０２で開始することができる。
【００５７】
いくつかの実施形態では、スプレッドシートモジュールは変更を受け取る。この変更が、従属セル中の入力データに影響を及ぼすとき、その変更によって、プロセス４００は、操作オペレーション４１０から開始して再実行されることになる。一実施形態では、データベース関数は、変更された入力データを使用して正しい出力データセットを返すために、再評価または再実行される。このように、データベースフォーミュラおよびデータベース関数は、データベースオペレーションとは異なり、再計算することができる。
【００５８】
データベース関数を含むいくつかの例示的データベースフォーミュラが図６に示されている。例示的実施形態は特定のシンタックスを含むが、本発明はこのシンタックスに限定されない。むしろ、データベースフォーミュラおよびデータベース関数は、ユーザに、繰り返し可能でフォーミュラ的なデータベースオペレーションを提供することができる任意のタイプのシンタックスを含むことができる。さらに、データベースフォーミュラおよびデータベース関数は、データベースフォーミュラまたはデータベース関数内に１つまたは複数の引数を含めることにより、ユーザ指定のカスタマイズをユーザに提供することができる任意のシンタックスを有することができる。いくつかの実施形態では、データベースフォーミュラおよびデータベース関数は、セマンティック指定を含むことができる。
【００５９】
FILTERデータベース関数６０２は、１つまたは複数の引数に従って、スプレッドシートからデータのアイテムを除去することができる。図６に示すように、FILTERデータベース関数６０２は、式６１２および式６１４のような例示的な式のセットを有する。本発明の実施形態では、あらゆるデータベース関数は、式６１２および６１４と同様の式または引数を有することができる。式のシンタックスおよびオペレーションは、データベース関数のタイプに応じて変化してもよい。当業者は、例示的データベース関数のセットにおける例示的引数および／または式を認めるであろう。
【００６０】
本発明の実施形態では、例示のFILTER関数は、次のような構造およびシンタックスを有する：「FILTER(Table, Filter Expression 1, [Filter Expression Expression2], ...)」。FILTERデータベース関数６０２は、引数によって具体化されたすべてのフィルタ条件を満たすデータのセットからすべてのアイテム（行）を返す。本発明の実施形態では、引数は、入力データ内のデータのセットに対する１つまたは複数の参照を収容することができる代数式、数式、ブール式、または他のタイプの式とすることができる。こうした引数を適用することができ、FILTERデータベース関数６０２は、すべての引数を満たす行のリストを返す。すべての引数について真であるアイテム（行）だけが、出力データの一部として含まれる。
【００６１】
例として、「MyTable」と呼ばれる例示的テーブルを以下に示す。
【００６２】
【表１】
0005490348.tif 000002
【００６３】
FILTER関数は、次のような式としてスプレッドシートに入力することができる：
＝FILTER(MyTable, [Bar]>1, [Foo]="C")
このFILTER関数の結果は、次のテーブルとなろう。
【００６４】
【表２】
0005490348.tif 000003
【００６５】
FILTER関数は、列トークンのセマンティック参照を使用し、例えば、FILTER関数は、列の名前「Foo」および「Bar」、ならびに、テーブル全体について名付けた範囲であるテーブルの名前「MyTable」を使用した。
【００６６】
データベース関数の他の例は、図６に示すSORT関数６０４である。本発明の実施形態では、例示的SORT関数は、次のような構造およびシンタックスを有することができる：「SORT(Table, Field 1, Ascending/Descending 1, [Field 2, Ascending/Descending 2], ...)」。SORT関数６０４は、すべての指定された引数による選択データをソートした結果であるテーブルを返す。指定された第１の引数は、最高位の（最後に適用された）ソートであり、第２の引数は、２番目に最も高い順位のソートであり、以下同様である。このように、それらのソートは、ソートされたリストを適切に生成するように、関数に引数の現れる順序と逆の順序で適用される。
【００６７】
データベース関数の他の例は、図６に示すREMOVE DUPLICATES関数６０６である。本発明の実施形態では、REMOVE DUPLICATES関数６０６は、次のような構造およびシンタックスを有することができる：「REMOVEDUPLICATES(Table, [Field 1], [Field 2], ...)」。REMOVE DUPLICATES関数６０６は、引数のいずれかによって表現されたどの重複アイテムも収容していないデータのセットを返すことができる。引数によって指定されたアイテムのすべての識別が、他のアイテムのそれらと一致する場合、REMOVE DUPLICATES関数６０６は、２つのアイテムのうちの１つだけを返すことができる。いくつかの実施形態では、REMOVE DUPLICATES関数６０６は、「第１」のアイテム（テーブルの上端の近くに位置するアイテム）を返すことができる。このデータのセットが重複するデータをなんら含まない場合、データは除去されない。
【００６８】
例として、「MyTable」と呼ばれる選択されたデータを以下に示す。
【００６９】
【表３】
0005490348.tif 000004
【００７０】
例示のREMOVE DUPLICATE関数６０６は次のように示される：
=REMOVEDUPLICATES(MyTable, [Foo], [Bar])
REMOVE DUPLICATE関数６０６は、以下のように出力データのセットを返す。
【００７１】
【表４】
0005490348.tif 000005
【００７２】
データベース関数のさらに他の例は、図６に示すTABLE APPEND関数６０８である。本発明の実施形態では、TABEL APPEND関数６０８は、下記の構造およびシンタックスを有する：「TABLEAPPEND(Table1, Table2)」。このTABEL APPEND関数６０８は、Table1およびTable2からのすべてのアイテムを収容するデータのセットを返す。一実施形態では、出力データは、Table1のすべてのフィールドに続いて、Table1に存在しないTable2のすべてのフィールドという順序を有する。他の実施形態では、あるテーブルが他のテーブルが有していない１つまたは複数のフィールドを有するとき、これらのフィールドは含められないことがある。TABEL APPEND関数６０８は、あるテーブルまたは他のテーブルの上端、下端、または側端にデータを付加することができる。
【００７３】
データベース関数の最後の例は、図６に示すADD COLUMN関数６１０である。本発明の実施形態では、ADD COLUMN関数６１０は、次のような構造およびシンタックスを有することができる：「ADDCOLUMN(Table, Column Name, Expression for Column)」。ADD COLUMN関数６１０は、「table」と同じであるデータのセットを作成することができるが、「column name」という名前の列であって、そのデータ値が「expression for column」と呼ばれる引数の結果である列を含む。ADD COLUMN関数６１０は、行毎に適用することができる。ADD COLUMN関数６１０は、複数の引数を有することができる。いくつかの実施形態では、ADD COLUMN関数６１０中の複数の引数は、FILTER関数と同様に機能することができる。
【図面の簡単な説明】
【００７４】
【図１Ａ】例示的データベース関数、関数への入力、および関数からの出力の間のオペレーション上の関係を示す本発明の一実施形態の機能スプレッドシートを示す図である。
【図１Ｂ】例示的データベース関数、関数への入力、および関数からの出力の間のオペレーション上の関係を示す本発明の一実施形態の機能スプレッドシートを示す図である。
【図１Ｃ】例示的データベース関数、関数への入力、および関数からの出力の間のオペレーション上の関係を示す本発明の一実施形態の機能スプレッドシートを示す図である。
【図２】本発明による基本的なコンピュータ環境およびコンピューティングデバイスを示す図である。
【図３】本発明によるデータベース関数を含むスプレッドシートアプリケーションの一実施形態を示す基本的ブロック図である。
【図４】本発明によるスプレッドシート内でデータベース関数を作成し、用いる基本的な方法の一実施形態を示す図である。
【図５】本発明によるスプレッドシート内でデータベース関数をデータのセットに適用する方法の他の実施形態を示す図である。
【図６】本発明によるデータベース関数のいくつかの例示的実施形態を示す図である。
【符号の説明】
【００７５】
１００  スプレッドシート
１０２  データのテーブル
１０４  タイトル
１０６  行
１０８  列
１１０  列ヘッダ
１１２  データベースフォーミュラ
１１４  セマンティック参照
１１６  引数
１１８  Ｄ列
１２０  出力データ
１２２  行
１２４  列
２００  コンピューティングデバイス
２０２  処理ユニット
２０４  メモリ
２０６  基本構成
２０８  リムーバルストレージ
２１０  非リムーバルストレージ
２１２  通信接続
２１４  入力デバイス
２１６  出力デバイス
３００  スプレッドシートアプリケーション
３０２  入力
３０４  入力データの選択
３０６  スプレッドシートモジュール
３１０  出力データ
３１２  データベースフォーミュラ
３１４  データベース関数
３１６  中間データ
６０２  FILTERデータベース関数
６０４  SORT関数
６０６  REMOVE DUPLICATES関数
６０８  TABLE APPEND関数
６１０  ADD COLUMN関数
６１２，６１４  式
【図１Ａ】
0005490348.tif 000006
【図１Ｂ】
0005490348.tif 000007
【図１Ｃ】
0005490348.tif 000008
【図２】
0005490348.tif 000009
【図３】
0005490348.tif 000010
【図４】
0005490348.tif 000011
【図５】
0005490348.tif 000012
【図６】
0005490348.tif 000013