(57)【特許請求の範囲】
【請求項１】
既存の表計算シートの表構成要素の内容を取得し、行または列に並ぶ表構成要素に対する計算対象データ及び計算式等の対応パターンを取得し、前記対応パターンから任意の２行または２列において各列または各行の表構成要素の内容が同種類で、かつ並びが同じである行または列を同じグループにグループ化し、グループの並び方のパターンを取得する取得手段と、新規計算対象データが与えられると、前記グループの並び方のパターンにおける各行または各列のグループに対応づけられた行または列を前記既存の表計算シートから選択し、選択された行または列の表構成要素の内容の種類に応じて前記既存の表計算シートの表構成要素または前記新規計算対象データを表の各行または列における表構成要素に対応づけて被生成表を作成する被生成表作成手段を有することを特徴とする表作成装置。
【請求項２】
さらに、複数の前記パターンを保持するパターン保持手段と、前記パターン保持手段に保持された前記パターンから一つを指定するパターン指定手段を有し、前記対応付け手段は、前記パターン指定手段で指定された前記パターン保持手段に保持されている前記パターンに基づいて対応付けを行うことを特徴とする請求項１に記載の表作成装置。
【請求項３】
前記取得手段は、計算対象のデータや計算式とともに、フォントやセルの背景色等の表構成要素の属性のパターンをも取得し、被生成表作成手段は、前記属性をも対応付けることを特徴とする請求項１または請求項２に記載の表作成装置。
【請求項４】
コンピュータを、既存の表計算シートの表構成要素の内容を取得し、行または列に並ぶ表構成要素に対する計算対象データ及び計算式等の対応パターンを取得し、前記対応パターンから任意の２行または２列において各列または各行の表構成要素の内容が同種類で、かつ並びが同じである行または列を同じグループにグループ化し、グループの並び方のパターンを取得する取得手段と、新規計算対象データが与えられると、前記グループの並び方のパターンにおける各行または各列のグループに対応づけられた行または列を前記既存の表計算シートから選択し、選択された行または列の表構成要素の内容の種類に応じて前記既存の表計算シートの表構成要素または前記新規計算対象データが表の各行または列における表構成要素に対応づけて被生成表を作成する被生成表作成手段として機能させることを特徴とする表作成プログラム。
【請求項５】
コンピュータを、さらに、複数の前記パターンを保持するパターン保持手段と、前記パターン保持機能に保持された前記パターンから一つを指定するパターン指定手段として機能させ、前記被生成表作成手段を、前記パターン指定手段で指定された前記パターン保持手段に保持されている前記パターンに基づいて対応付けを行うように機能させることを特徴とする請求項４に記載の表作成プログラム。
【請求項６】
前記取得手段が、計算対象のデータや計算式とともに、フォントやセルの背景色等の表構成要素の属性のパターンをも取得し、前記被生成表作成手段が、前記属性をも対応付けるように機能させることを特徴とする請求項４または請求項５に記載の表作成プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、与えられたデータをもとに表計算シートを生成する技術に関するものである。
【０００２】
【従来の技術】
従来、データに対して集計等の処理を行うために、表計算ソフトウェアが広く用いられている。一般的な表計算ソフトウェアでは、表計算シートと呼ばれる二次元状にセルを配置したマトリクスが用意されており、マトリクスのセルはそれぞれ固有のアドレスを持つ。ユーザはそのマトリクスのセル内に処理対象となるデータ及び計算式を記述する。計算式では他のセルに記述されたデータを、そのセルのアドレスで参照すること（以下セル参照と呼ぶ）が可能である。表計算ソフトウェアは、計算式が設定された各セルについて、計算式に従い他のセルに設定されたデータを参照しつつ計算を行い、計算結果を計算式が設定されたセルに表示する。
【０００３】
しかしながら、表計算ソフトウェアを使ってデータ処理を行うには次のような問題があった。
・ユーザが表計算ソフトウェア固有の計算式を理解し、記述できなければならない。
・例えば各雇用者の毎月の残業時間データを合計するという処理を毎年行う場合、設定すべき計算式は毎年（ほとんど）同じであるにもかかわらず、各年毎の集計を行う毎に計算式を記述しなければならない。
【０００４】
表計算において計算式を記述する手間を軽減するものとして、次のような技術が知られている。まず、例えば特開昭６２−４４８６１号公報に記載されている表計算方式では、二つのグループからなる表データに対し、一つのグループに対して計算式を入力すると、その計算式のセル参照先を変更して二つ目のグループに対する計算式を生成している。これによって、繰り返しの部分について、計算式を繰り返して入力する手間を軽減することができる。
【０００５】
また、例えば特開昭６３−３４６６６号公報に記載されている数表作成支援装置では、他のセルの値を含んだ計算式を記述すると、計算式中の他のセルの値をセル参照に置き換え、さらにその計算式を他のセルでも使える一般化した形式に変更する。これにより、ユーザが具体的な値を含む具体的な式を一度記述するだけで済ますことができ、計算式を入力する手間を軽減している。
【０００６】
さらに特公平７−４３７５１号公報（特許第２００７９７４号）に記載されている表計算式自動判別方式では、「参照するセルを複数指定する式」が設定されたセルがあり、その式が他のセルにコピーされた場合、式中で指定された複数のセルを参照して計算式を比較し、それら計算式中のセル参照先が異なっていれば相対参照、参照先が同じであれば絶対参照として、参照先を適宜変更した新たな計算式を生成するものである。これによって、絶対参照と相対参照が含まれる計算式についても、簡単に他のセルにコピーして用いることができる。
【０００７】
これらの従来技術は、確かに記述すべき計算式の数を削減し、計算式を簡単化することによって、計算式の記述を容易にしている。しかし、これらの技術は、１つの表に対する計算式の入力を軽減するものであり、上述のように、毎年、別の表を作成する際には、それぞれの表において計算式の入力を必要としていた。
【０００８】
一方、あるデータが得られたときに、それらのデータを表形式で参照可能とする技術が開発されている。例えば特開平５−７３５９０号公報には、表計算シート及びデータベース参照式をサーバに送ると、サーバ側で参照式に従ってデータベースを参照し、表計算シート中にデータを流しこみ、その結果を返す技術が記載されている。また特開平８−３０５７７７号公報には、複数のレコードからなるデータと、レコード一つに対する表形式の流し込みテンプレートが与えられると、それぞれのレコードをテンプレートに流し込んだ結果できる小表を結合して表を作成する技術が記載されている。流し込みテンプレートには計算式が記述でき、計算式中のテンプレートのセルを参照した参照式は、最終的な表における参照式に置き換えられる。
【０００９】
これらの技術では、データから表計算シートを自動的に生成することができる。しかし、これらの技術では、テンプレートとなる表を予め作成しておく必要がある。また、そのテンプレートを記述するためには、計算式など記述以外にも特別な知識が必要となる。例えば既存の表計算シートが存在し、その表計算シートの形式と同様の形式の表を自動的に作成することはできなかった。
【００１０】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、既存の表計算シートを利用し、計算式等の設定を行わずに、その表計算シートと同様の形式の表を新たに自動生成することができる表作成装置、表作成プログラムを提供することを目的とするものである。
【００１１】
【課題を解決するための手段】
本発明は、既存の表計算シートの表構成要素の内容を取得し、行または列に並ぶ表構成要素に対する計算対象データ及び計算式等の対応パターンを取得し、前記対応パターンから任意の２行または２列において各列または各行の表構成要素の内容が同種類で、かつ並びが同じである行または列を同じグループにグループ化し、グループの並び方のパターンを取得する取得手段と、新規計算対象データが与えられると、前記グループの並び方のパターンにおける各行または各列のグループに対応づけられた行または列を前記既存の表計算シートから選択し、選択された行または列の表構成要素の内容の種類に応じて前記既存の表計算シートの表構成要素または前記新規計算対象データを表の各行または列における表構成要素に対応づけて被生成表を作成する被生成表作成手段を有することを特徴とする表作成装置である。
また本発明は、コンピュータを、既存の表計算シートの表構成要素の内容を取得し、行または列に並ぶ表構成要素に対する計算対象データ及び計算式等の対応パターンを取得し、前記対応パターンから任意の２行または２列において各列または各行の表構成要素の内容が同種類で、かつ並びが同じである行または列を同じグループにグループ化し、グループの並び方のパターンを取得する取得手段と、新規計算対象データが与えられると、前記グループの並び方のパターンにおける各行または各列のグループに対応づけられた行または列を前記既存の表計算シートから選択し、選択された行または列の表構成要素の内容の種類に応じて前記既存の表計算シートの表構成要素または前記新規計算対象データが表の各行または列における表構成要素に対応づけて被生成表を作成する被生成表作成手段として機能させることを特徴とする表作成プログラムである。
このような構成によって、既存の表計算シートがあれば、計算式等の設定を行わずに元の表計算シートと同様のデータ処理を、元の表計算シートに設定されたデータとは異なる新規データに対して行うことが可能となる。このため、データ処理を行うユーザは、既存の表計算シートさえあれば、表計算における計算式の設定の手間や計算式を覚える必要がなくなる。また、計算対象のデータや計算式の一般的な対応パターンを把握し、そのパターンに従って新たな計算対象データや計算式を対応づけるので、与えられた既存の表計算シートにおける計算対象のデータと個数が異なるような計算対象データに対しても、計算処理を行うことが可能となる。さらに、作成される表においてどのような処理を行うかは、既存の表計算シートにおいて設定されているので、従来のテンプレートのように処理の設定に複雑なプログラミングを行う必要がないという利点もある。
【００１２】
パターンの把握の際には、表計算シート内の一連の表構成要素について、各表構成要素における内容もしくは属性をグループ化し、各構成要素とそのグループとを対応づけた上で、グループのシークエンスの繰り返しを含むパターンを把握するように構成している。例えば、複数の「ある月度データ」と「小計」で形成されるグループといった具合にグループ化し、そのグループからなるシークエンスの繰り返しを含むパターンを把握することができる。これによって、シークエンスの繰り返しを含む表を生成することが可能となる。この場合も、既存の表計算シートとシークエンスの繰り返し回数が異なるような新規の表計算シートを生成することが可能である。さらにパターンの把握の際に、計算対象のデータや計算式とともに、フォントやセルの背景色等の表構成要素の属性の対応パターンをも把握し、被生成表における表構成要素に新規データ及び計算式とともに属性をも対応付けるように構成することもできる。
【００１３】
上述のようにして把握したパターンを複数保持しておき、その中から一つを指定し、指定されたパターンに基づいて被生成表における表構成要素への新規データ及び計算式等の対応付けを行うように構成することができる。複数のパターンを保持しておくことで、表作成時には計算対象データを与え、パターンを指定するだけでよく、表作成時にパターンを把握するのに要する時間だけ所要時間を減らすことができる。
【００１４】
さらに、計算対象のデータや計算式とともに、フォントやセルの背景色等の表構成要素の属性のパターンをも取得し、被生成表を作成する際に、それらの属性をも対応付けるように構成することもできる。
【００１５】
【発明の実施の形態】
図１は、本発明の第１の実施の形態を示すブロック図である。図中、１は対応把握部、２は被生成表確保部、３は対応付け部である。対応把握部１は、既存の表計算シートを受け取り、その表計算シートのセルあるいは行または列に並ぶ表構成要素に対する計算対象のデータ及び計算式、あるいはさらにフォントやセルの背景色等の表構成要素の属性等の対応のパターンを把握する。このとき、既存の表計算シート内の一連の表構成要素について、各表構成要素における内容もしくは属性をグループ化し、各構成要素とそのグループとを対応付けた上で、グループのシークエンスの繰り返しを含むパターンを把握する。
【００１６】
被生成表確保部２は、新規の表計算シートを生成するための被生成表を確保する。そして、対応付け部３による各表構成要素へのデータ及び計算式、属性などの対応付けを受けることによって、新規の表計算シートが生成される。
【００１７】
対応付け部３は、対応把握部１が把握したパターンに基づいて、被生成表確保部２内の被生成表における表構成要素に、新規データ及び計算式、属性等を対応付けて、新規の表計算シートを生成する。
【００１８】
以下、本発明の第１の実施の形態における動作の一例について説明する。図２は、対応把握部１の動作の一例を示すフローチャートである。ここでは、表計算シートの行を単位としてグルーピングを行ってパターンを把握する例を示している。
【００１９】
Ｓ１１において、与えられた既存の表計算シートの各行において、各行を次の条件を満たすようにグルーピングし、各行とグループを対応付ける。
・同一のグループより任意の２行を取ったとき、全ての列において、それら２行における二つのセルの内容は「同種類」である。
・異なるグループより各々１行を取ったとき、それら２行に関して、セルの内容が「同種類」とならない列が必ず存在する。
【００２０】
ただし、２つのセルの内容が「同種類」とは、次のいずれかの条件を満たすことである。
・双方共に計算対象データである場合。
・双方共に計算式で、一方の計算式中のセル参照の参照行番号を書き換えることにより、もう一方の計算式と同一にできる場合。
・双方共に計算対象データでも計算式でもなく、同一の文字列である場合。
ただし、計算対象データであるか否かは、この例では内容が数値であるか否かで判別するとする。
【００２１】
次にＳ１２において、行に対するグループの一般的な対応パターンを求める。ここでは、先頭行から最終行まで、各々の行に対応するグループを並べた場合、そのグループのシークエンスが、サブシークエンス１、サブシークエンス２の０回以上の繰り返し、サブシークエンス３というパターンをなしていることと仮定し、各サブシークエンスを求めることで、対応パターンを求めることとする。
【００２２】
サブシークエンスを求めるために、まず次の条件を満たす３項組（ｓｔａｒｔ，ｓｔｅｐ，ｔｉｍｅｓ）を求める。
・ｓｔａｒｔ，ｓｔｅｐ，ｔｉｍｅｓは自然数。
・２≦ｔｉｍｅｓ
・ｓｔａｒｔ＋ｓｔｅｐ×ｔｉｍｅｓ≦ｍ
・∀ｔ∈｛０，…，ｔｉｍｅｓ−１｝，∀ｏ∈｛０，…，ｓｔｅｐ−１｝について、Ｇ（ｓｔａｒｔ＋ｏ）＝Ｇ（ｓｔａｒｔ＋ｔ×ｓｔｅｐ＋ｏ）
但しｍは表計算シートの行数である。また、Ｇ（ｊ）は、ｊ∈｛１，…，ｍ｝のときｊ番目の行に対応付けられたグループであり、その他の場合にはどのグループとも異なる値をとる。
【００２３】
以上の条件を満たす３項組が複数存在するならば、次の手順で１つに絞りこむ。
１．ｓｔｅｐ×ｔｉｍｅｓが最も大きいものを選択する。
２．それでも１つに絞れない場合はｓｔｅｐが最も小さいものを選択する。
３．それでも１つに絞れない場合はｓｔａｒｔが最も大きいものを選択する。
【００２４】
次にＳ１３において、Ｓ１２で求めたｓｔａｒｔをサブシークエンス２の開始位置とし、ｓｔｅｐをサブシークエンス２の長さ、ｔｉｍｅｓをサブシークエンス２の繰り返し回数とすることで、グループのシークエンスからグループのサブシークエンス１，サブシークエンス２，サブシークエンス３を求めることができる。
【００２５】
図３は、対応付け部の動作の一例を示すフローチャートである。ここでは対応把握部１において上述のようにサブシークエンス１、サブシークエンス２の０回以上の繰り返し、サブシークエンス３という対応パターンを把握したものとし、この対応付け部３においても、これらのサブシークエンス毎に対応付けを行ってゆくものとする。対応付け部３には、新たに表計算シートを生成するための文字列、計算式、計算対象データ等の新規データが与えられる。
【００２６】
まずＳ２１において、被生成表確保部２に確保されている被生成表の１行目から、（ｌｅｎｇｔｈ１）行目までの各セルに、文字列、計算式、計算対象データを対応付ける。ここで、ｌｅｎｇｔｈ１はサブシークエンス１の長さとし、ｉ行目のセルの対応付けは、Ｓ１３で求めたサブシークエンス１のｉ番目のグループに基づいて行うものとする。
【００２７】
グループに基づくセルの対応付けは、次のように行う。
１．表計算シートにおいて、そのグループに対応付けられた行を一つ探索する。
２．１で探索した行のｊ列目のセルに基づいて、被生成表確保部２の対応する行のｊ列目のセルに対応付ける。具体的には
・表計算シートのセル内容が計算対象データである場合には、与えられた新規計算対象データのうち、未だ対応付けられていないものを被生成表のセルに対応付ける。対応付けられていない計算対象データが複数存在する場合は、そのうち最も先頭の行に存在し、その中でも最も先頭の列に存在するものを選択するものとする。
・表計算シートのセル内容が計算式である場合は、表計算シートのセル番地を記録しておき、とりあえず何も対応付けない。
・表計算シートのセル内容が上記二つ以外の文字列である場合は、その文字列をそのまま対応付ける。
【００２８】
Ｓ２２において、サブシークエンス２の対応付けが終了しているか否かを判定する。例えば全ての新規計算対象データがサブシークエンス２に対応づけられる場合には、新規計算対象データが存在するか否かによって判定することができる。サブシークエンス２の対応付けが終了していなければＳ２３の処理を行い、サブシークエンス２の対応付けが終了していればＳ２４へ進む。
【００２９】
Ｓ２３では、１つのサブシークエンス２の対応付け処理を行う。すなわち、被生成表確保部２で確保された被生成表における（ｋ＋１）行目から、（ｋ＋ｌｅｎｇｔｈ２）行目行の各セルに、文字列、計算式、計算対象データを対応付ける。ただし、被生成表はこれまでにｋ行目まで対応が付けられているとし、ｌｅｎｇｔｈ２はサブシークエンス２の長さとし、ｋ＋ｊ行目のセルの対応付けは、Ｓ１３で求めたサブシークエンス２のｊ番目のグループに基づいて行う。グループに基づくセルの対応付けの方法はＳ２１と同じである。対応付けが終わればＳ２２へ戻る。さらにサブシークエンス２の対応付けを行う場合には、このＳ２３が繰り返されることになる。
【００３０】
０回以上のサブシークエンス２の対応付けが終了すると、Ｓ２４において、サブシークエンス３の対応付けを行う。すなわち、被生成表確保部２で確保された被生成表における（ｋ＋１）行目から、（ｋ＋ｌｅｎｇｔｈ３）行目行の各セルに、文字列、計算式、新たな計算対象データを対応付ける。ただし、被生成表はこれまでにｋ行目まで対応が付けられているとし、ｌｅｎｇｔｈ３はサブシークエンス３の長さとし、ｋ＋ｊ行目のセルの対応付けは、Ｓ１３で求めたサブシークエンス３のｊ番目のグループに基づいて行う。グループに基づくセルの対応付けの方法はＳ２１と同じである。
【００３１】
このようにしてサブシークエンス１，サブシークエンス２の０回以上の繰り返し、サブシークエンス３の対応付けが終了した。しかし、これまでの処理では、表計算シートのセル内容が計算式であった場合には何も対応付けられなかった。Ｓ２５では、セル内容が計算式であったセルについて、記録しておいたセルの内容の計算式を対応付ける。このとき、計算式には次のように変更を施す。
・元計算式が
＝セル参照１  演算子  セル参照２  演算子．．．演算子  セル参照（ｔｉｍｅｓ）
という形式をしており（ここでｔｉｍｅｓはＳ１２で求めたもの）、全てのセル参照先がサブシークエンス２に含まれており、かつセル参照ｎとセル参照（ｎ＋１）が同一列でｓｔｅｐ（ここでｓｔｅｐはＳ１２で求めたもの）だけ離れた行のセルを参照している場合、
＝セル参照１  演算子  セル参照２  演算子．．．演算子  セル参照（ｎｅｗｔｉｍｅｓ）
という計算式とする。ここでｎｅｗＴｉｍｅｓはＳ２３の処理を実行した回数であり、かつセル参照ｎとセル参照（ｎ＋１）は同一列でｓｔｅｐだけ離れた行のセルを参照するものとする。
・元計算式がサブシークエンス１もしくは３に含まれており、計算式中のセル参照がサブシークエンス３の開始行の一行前の行を参照している場合、そのセル参照先を、列はそのままでＳ２４の処理の開始時点に対応付けられていた最後の行とする。
・計算式のセル参照で、同じサブシークエンス内のセルを参照しているものは、その行方向の参照を次の式が成り立つように変更する。
表計算シート上における計算式を含むセルの行番号−これまで指し示していた行番号＝被生成表における計算式のセルの行番号−新たに指し示す行番号
【００３２】
このようにして全ての対応付けが終了すると、被生成表確保部２には新たな表計算シートが生成されている。上述のような処理の過程において、ユーザは面倒な計算式等の入力を行う必要がない。また、既存の表計算シートを用いるため、従来のように改めてテンプレートを作成するといった必要もない。さらに、上述のように繰り返し部分であるサブシークエンス２を自動的に把握し、これを繰り返してセルとの対応を図るので、例えば既存の表計算シートに存在する計算対象データよりも新たな計算対象データの方が多い場合でも、自動的に対応付けが行われて新たな表計算シートを生成することができる。
【００３３】
上述の動作の一例を、具体例を用いて説明する。図４は、既存の表計算シートの具体例の説明図である。ここでは、図４に示すような表計算シートが与えられたとする。この表計算シートは、各月度毎にα店，β店，γ店の各店において、ある商品が売れた台数データを処理するものであり、ここでは１月度から６月度までの２四半期分のデータを対象にしている。ただしこの表計算シートにおいて、「＝」で始まる文字列は計算式であり、計算式中の「Ｂ２」といったものはセル参照で、Ｂ列２行を参照し、列には左からＡ，Ｂ，Ｃ．．．と、行には上から１，２，３，．．．といった番地が割り振ってあるものとする。
【００３４】
図２のＳ１１において、対応把握部１は、まず図４に示した表計算シートの各行をグルーピングする。図５は、既存の表計算シートの具体例における各行とグループの対応関係の一例の説明図である。図４に示した表計算シートの１行目は、全てのセルの内容が計算対象データでもなく計算式でもない文字列である。このような行は他に存在しないので、１行目はそれだけで一つのグループをなす。このグループをＧ１とする。
【００３５】
２行目は、「計算対象データ，計算対象データ，計算対象データ，計算対象データ，計算式」という並びになっている。同様の並びは３，４，６，７，８行目にも存在し、かつこれらの行のＥ列に存在する計算式は、セル参照の行番号を書き換えることによって、全て同一の計算式にすることが可能である。例えば番地が２行Ｅ列（２行目の５列目）の計算式「＝Ｂ２＋Ｃ２＋Ｄ２」を考えると、その参照行番号を３に変更すれば、番地が３行Ｅ列（３行目の５列目）の計算式「＝Ｂ３＋Ｃ３＋Ｄ３」と同一となる。よってこれらは一つのグループをなす。このグループをＧ２とする。
【００３６】
５行目は、「文字列，計算式，計算式，計算式，計算式」という並びになっており、これは９，１０行目と同じである。このうち９行目については、文字列は同一であり、計算式についてもセル参照の参照行番号を変更することによって同一とすることができる。従って、９行目は同じグループに属する。しかし、１０行目については、文字列は異なり、計算式も同一とすることができない。従って１０行目は異なるグループに属する。ここで５，９行目が属するグループをＧ３、１０行目が属するグループをＧ４とする。
【００３７】
上述のようにして、既存の表計算シートの各行について、グループを対応づけることができた。これをまとめると図５に示すようになる。
【００３８】
次に図２のＳ１２において、３項組（ｓｔａｒｔ，ｓｔｅｐ，ｔｉｍｅｓ）を求める。条件を満たす３項組は次に示すように７つ存在する。
（２，１，２），（２，１，３），（２，４，２），（３，１，２），（６，１，２），（６，１，３），（７，１，２）
例えば２行目においては、ｓｔａｒｔ＝２であり、この１行のみを２回あるいは３回繰り返されているので、（２，１，２），（２，１，３）が得られる。また、２行目〜５行目までの４行が２回繰り返されており、（２，４，２）が得られる。また３行目においては、ｓｔａｒｔ＝３であり、この１行のみを２回繰り返されているので、（３，１，２）が得られる。同様に６行目についても１行のみを２回あるいは３回繰り返され、７行目についても１行のみを２回繰り返されているので、（６，１，２），（６，１，３），（７，１，２）が得られる。これ以外の例えば１，４，５，８，９，１０行目では、２回以上の繰り返しが無いので、３項組は得られない。
【００３９】
このようにして上述の７つの３項組が得られる。複数の３項組が得られたので、このうちの１つに絞り込む。７つの３項組のうち、ｓｔｅｐ×ｔｉｍｅｓが最も大きいものは（２，４，２）であるので、これを採用することとする。
【００４０】
次に図２のＳ１３において、Ｓ１２で求めた３項組を用い、既存の表計算シートの各行と各サブシークエンスの関係を求める。図６は、既存の表計算シートの具体例における各行とサブシークエンスの対応関係の一例の説明図である。Ｓ１２の処理によって採用された３項組（２，４，２）より、サブシークエンス２の開始位置は２，長さは４，繰り返し回数は２ということがわかる。したがって図６に示すように、既存の表計算シートの１行目がサブシークエンス１となり、２〜５行目までの４行が１回目のサブシークエンス２、６〜９行目までの４行が２回目のサブシークエンス２となり、さらに１０行目がサブシークエンス３となる。すなわち、サブシークエンス１はＧ１、サブシークエンス２はＧ２，Ｇ２，Ｇ２，Ｇ３、サブシークエンス３はＧ４となる。
【００４１】
このようにして対応把握部１における処理が終了すると、対応付け部３における処理が開始される。図７は、新たな計算対象データの具体例の説明図である。ここでは図７に示すような計算対象データが新たに与えられたものとして説明する。
【００４２】
図３のＳ２１において、まずサブシークエンス１の対応付けを行う。図８は、サブシークエンス１の対応付け後の被生成表の具体例の説明図である。サブシークエンス１の長さは１であるので、被生成表確保部２に確保された被生成表の１行目から１行目まで（つまり１行目だけ）の各セルに、サブシークエンス１のグループ（つまりＧ１）に基づいて、内容を対応付けて行く。
【００４３】
図４に示した表計算シートにおいて、グループＧ１に対応付けられた行を探索する。ここでは１行目のみが対応するので、これを選択する。１行目のセル内容は全て計算対象データでも計算式でもないので、その内容の文字列がそのまま被生成表の１行目に対応付けられる。従って、サブシークエンス１の対応付けの結果は、図８に示すようになる。
【００４４】
次に図３のＳ２２において、サブシークエンス２の対応付けが終了したか否かを判定するが、この時点ではまだ対応づけられていない新たな計算対象データが存在し、サブシークエンス２の対応付けが終了していないので、Ｓ２３へ進む。
【００４５】
図３のＳ２３では、１回目のサブシークエンス２の対応付けを行う。図９は、１回目のサブシークエンス２の対応付け後の被生成表の具体例の説明図である。これまでの処理（サブシークエンス１の対応付けの処理）によって、被生成表の１行目までの対応付けが行われており、サブシークエンス２の長さは４であるので、２行目から５行目までに対応付ける。２行目に対応付けるには、サブシークエンス２の１番目のグループ、つまりグループＧ２に基づいて行う。グループＧ２に対応する行を図４に示した既存の表計算シートから探索し、例えば２行目を得たとする。既存の表計算シートの２行目において、１番目のセルは計算対象データであるので、与えられた新たな計算対象データから一つを選択し、被生成表の２行目の１番目のセルに対応付ける。ここでは図７からデータ「１」が対応付けられる。同様に２，３，４番目のセルも計算対象データであり、新たな計算対象データ「５５」、「８０」、「３４」が対応付けられる。既存の表計算シートの２行目の５番目のセルは計算式であるので、被生成表の２行目の５番目のセルには、この時点ではなにも対応付けず、既存の表計算シートの２行目の５番目のセルを記録しておく。なお、被生成表の３，４行目は２行目と同様に対応付けられる。
【００４６】
被生成表の５行目に対応付けるには、サブシークエンス２の４番目のグループ、つまりグループＧ３に基づいて行う。グループＧ３に対応する行を既存の表計算シートから探索し、例えば５行目を得ることができる。既存の表計算シートの５行目は、１番目のセルが文字列「四半期計」で、残りが計算式であるので、被生成表の５行目の１番目のセルに文字列「四半期計」が対応付けられ、残りのセルにはこの時点では対応付けを行わない。以上の結果、被生成表確保手段に確保された被生成表は図９に示すようになる。
【００４７】
このようにして１回目のサブシークエンス２の対応付けが終了すると、図３のＳ２２に戻って、サブシークエンス２の対応付けが終了したか否かを判定するが、まだこの時点では対応づけられていない新たな計算対象データが存在し、サブシークエンス２の対応付けが終了していないので、再びＳ２３へ進む。
【００４８】
図３のＳ２３では、２回目のサブシークエンス２の対応付けを行う。これまでの処理によって、被生成表の５行目までの対応付けが行われており、サブシークエンス２の長さは４であるので、６行目から９行目までに（２行目から５行目までと同様に）対応付けの処理を行う。２回目のサブシークエンス２の対応付けが終了すると、図３のＳ２２に戻って、サブシークエンス２の対応付けが終了したか否かを判定するが、まだこの時点では対応づけられていない新たな計算対象データが存在し、サブシークエンス２の対応付けが終了していないので、再びＳ２３へ進む。これまでに被生成表の９行目まで対応がつけられた。Ｓ２３における３回目のサブシークエンス２の対応付けでは、サブシークエンス２の長さは４であるので、１０行目から１３行目までに（２行目から５行目までと同様に）対応付ける。
【００４９】
図１０は、サブシークエンス２の対応付け終了後の被生成表の具体例の説明図である。上述のようにして３回のサブシークエンス２の対応付けが行われることによって、被生成表確保部２に確保された被生成表は、図１０に示すようになる。図４に示した既存の表計算シートでは２四半期分の表であった。しかし、図７に示す新たな計算対象データが３四半期分存在するため、サブシークエンス２が３回繰り返され、図７に示す新たな計算対象データが対応づけられる。これによって、サブシークエンス２の対応付け終了時点で図１０に示すような被生成表が得られることになる。
【００５０】
このようにして３回目のサブシークエンス２の対応付けが終了すると、図３のＳ２２に戻って、サブシークエンス２の対応付けが終了したか否かを判定する。この時点ではすでに対応づけられていない新たな計算対象データが存在しないので、Ｓ２４へ進む。
【００５１】
図３のＳ２４では、サブシークエンス３の対応付けを行う。図１１は、サブシークエンス３の対応付け後の被生成表の具体例の説明図である。これまで被生成表の１３行目まで対応付けられており、サブシークエンス３の長さが１であるので、１４行目から１４行目まで（つまり１４行目だけ）に対応付けを行う。サブシークエンス３の１番目のグループはＧ４であるので、グループＧ４に基づいて対応付けを行う。
【００５２】
グループＧ４に対応する行を既存の表計算シートから探索し、１０行目であることを特定する。既存の表計算シートの１０行目は、１番目のセルが文字列「合計」で、残りが計算式であるので、被生成表の１４行目の１番目のセルに文字列「合計」が対応付けられ、残りのセルにはこの時点では対応付けを行わない。そのかわり、既存の表計算シートの１０行目の２〜５番目のセルを記録しておく。このようにして、サブシークエンス３までの対応付けを行った結果、被生成表確保部２に確保された被生成表は図１１に示すようになる。
【００５３】
図３のＳ２５では、既存の表計算シートのセル内容が計算式であったため、何も対応付けられなかった被生成表のセルについて、記録しておいた既存の表計算シートのセル内容の計算式に対して変更を施した上で対応付ける。図１２は、最終的に生成された被生成表の一例の説明図である。計算式の対応付けについて、一例として被生成表の１０行Ｅ列（１０行目の５列目）のセルについて説明する。ここでは、このセルに対して記録されている既存の表計算シートのセルは、番地が２行Ｅ列のセルであるとする。既存の表計算シートのこのセルはサブシークエンス２に属しており、その内容は図４に示すように計算式「＝Ｂ２＋Ｃ２＋Ｄ２」である。この計算式中のセル参照「Ｂ２」、「Ｃ２」、「Ｄ２」は、全てサブシークエンス２内のセルを参照しているので、上述のように
表計算シート上における計算式を含むセルの行番号−これまで指し示した行番号＝被生成表における計算式のセルの行番号−新たに指し示す行番号
が成り立つように参照先を変更する。例えば「Ｂ２」については
２−２＝１０−新たに指し示す行番号
が成り立たねばならないから、「新たに指し示す行番号」は「１０」となり、「Ｂ２」は「Ｂ１０」へと変更される。同様に「Ｃ２」、「Ｄ２」についても「Ｃ１０」、「Ｄ１０」へと変更され、計算式全体では図１２に示すように「＝Ｂ１０＋Ｃ１０＋Ｄ１０」と変更される。同様にして、被生成表の２行目から１３行目までに計算式が対応付けられる。
【００５４】
次に被生成表の１４行Ｂ列（１４行目の２列目）のセルを例にして説明する。このセルに対して記録されている既存の表計算シートのセルは、番地が１０行Ｂ列であるとする。このセルの内容は、図４に示すように計算式「＝Ｂ５＋Ｂ９」であり、上述の
＝セル参照１  演算子  セル参照２  演算子．．．演算子  セル参照ｔｉｍｅｓ
という形式をなしている（ｔｉｍｅｓは２）。また、全てのセル参照先がサブシークエンス２に含まれており、かつ、セル参照「Ｂ５」とセル参照「Ｂ９」が同一列でｓｔｅｐ（この具体例では４）だけ離れた行のセルを参照している。さらに、これまでに図３のＳ２３の処理（サブシークエンス２の対応付けの処理）は３回実行した。従って、図１２に示すように「＝Ｂ５＋Ｂ９＋Ｂ１３」なる計算式が対応付けられる。同様にして、被生成表の１４行目の他のセルについても、同様にして計算式が対応付けられる。
【００５５】
このようにして計算式の対応付けが行われることによって、図１２に示すような表計算シートが被生成表確保部２内に被生成表として生成されることになる。例えば１０行目〜１３行目は図４に示す既存の表計算シートには存在しないが、このような場合でも計算式は自動的に生成される。また、被生成表の１４行目についても、サブシークエンス２の繰り返し回数が増加した分だけの加算が自動的に追加される。従って、計算式を改めて入力したり、計算式を覚える必要はなく、また、新たな計算対象データの個数が既存の表計算シートの計算対象データの個数と異なり、シークエンスの繰り返し回数が異なるような場合であっても、自動的に計算式を変更した新規の表計算シートを生成することが可能である。
【００５６】
上述の具体例では、図７に示す与えられた新たな計算対象データが、サブシークエンス２を３回繰り返した場合の計算対象データの個数と一致している。しかし、サブシークエンス２の繰り返しの結果、必要となる計算対象データの個数と、実際に与えられる新たな計算対象データの個数が一致しない場合も考えられる。例えば上述の具体例では３ヶ月（四半期）毎にデータを集計するものであるが、ここに３の倍数でない月数、例えば１月度から８月度までの新たな計算対象データが与えられた場合が考えられる。
【００５７】
この場合、次のような対応が考えられる。まず、一つのシークエンスが完結するまで、適当な計算対象データを補完する方法がある。例えば不足する計算対象データについては全て「０」とすることができる。ただし、上述の具体例でこの方法を適用すると、「月度」欄も「０」となってしまう。これに対しては補完するデータについてパターンを把握し、「『月度』欄は１，２，．．．，８となっているから次は９とする」という方法も考えられる。
【００５８】
また別の方法として、対応付ける計算対象データが不足するグループについてはシークエンスから除くという方法もある。この場合、上述の具体例において新たな計算対象データが１月度から８月度までしかない場合、７、８月度の行の次に四半期計の行が配置されることになる。さらに別の方法として、対応付けるデータが不足するシークエンスは繰り返さないという方法もある。この場合、上述の具体例において新たな計算対象データが１月度から８月度までしかない場合、既存の表計算シートと同様に６月度までの新たな計算対象データにより構成されることとなり、７、８月度のデータは捨てられる。あるいは、対応付ける新たな計算対象データが不足している旨をユーザに対して表示し、ユーザに入力を促すように構成してもよい。このような構成を追加することによって、任意の個数の計算対象データに対応することが可能となる。
【００５９】
また、上述の具体例においてはサブシークエンス１やサブシークエンス３には計算対象データを対応付けないが、これらのサブシークエンスにおいても計算対象データを対応付けてもよい。例えば図４に示した既存の表計算シートにおいて１行目と２行目の間に各店毎の前年の月平均値の欄を設け、また計算対象データの１行目に各店毎の前年の月平均値の計算対象データを含めることによって、サブシークエンス１においても計算対象データを対応づけることができる。このようにサブシークエンス１、３にも新たな計算対象データを対応づけるとき、サブシークエンス１、サブシークエンス２、サブシークエンス３と順番にデータを対応付けてゆき、データの個数が足りない場合は上に述べたような対応を取るという方法も考えられるが、サブシークエンス１及びサブシークエンス３という、繰り返さない部分に必要なデータをまず確保し、残りのデータについてサブシークエンス２で対応付けを行うという手法も考えられる。
【００６０】
さらに、例えば文字列の部分も一部又は全部について、新たな計算対象データにより与えるように構成してもよい。例えば上述の具体例においては、図７に示した新たな計算対象データの前の行に「月度」、「α店」、「β店」、「γ店」というデータを追加し、またサブシークエンス１における１行目の各セルについても新たな計算対象データを対応づけるようにすればよい。これによって、上述の具体例では店名を変えた表計算シートを生成するなどといったことが可能となる。このような文字列の対応付けは、サブシークエンス１，２，３のいずれにも適用可能である。
【００６１】
上述の説明では、既存の表計算シートの計算式についてそのパターンを把握し、そのパターンに従って新たな計算式を対応付けている。上述の具体例では、図４に示した既存の表計算シートの１０行Ｂ列（１０行目の２列目）の計算式が「＝Ｂ５＋Ｂ９」であり、これが
＝セル参照１  演算子  セル参照２  演算子．．．演算子  セル参照ｔｉｍｅｓ
というパターンであることを把握し、このパターンに従って被生成表の１４行Ｂ列（１４行目の２列目）のセルに「＝Ｂ５＋Ｂ９＋Ｂ１３」という計算式を対応付けている。しかしこのようなセル内容のパターンの把握とパターンに基づく対応付けは、計算式に限られるものではなく、次のようなものも考えられる。
【００６２】
まず文字列のパターンを把握することができる。例えば上述の具体例では、図４に示した既存の表計算シートにおいて、現在「四半期計」となっているセルが「第１四半期計」と「第２四半期計」であるとすると、これらが「第ｎ四半期計」というパターン（但しｎはサブシークエンス２が何回目の繰り返しであるかを示す）であることを把握することができる。このような文字列のパターンを把握しておくことによって、被生成表には例えば「第１四半期計」と「第２四半期計」と「第３四半期計」を対応付けるといったことが可能となる。また、既存の表計算シートを作成したときの計算対象データが与えられ、その計算対象データから文字列の一部がパターンを有していることを把握できることもある。例えば表計算シートの「月度」の列が現在の「１，２，．．．」ではなく、「１月度，２月度，．．．」であり、これらが計算対象データに文字列「月度」を加えたものである場合、このようなパターンを把握し、与えられた新たな計算対象データ「１，．．．，９」に対して被生成表の月度の列に「１月度，．．．，９月度」を対応付けることができる。
【００６３】
また、計算対象データについても、一部についてはパターンを把握して自動生成するように構成することもできる。例えば上述の具体例において「月度」の列は「１」、「２」、…と並んでいることから、このパターンを把握することができる。そして、新たな計算対象データとして、「月度」の列のデータが与えられなくても、この列のセルについて例えば上述の具体例では「１」、「２」、…、「９」を生成して対応づけるように構成することができる。
【００６４】
さらに上述の説明では、対応把握部１において既存の表計算シートの各セルが計算対象データか否かの判定を行う際に、セルの内容が数値であるか否かという判別方法を用いたが、本発明はこれに限られるものではなく、次のような判別方法も考えられる。
・計算対象データもしくは計算式の位置を固定にする（例：最後の行と列は計算式で残りは計算対象データである）。
・計算式でないものは全て計算対象データとする。
・表計算シートとは別に、その表計算に使われた計算対象データを与え、それらを突き合わせて、表計算シートのどのセル内容が計算対象データであるかを判別する。
・ユーザから計算対象データの位置を入力してもらう。
【００６５】
また、上述の説明では対応把握部１においては表計算シートの各セルが計算対象データ、計算式、それ以外という区別しかしていないが、例えばフォントやセルの背景色等の表構成要素の属性の対応パターンをも把握しておき、対応付け部３において被生成表への対応付けを行う際に属性をも対応付けるようにしてもよい。この場合、対応把握部１でグループ分け及びサブシーケンスを求める際に、属性を考慮して行ってもよいし、被生成表への対応付けの際にのみ属性の対応付けを行うようにしてもよい。
【００６６】
さらに、上述の例では、先頭行から最終行まで、各々の行に対応するグループを並べた場合、そのグループのシークエンスが、サブシークエンス１、サブシークエンス２の０回以上の繰り返し、サブシークエンス３というパターンなしていることと仮定し、各サブシークエンスを求めることで、対応パターンを求めることとしたが、これに限られるものではなく、各種のシークエンスを仮定して処理を行うことが可能である。
【００６７】
さらにまた、上述の説明では縦方向（行）の繰り返しパターンを把握したが、横方向（列）のパターンを把握することも可能であるし、縦横双方の繰り返しパターンを把握することも可能である。
【００６８】
さらに、上述の説明では被生成表のセルに計算式を対応付けていたが、対応づける計算式を用いて即時に値を計算し、計算結果の値をセルに対応付けて新たな表計算シートを生成するように構成してもよい。
【００６９】
図１３は、本発明の第２の実施の形態を示すブロック図である。図中、図１と同様の部分には同じ符号を付して説明を省略する。４はパターン保持部、５はパターン指定部である。この例では、対応把握部１で把握したパターンをパターン保持部４に保持させておく。保持させておくパターンは１つに限らず、複数のパターンを保持させておくことができる。
【００７０】
パターン指定部５は、パターン保持部４に保持されているパターンのうち、いずれのパターンを適用するかを指示するものである。このパターン指定部５で指定されたパターンが対応付け部３に渡され、対応付け部３において新たな計算対象データが渡されたパターンに従って対応づけられてゆくことになる。
【００７１】
このような構成では、対応把握部１におけるパターンの把握の処理を予め行っておくことができるので、新たな計算対象データが与えられたときに高速に被生成表を作成することが可能となる。
【００７２】
図１４は、本発明の第３の実施の形態を示すブロック図である。図中、図１と同様の部分には同じ符号を付して重複する説明を省略する。この第３の実施の一形態は上述の第１の実施の一形態の簡易型として構成されるものであり、パターンの繰り返しなどを把握せず、既存の表計算シート中の計算対象データの部分を把握してそのセルに新たな計算対象データを対応づけることによって、既存の表計算シートと同型の表計算シートを生成するものである。
【００７３】
対応把握部１は、既存の表計算シートを調べて、その表計算シートのセルあるいは行または列に並ぶ表構成要素に対する計算対象データの対応を把握する。この実施の形態では、繰り返しパターンなどは把握しない。
【００７４】
被生成表確保部２は、対応把握部１によって得られた表構成要素と計算対象データとの対応に基づいて、既存の表計算シートを元に被生成表を確保する。具体的には、既存の表計算シートをそのまま被生成表としたり、あるいは、計算対象データの部分を除いた被生成表を確保すればよい。
【００７５】
対応付け部３は、対応把握部１が把握した既存の表計算シートにおける表構成要素と計算対象データとの対応に基づいて、被生成表確保部２に確保されている被生成表における表構成要素に、新規の計算対象データを対応づける。
【００７６】
以下、本発明の第３の実施の形態における動作の一例を、具体例を用いて説明する。ここでは既存の表計算シートとして、図４に示した表計算シートを用いるものとする。図１５は、本発明の第３の実施の一形態における被生成表確保部２で確保された被生成表の具体例の説明図、図１６は、新たな計算対象データの別の具体例の説明図、図１７は、最終的に生成された被生成表の別の例の説明図である。図４に示す既存の表計算シートを用いる場合、対応把握部１では、２，３，４，６，７，８行目の２，３，４列目のセルに計算対象データが存在することを把握する。この結果を用い、被生成表確保部２では例えば図１５に示すような計算対象データの部分を除く被生成表を確保する。
【００７７】
いま、図１６に示すような新たな計算対象データが与えられると、これらを被生成表の計算対象データの部分に順に対応づけてゆく。これによって、図１７に示すような被生成表が最終的に作成される。
【００７８】
このような簡易な構成でも、ユーザは計算式などを設定したり、設定のために計算式を学習する必要はなく、また、特別なテンプレートを記述しておく必要もなく、新たな表計算シートを生成することが可能である。この第３の実施の形態においても、上述の第２の実施の形態のように複数の被生成表となり得る表計算シートの枠組みを保持しておいて、選択して用いるように構成することも可能である。
【００７９】
以上、本発明の実施の形態についていくつか説明した。これらの実施の形態では、新たな計算対象データが全て一括して与えられ、バッチ的に処理する場合を想定して説明した。しかし本発明はこれに限られるものではなく、インタラクティブな表計算システムにおいて、入力中の表計算シートからパターンを把握し、自動的に計算式を挿入するといった構成も可能である。
【００８０】
なお、上述の各実施の形態における機能は、コンピュータプログラムによっても実現することが可能であり、コンピュータに表作成プログラムを実行させることによって上述のような機能を実現することができる。また、このようなコンピュータプログラムや、プログラムが用いるデータ等は、コンピュータが読み取り可能な記憶媒体に記憶させておくことも可能である。記憶媒体にプログラムを格納しておき、例えば本発明の表作成装置として動作させるコンピュータにこれらの記憶媒体を装着することによって、コンピュータからプログラムを読み出し、上述の各実施の形態で説明した機能を実行することができる。もちろん、ネットワークなどを介してプログラムをコンピュータに転送し、実行させてもよい。
【００８１】
【発明の効果】
以上の説明から明らかなように、本発明によれば、既存の表計算シートを利用し、その計算対象データや計算式などの対応あるいは対応パターンを把握して、その対応あるいは対応パターンに基づいて新たな計算対象のデータや計算式を対応づけることによって、既存の表計算シートと同様の形式の表計算データを新たに自動生成することができる。従って、ユーザは計算式等の設定を行うという手間をかける必要が無く、また計算式を学習する必要もない。また、従来のようにテンプレートを記述するための特別なプログラミングを行う必要がない。
【００８２】
さらに、既存の表計算シート内の表構成要素における内容もしくは属性をグループ化し、各構成要素とそのグループとを対応づけた上で、グループのシークエンスの繰り返しを含むパターンを把握するように構成することができる。これによって、シークエンスの繰り返しを含む表を生成することが可能であり、例えば既存の表計算シートとシークエンスの繰り返し回数が異なるような新規の表計算シートを生成することが可能となる。本発明は、このほかにも詳述したように種々の効果を奏するものである。
【図面の簡単な説明】
【図１】  本発明の第１の実施の一形態を示すブロック図である。
【図２】  対応把握部１の動作の一例を示すフローチャートである。
【図３】  対応付け部の動作の一例を示すフローチャートである。
【図４】  既存の表計算シートの具体例の説明図である。
【図５】  既存の表計算シートの具体例における各行とグループの対応関係の一例の説明図である。
【図６】  既存の表計算シートの具体例における各行とサブシークエンスの対応関係の一例の説明図である。
【図７】  新たな計算対象データの具体例の説明図である。
【図８】  サブシークエンス１の対応付け後の被生成表の具体例の説明図である。
【図９】  １回目のサブシークエンス２の対応付け後の被生成表の具体例の説明図である。
【図１０】  サブシークエンス２の対応付け終了後の被生成表の具体例の説明図である。
【図１１】  サブシークエンス３の対応付け後の被生成表の具体例の説明図である。
【図１２】  最終的に生成された被生成表の一例の説明図である。
【図１３】  本発明の第２の実施の一形態を示すブロック図である。
【図１４】  本発明の第３の実施の一形態を示すブロック図である。
【図１５】  本発明の第３の実施の一形態における被生成表確保部２で確保された被生成表の具体例の説明図である。
【図１６】  新たな計算対象データの別の具体例の説明図である。
【図１７】  最終的に生成された被生成表の別の例の説明図である。
【符号の説明】
１…対応把握部、２…被生成表確保部、３…対応付け部、４…パターン保持部、５…パターン指定部。
【図１】
0004450539.tif 000002
【図２】
0004450539.tif 000003
【図３】
0004450539.tif 000004
【図４】
0004450539.tif 000005
【図５】
0004450539.tif 000006
【図６】
0004450539.tif 000007
【図７】
0004450539.tif 000008
【図８】
0004450539.tif 000009
【図９】
0004450539.tif 000010
【図１０】
0004450539.tif 000011
【図１１】
0004450539.tif 000012
【図１２】
0004450539.tif 000013
【図１３】
0004450539.tif 000014
【図１４】
0004450539.tif 000015
【図１５】
0004450539.tif 000016
【図１６】
0004450539.tif 000017
【図１７】
0004450539.tif 000018