スプレッドシートは、表形式でデータを計算、整理、分析、保存するためのコンピュータアプリケーションです。[ 1 ] [ 2 ] [ 3 ]スプレッドシートは、紙の会計ワークシートのコンピュータ版として開発されました。[ 4 ]このプログラムは、表のセルに入力されたデータに基づいて動作します。各セルには、数値データ、テキストデータ、または他のセルの内容に基づいて値を自動的に計算して表示する数式の結果を含めることができます。スプレッドシートという用語は、そのような電子文書を指す場合もあります。[ 5 ]
現代の表計算ソフトでは、複数の表計算シート(「ワークシート」または単に「シート」と呼ばれることが多い)が集まって「ワークブック」を形成します。ワークブックは、ブック、シート、およびシート内のセルのすべてのデータを含むファイルによって物理的に表現されます。ワークシートは通常、ページ間を移動するタブで表現され、各ページには1つのシートが含まれていますが、Numbersはこのモデルを大きく変更しています。複数のシートで構成されるブックのセルは、参照にシート名を追加します。たとえば、「Sheet 1!C10」のように指定します。一部のシステムでは、この構文を拡張して、異なるワークブックへのセル参照を許可しています。
スプレッドシートのユーザーは、保存されている任意の値を調整し、計算値への影響を確認できます。これにより、手動で再計算することなく多くのケースを迅速に調査できるため、スプレッドシートは「もしも」分析に役立ちます。最新のスプレッドシートソフトウェアは、複数の相互作用するシートを持つことができ、データをテキストと数値、またはグラフ形式で表示できます。[ 6 ]
現代の表計算ソフトは、基本的な算術演算や数学演算に加え、一般的な財務会計や統計処理のための組み込み関数を提供しています。正味現在価値、標準偏差、回帰分析といった計算は、あらかじめプログラムされた関数を数式に組み込むことで、表形式データに適用できます。また、表計算ソフトには、条件式、テキストと数値の変換関数、文字列を操作する関数なども備わっています。
スプレッドシートは、ビジネスの世界全体で紙ベースのシステムに取って代わりました。当初は会計や簿記の作業のために開発されましたが、現在では表形式のリストを作成、並べ替え、共有するあらゆる場面で広く使用されています。[ 7 ]

1969 年に Remy Landau と Rene Pardo によって導入された LANPAR [ 8 ]は、メインフレームおよびタイムシェアリング コンピュータで最初の電子スプレッドシートでした。[ 8 ] VisiCalc (1979 年) は、マイクロコンピュータで最初の電子スプレッドシートであり[ 9 ] 、 Apple II を人気のある広く使用されているパーソナル コンピュータにするのに役立ちました。 Lotus 1-2-3 は、 DOS が支配的なオペレーティングシステムであったときに、主要なスプレッドシートでした。 [ 10 ] Microsoft Excel は現在、 WindowsおよびMacintoshプラットフォームで最大の市場シェアを持っています。[ 11 ] [ 12 ] [ 13 ]スプレッドシート プログラムは、オフィス生産性スイートの標準機能です。 2006 年に Google は、スプレッドシートWeb アプリケーションのベータ版をリリースしました 。これは現在Google Sheetsとして知られており、 Google Driveで提供されているアプリケーションの 1 つです。[ 14 ]
スプレッドシートは、行と列に配置されたセルの表で構成され、X座標とY座標で参照されます。X座標(列)は通常、「A」、「B」、「C」などの文字で表され、行は通常、1、2、3などの数字で表されます。単一のセルは、「C10」のように行と列を指定することで参照できます。このセル参照の電子的な概念は、LANPARで初めて導入され、VisiCalcで使用されているバリエーションは「A1表記」として知られています。さらに、スプレッドシートには、通常は連続したセルのグループである範囲の概念があります。たとえば、最初の列の最初の10個のセルは、「A1:A10」の範囲で参照できます。LANPARは、前方参照/自然順序計算を革新しましたが、これはLotus 123とMicrosoftのMultiPlanバージョン2まで再登場しませんでした。
ユーザーは主にセルを通してシートを操作します。特定のセルには、データを入力するか、数式を入力することでデータを保持できます。数式は通常、テキストの前に等号を付けることで作成されます。データには、文字列hello world、数値5、日付などが含まれます10-Sep-97。数式は等号で始まります=5*3が、表示画面には計算結果15が表示されるため、数式自体は表示されません。そのため、場合によっては混乱を招く可能性があります。
スプレッドシートの重要な機能は、数式が他のセルの内容を参照できることであり、その参照先のセル自体が数式の結果となる場合もあります。このような数式を作成するには、数値をセル参照に置き換えます。たとえば、この数式は、=5*C10セルC10の値に数値5を掛けた結果を生成します。C10に値が入っている場合、3結果はとなります15。しかし、C10には他のセルを参照する数式が入っている場合もあり、以下同様です。

数式を連結できる機能こそが、スプレッドシートの強力な特長です。多くの問題は、一連の個別の数学的ステップに分解でき、それらをセル内の個別の数式に割り当てることができます。これらの数式の中には、範囲にも適用できるものがあり、例えば、SUM範囲内のすべての数値を合計する関数などが挙げられます。
スプレッドシートはデータベースと多くの原理や特性を共有していますが、スプレッドシートとデータベースは同じものではありません。スプレッドシートは基本的に1つのテーブルであるのに対し、データベースは機械が読み取れる意味的な関係を持つ多数のテーブルの集合です。3つのシートを含むワークブックは、確かに相互にやり取りできる複数のテーブルを含むファイルですが、データベースのような関係構造は持ち合わせていません。スプレッドシートとデータベースは相互運用可能です。シートをデータベースにインポートしてテーブルとして使用したり、データベースのクエリをスプレッドシートにエクスポートしてさらに分析したりできます。
表計算ソフトは、オフィス生産性スイートの主要コンポーネントの一つであり、通常、ワープロソフト、プレゼンテーションソフト、データベース管理システムなども含まれています。スイート内のプログラムは、同様の機能に対して同様のコマンドを使用します。通常、機能的に同等のプログラムを個別に組み合わせるよりも、コンポーネント間でデータを共有する方が容易です。これは、多くのパーソナルコンピュータシステムがグラフィカルユーザーインターフェースではなく、テキストモードの表示とコマンドを使用していた時代には特に大きな利点でした。
人類は古代からデータを表、つまり列と行のグリッドに整理してきた。バビロニア人は紀元前1800年頃から粘土板を使ってデータを保存していた。[ 15 ] 他の例としては、簿記帳簿や天文学の記録などが挙げられる。[ 16 ]
少なくとも 1906 年以来、「スプレッドシート」という用語は、会計において、帳簿の列と行のグリッドを意味するために使用されてきました。[ 17 ] [ 18 ]コンピュータ化されたスプレッドシートの台頭以前は、「スプレッド」は、見開きの 2 ページにわたって中央の折り目を越えて、2 ページを 1 つの大きなページとして扱う新聞や雑誌の記事 (テキストまたはグラフィック) も指していました。[ 19 ]「スプレッドシート」という複合語は、帳簿の元帳を表示するために使用される形式を意味するようになりました。これは、上部に支出のカテゴリの列があり、左余白に請求書がリストされ、各支払いの金額が行と列が交差するセルにあり、伝統的には、綴じられた元帳 (会計記録を保持する帳簿) の見開きのページにまたがる「スプレッド」、または通常の紙の約 2 倍の幅でその形式で行と列に罫線が引かれた特大の用紙 (「分析用紙」と呼ばれる) にありました。[ 20 ]
バッチ「スプレッドシート」は、入力データを追加して出力レポートを生成するバッチコンパイラ、つまり4GLまたは従来の非対話型バッチコンピュータプログラムと区別がつかない。しかし、この電子スプレッドシートの概念は、1961年のリチャード・マテシッチの論文「予算モデルとシステムシミュレーション」で概説された。[ 21 ]その後のマテシッチの研究(1964a、第9章、会計と分析方法)と、その姉妹編であるマテシッチ(1964b、予算コンピュータプログラムによる企業のシミュレーション)は、会計および予算システム( FORTRAN IVでプログラムされたメインフレームコンピュータ上)にコンピュータ化されたスプレッドシートを適用した。これらのバッチスプレッドシートは、個々のセルではなく、列または行全体(入力変数)の追加または減算を主に扱った。
1962年、ビジネス コンピュータ言語の BCL と呼ばれるこの表計算ソフトの概念がIBM 1130に実装され、1963年にウィスコンシン州マーケット大学のR. Brian Walsh によってIBM 7040に移植されました。このプログラムはFortranで書かれていました。これらのマシンでは原始的なタイムシェアリングが利用可能でした。1968年、BCL はワシントン州立大学のIBM 360/67タイムシェアリング マシンに Walsh によって移植されました。これはビジネス学生への財務教育を支援するために使用されました。学生は教授が準備した情報を受け取り、それを操作して表現し、比率などを表示することができました。 1964年、Kimball、Stoffells、Walsh によってBusiness Computer Languageというタイトルの本が書かれました。本とプログラムは両方とも 1966 年に著作権登録され、数年後にその著作権が更新されました。[ 22 ]
1960年代後半、ゼロックスはBCLを用いて、自社のタイムシェアリングシステム向けに、より高度なバージョンを開発した。
電子スプレッドシートの開発における重要な発明は、1970年にスプレッドシートの自動自然順序計算アルゴリズムに関する米国特許第4,398,249号を出願したRene K. PardoとRemy Landauによってなされました。この特許は当初、純粋に数学的な発明であるとして特許庁によって拒否されましたが、12年間の控訴を経て、PardoとLandauは連邦巡回区控訴裁判所の前身であるCCPAで画期的な裁判に勝ち、1983年に特許庁の決定を覆し、「新規性のポイントがアルゴリズムにあるという理由だけで、特許の対象でなくなるわけではない」という原則を確立しました。しかし、1995年に連邦地方裁判所は、出願手続き中の発明者の不公平な行為を理由に、この特許は執行不能であるとの判決を下しました。[ 23 ] 1996年に米国連邦巡回区控訴裁判所はこの判決を支持しました。 [ 24 ]
このソフトウェアは LANPAR (LANguage for Programming Arrays at Random)と呼ばれていました。[注 1 ]これは、パルドとランダウがハーバード大学を卒業した直後の 1969 年の夏に構想され、完全に開発されました。共同発明者のルネ・パルドは、ベル・カナダのマネージャーが予算フォームのプログラミングと修正をプログラマに頼る必要がないようにしたいと考え、ユーザーが任意の順序でフォームを入力できるようにし、電子計算機が正しい順序で結果を計算する(「前方参照/自然順序計算」)ことを思いついたことを回想しています。パルドとランダウは 1969 年にこのソフトウェアを開発し、実装しました。[ 25 ]
LANPARは、ベル・カナダ、AT&T、および全国で事業を展開していた18の電話会社が、地域および全国規模の予算編成業務に使用していました。LANPARはゼネラルモーターズでも使用されていました。その独自性は、VisiCalc、SuperCalc、およびMultiPlanの最初のバージョンで使用されていた、各セルで結果を計算する左から右、上から下の順序とは異なり、前方参照/自然順序計算(最初の「非手続き型」コンピュータ言語の1つ)[26]をパルドが共同発明した点にありました。前方参照/自然順序計算がない場合、ユーザーはすべてのセルの値が変更されなくなるまでスプレッドシートを更新する必要がありました。セルの値が一定になると、スプレッドシート内に未計算の前方参照が残っていないことが確認できました。
1968年、アリゾナ州フェニックスに本社を置くゼネラル・エレクトリック(GE )の元従業員3人が、独自のソフトウェア開発会社を設立することを決意した。A・リロイ・エリソン、ハリー・N・カントレル、ラッセル・E・エドワーズの3人は、ベンチャーキャピタリストに提示する事業計画書の表を作成する際に、膨大な計算作業に追われていた。そこで、彼らは労力を大幅に削減するため、表を自動的に作成するコンピュータプログラムを開発した。当初は個人的な用途のためのシンプルなユーティリティとして考案されたこのプログラムは、後にCapex Corporationとして知られるようになる会社が最初に提供するソフトウェア製品となった。「AutoPlan」はGEのタイムシェアリングサービス上で動作し、その後、 IBMメインフレーム上で動作するバージョンが「AutoTab」という名称で発表された。(National CSS社も同様の製品「CSSTAB」を提供しており、1970年代初頭にはタイムシェアリングのユーザー層がそれなりに拡大していた。主な用途は世論調査の集計であった。)
AutoPlan/AutoTab はWYSIWYG対話型スプレッドシート プログラムではなく、スプレッドシート用のシンプルなスクリプト言語でした。ユーザーは行と列の名前とラベルを定義し、次に各行または列を定義する数式を定義しました。1975 年に Autotab-II は、オリジナルを最大「ユーザーが必要とする任意の比率で組み合わせた 1,500 行と列」まで拡張したと宣伝されました... [ 27 ]
タイムシェアリングサービスを運営していたGEインフォメーションサービス社は、1974年頃に独自の表計算システムである財務分析言語(FAL)も発表した。その後、英国の独立系開発者であるオリバー・ベラコットによって開発された表計算言語TABOL [ 28 ] [ 29 ]が追加され、 FALとTABOLはGEISのデータベースシステムであるDMSと統合された。
IBM財務計画・管理システムは、1976年にIBMカナダのブライアン・インガムによって開発されました。IBMはこれを少なくとも30か国で導入しました。IBMメインフレーム上で動作し、 APLで開発された財務計画アプリケーションとしては初めて、プログラミング言語をエンドユーザーから完全に隠蔽したものでした。IBMのVMオペレーティングシステムを通じて、新バージョンがリリースされるたびにアプリケーションの各コピーを自動的に更新する最初のプログラムの一つとなりました。ユーザーは行間と列間の単純な数式関係を指定できました。当時の他の代替システムと比較して、非常に大きなスプレッドシートをサポートすることができました。従来のバッチシステムから取得した実際の財務計画データを、毎月各ユーザーのスプレッドシートにロードしました。オブジェクトカーネルを通じてAPLのパワーを最適化するように設計されており、従来のプログラミング手法に比べてプログラム効率を最大50倍向上させました。
初期の「産業用」スプレッドシートの例として、1976 年に米国鉄道協会で開発された APLDOT が挙げられます。これは、メリーランド州ローレルにあるジョンズ・ホプキンス大学応用物理研究所で稼働する IBM 360/91 上で動作していました。[ 30 ]このアプリケーションは、米国議会やコンレールの財務およびコストモデルなどのアプリケーションの開発に長年成功裏に使用されました。財務アナリストや戦略プランナーが紙のスプレッドシートパッドで解決していたのと同じ問題を解決するために APLDOT を使用したことから、「スプレッドシート」と呼ばれるようになりました。

スプレッドシートの概念は、 1979年にVisiCorpの社員であるダン・ブリックリンとボブ・フランクストンによってApple II向けに開発されたVisiCalcによって広く知られるようになった。特筆すべきは、VisiCalcによってパーソナルコンピュータがコンピュータ愛好家の趣味からビジネスツールへと変貌を遂げたことである。
VisiCalcは、WYSIWYG対話型ユーザーインターフェース、自動再計算、ステータス行と数式行、相対参照と絶対参照による範囲コピー、参照セルの選択による数式構築など、現代の表計算アプリケーションの多くの重要な機能を組み合わせた最初の表計算ソフトでした。当時LANPARを知らなかったPC World誌は、VisiCalcを最初の電子表計算ソフトと呼びました。[ 31 ]
ブリックリンは、大学の教授が黒板に計算結果の表を作成する様子を目の当たりにした時のことを語っている。教授は間違いを見つけると、表の複数の項目を根気強く消して書き直さなければならなかった。この経験から、ブリックリンは黒板をモデルにして、コンピュータ上で同じプロセスを再現し、数式の計算結果を表示できるのではないかと考えた。こうして生まれたのがVisiCalcである。
Apple II用の VisiCalc は、最初のキラー アプリケーションとなりました。 [ 32 ] [ 33 ]非常に魅力的なプログラムで、それを使うためだけに特定のコンピュータを購入する人もいました。CP /Mマシン、Atari 8 ビット コンピュータ、Commodore PETなど、他のコンピュータにも移植されましたが、VisiCalc は Apple II プログラムとして最もよく知られています。
SuperCalcは、1980年にSorcim社から発売された表計算ソフトで、当初は(WordStarとともに)Osborne 1ポータブルコンピュータに付属するCP/Mソフトウェアパッケージの一部として同梱されていました。そして、すぐにCP/Mの事実上の標準表計算ソフトとなりました。
1982年11月にLotus 1-2-3が発表されたことで、IBMパーソナルコンピュータの普及が加速した。これは特にIBM PC DOS向けに開発され、Apple IIのVisiCalcと比較して速度とグラフィックが向上しており、人気が高まった。[ 34 ] Lotus 1-2-3は数年間、主要な表計算ソフトであった。
Microsoft は1985 年 9 月 30 日にApple Macintosh用のExcelの最初のバージョンをリリースし、その後[ 35 ] Windows に移植しました。最初のバージョンは 2.05 (Macintosh バージョン 2.2 と同期するため) と番号が付けられ、1987 年 11 月にリリースされました。1990 年代初頭の Microsoft の Windows 3.x プラットフォームにより、Excel スプレッドシート アプリケーションが Lotus から市場シェアを奪うことが可能になりました。Lotus が使用可能な Windows 製品で対応した頃には、Microsoft はOfficeスイートの構築を開始していました。1995 年までに Excel は市場リーダーとなり、Lotus 1-2-3 をわずかに上回り[ 20 ]、2013 年に IBM は Lotus 1-2-3 の販売を完全に終了しました[ 36 ] 。
2006年、Googleはベータ版のGoogle Sheetsをリリースしました。これは、互換性のあるWebブラウザを使用してあらゆるデバイスから複数のユーザーがアクセスできるWebベースの表計算アプリケーションで、オンラインでもオフラインでも(インターネット接続の有無に関わらず)使用できます。Google Sheetsは、 2Web Technologiesが開発したWebベースの表計算アプリケーションXL2Webをベースに、Office文書の複数ユーザーによるオンライン共同作業を可能にするDocVerseを組み合わせたものです。
2016年にリリースされたCollabora Online Calcは、認証やメンテナンスを第三者に依存することなく、あらゆる環境にホストおよび統合できるウェブベースのスプレッドシートとして注目されました。Collabora Onlineは、41年前の1985年にリリースされたStarOfficeから発展したLibreOfficeキットをコアとして動作しています。
現在注目されている表計算ソフト:
販売終了となった表計算ソフト:
複数の企業が、それぞれ全く異なるパラダイムに基づいたプログラムで表計算ソフト市場への参入を試みてきた。中でもロータス社は、おそらく最も成功した例と言えるLotus Improvを発表し、特に金融業界で一定の商業的成功を収めた。その強力なデータマイニング機能は、今日でも高く評価されている。
スプレッドシート2000は数式の作成を劇的に簡素化しようと試みたが、概して成功しなかった。
基本的な概念は、シートと呼ばれるセルのグリッドで構成され、各セルには値と呼ばれる生データ、または数式が格納されます。数式は、既存の値から新しい値を機械的に計算する方法を示します。値は一般的な数値ですが、テキスト、日付、月なども指定できます。これらの概念の拡張として、論理スプレッドシートがあります。シートのプログラミング、データの視覚化、シートのリモート接続、セルの依存関係の表示などを行うためのさまざまなツールが一般的に提供されています。
「セル」は、データを格納するための箱と考えることができます。単一のセルは通常、列と行で参照されます(以下の例の表では、C2 は値 30 を含むセルを表します)。通常、従属変数を表す行は 1 から始まる 10進数表記で参照され、独立変数を表す列は、文字 AZ を数字として使用する 26 進数による全単射表記で参照されます。セルの物理的なサイズは、通常、ボックスの交点で高さまたは幅をドラッグすることで、内容に合わせて調整できます(列ヘッダーまたは行ヘッダーをドラッグすることで、列全体または行全体を調整することもできます)。
セルの配列はシートまたはワークシートと呼ばれます。これは、従来のコンピュータプログラムにおける変数の配列に相当します(ただし、一度入力された特定の不変の値は、同じ類推で定数とみなすことができます)。ほとんどの実装では、1つのスプレッドシート内に複数のワークシートが存在する場合があります。ワークシートは、スプレッドシートを分かりやすくするために分割した部分集合にすぎません。機能的には、スプレッドシートは全体として動作し、すべてのセルはスプレッドシート内のグローバル変数として動作します(各変数は、それを含むセルを除いて「読み取り」アクセスのみを持ちます)。
セルには値、数式、または空欄のままにすることができます。慣例として、数式は通常「=」記号で始まります。
値は、コンピューターのキーボードを使ってセルに直接入力することで入力できます。あるいは、数式(下記参照)に基づいて値を生成することもできます。数式は、計算を実行したり、現在の日付や時刻を表示したり、株価やデータベースの値などの外部データを取得したりすることができます。
スプレッドシートの値ルール
コンピュータ科学者のアラン・ケイは、スプレッドシートの動作を要約するために「値ルール」という用語を使用しました。セルの値は、ユーザーがセルに入力した数式のみに依存します。[ 45 ]数式は他のセルの値に依存する場合がありますが、それらのセルも同様にユーザーが入力したデータまたは数式に限定されます。数式の計算には「副作用」はありません。唯一の出力は、計算結果をそのセル内に表示することです。ユーザーがセルの内容を手動で変更しない限り、セルの内容を永続的に変更する自然なメカニズムはありません。プログラミング言語の文脈では、これは限定的な形式の一階関数型プログラミングになります。[ 46 ]
1980年代からスプレッドシートの標準機能となっているこのオプション機能により、スプレッドシートプログラムに値の再計算を手動で要求する必要がなくなります(現在では、大規模なスプレッドシートでパフォーマンスを向上させるために特別に「無効」にしない限り、通常はデフォルトオプションとなっています)。以前のスプレッドシートの中には、大規模または複雑なスプレッドシートの再計算によってデータ入力速度が低下することが多かったため、手動で再計算を要求する必要がありました。多くの最新のスプレッドシートでも、このオプションは引き続き利用可能です。
再計算では、一般的にスプレッドシートに循環依存関係がないことが求められます。依存関係グラフは、更新する各オブジェクトに対応する頂点と、一方のオブジェクトを他方のオブジェクトより先に更新する必要がある場合に2つのオブジェクトを接続するエッジを持つグラフです。循環依存関係のない依存関係グラフは、有向非巡回グラフを形成します。これは、明確な結果を与えることが期待できる部分順序付け(この場合はスプレッドシート全体にわたる)の表現です。[ 47 ]
この機能は、外部ソース(例えば、リモートスプレッドシートのセル)の値を使用して、セルの内容を定期的に更新する機能です。共有Webスプレッドシートの場合、他のユーザーが更新したセルを「即座に」更新する機能となります。関連するすべてのセルも更新する必要があります。
入力後、選択したセル(またはスプレッドシート全体)を「ロック」して、誤って上書きされるのを防ぐことができます。通常、これは数式を含むセルに適用されますが、キログラム/ポンド換算係数(小数点以下8桁まで2.20462262)などの「定数」を含むセルにも適用される場合があります。個々のセルがロックされているとマークされていても、ファイル設定でこの機能が有効になるまでは、スプレッドシートのデータは保護されません。
セルまたはセル範囲には、値の表示方法を指定するオプションがあります。デフォルトの表示形式は、特に指定がない限り、通常は初期値によって設定されます。たとえば、「31/12/2007」や「31 Dec 2007」は、デフォルトで日付のセル形式になります。同様に、 数値の後に「%」記号を追加すると、セルはパーセント形式のセルとして認識されます。この形式によって変更されるのはセルの内容ではなく、表示される値のみです。
「数値」や「通貨」などの一部のセル形式では、小数点以下の桁数を指定することもできます。
これにより、無効な演算(日付を含むセルに対して乗算を行うなど)が可能になり、適切な警告なしに非論理的な結果が生じる可能性があります。
スプレッドシートアプリケーションの機能によっては、各セル(ワープロソフトの「スタイル」に相当するもの)を、内容の属性(フォントサイズ、色、太字、斜体など)またはセルの属性(罫線の太さ、背景の網掛け、色など)を使用して個別に書式設定できます。スプレッドシートの読みやすさを向上させるために、セルの書式設定をデータに条件付きで適用することも可能です。たとえば、負の数値を赤色で表示することができます。
セルの書式設定は通常、その内容に影響を与えません。また、セルが他のワークシートやアプリケーションに参照またはコピーされる方法によっては、書式設定が内容とともに引き継がれない場合があります。
ほとんどの実装では、列または行内のセル、あるいはセルのグループに「名前を付ける」ことができ、ユーザーはグリッド参照ではなく名前でそれらのセルを参照できます。名前はスプレッドシート内で一意である必要がありますが、スプレッドシートファイルで複数のシートを使用する場合は、シート名を追加することで区別すれば、各シートで同じ名前のセル範囲を使用できます。この使用の理由の1つは、複数のシートにわたってコマンドを繰り返すマクロを作成または実行することです。もう1つの理由は、名前付き変数を含む数式は、実装しようとしている代数と容易に照合できるためです(Fortran式に似ています)。名前付き変数と名前付き関数を使用することで、スプレッドシートの構造もより分かりやすくなります。
名前付きセルの代わりに、セル(またはグリッド)参照を使用する方法もあります。ほとんどのセル参照は同じシート内の別のセルを示しますが、同じスプレッドシート内の別のシートのセル、あるいは(実装によっては)まったく別のスプレッドシートのセル、またはリモートアプリケーションの値を参照することもできます。
「A1」スタイルの典型的なセル参照は、列を識別するための大文字と小文字を区別しない1文字または2文字(列数が最大256列の場合:A~ZおよびAA~IV)と、それに続く行番号(例:1~65536の範囲)で構成されます。どちらの部分も相対参照(数式が移動またはコピーされると変更される)または絶対参照(セル参照の該当部分の前に$を付けて示す)にすることができます。代替の「R1C1」参照スタイルは、文字R、行番号、文字C、および列番号で構成されます。相対的な行番号または列番号は、番号を角括弧で囲むことで示されます。現在、ほとんどのスプレッドシートはA1スタイルを使用しており、一部のスプレッドシートでは互換性オプションとしてR1C1スタイルを提供しています。
コンピュータがセル内の数式を計算してそのセルの表示値を更新する際、そのセル内のセル参照によって他のセルが指定されている場合、コンピュータはその指定されたセルの値を取得します。
同じ「シート」上のセルは通常、次のように指定されます。
=A1
同じスプレッドシートの別のシートにあるセルは、通常次のように指定されます。
=SHEET2!A1(つまり、同じスプレッドシートのシート2の最初のセル)。
Excel の一部のスプレッドシート実装では、同じコンピュータまたはローカルネットワーク上の別のスプレッドシート (現在開いていてアクティブなファイルではない) へのセル参照が可能です。また、同じコンピュータまたはネットワーク上の、共有可能として定義されている別の開いていてアクティブなスプレッドシートのセルを参照することもできます。これらの参照には、次のような完全なファイル名が含まれます。
='C:\Documents and Settings\Username\My spreadsheets\[main sheet]Sheet1!A1
スプレッドシートでは、新しい行や列が挿入または削除されると、セルへの参照が自動的に更新されます。ただし、列の合計値の直前に新しい行を追加する場合は、合計値が追加された行の値を正しく反映していることを確認する必要があります。実際には、合計値が追加された行の値を正しく反映していない場合が多いためです。
循環参照とは、あるセル内の数式が、直接的またはセル参照の連鎖を介して間接的に、最初のセルを参照する別のセルを参照している場合に発生します。多くの一般的なエラーが循環参照を引き起こしますが、有効な手法の中には循環参照を利用するものもあります。これらの手法は、スプレッドシート上で何度も再計算を行うことで、(通常は)該当するセルの正しい値に収束します。
同様に、名前付きセル範囲の代わりに、範囲参照を使用することもできます。セル範囲への参照は通常、(A1:A6) の形式をとります。これは、A 列の 1 行目から 6 行目までのすべてのセルを指定します。"=SUM(A1:A6)" のような数式は、指定されたすべてのセルを合計し、その結果を数式自体を含むセルに表示します。
初期の表計算ソフトでは、セルは単純な2次元グリッドでした。時を経て、モデルは3次元へと拡張され、場合によってはシートと呼ばれる一連のグリッドが用いられるようになりました。最も高度な例では、反転や回転操作が可能になり、データセットを様々な方法で分割したり投影したりすることができます。

A(10、20、30)のみが入力され、残りのセルは数式になっています。列内の数式はB、相対参照を使用してA列の値を乗算し、列内の数式は関数B4を使用して範囲内の値の合計SUM()を求めます。B1:B3数式は、計算結果をセル内に表示するために必要な計算式を示します。したがって、数式を含むセルには、数式自体と計算結果という2つの表示要素があります。数式は通常、マウスで特定のセルをクリックして選択した場合にのみ表示され、それ以外の場合は計算結果が表示されます。
数式はセルまたはセル範囲に値を割り当て、通常は次の形式をとります。
ここで、式は以下から構成される。
2、9.14または6.67E-11。A1単一のセルまたはB1:B3範囲への参照など)。+、、、、、など-。*/>=、、、<など。SUM()、TAN()およびその他多数。セルに数式が含まれている場合、多くの場合、他のセルへの参照が含まれています。このようなセル参照は変数の一種です。その値は、参照先のセルの値、またはその派生値になります。参照先のセルがさらに他のセルを参照している場合、その値は参照先のセルの値に依存します。参照は、相対参照(例:、、A1またはB1:B3)、絶対参照(例:、、$A$1または$B$1:$B$3)、または行方向または列方向の絶対参照と相対参照が混在した参照(例:$A1は列方向の絶対参照、A$1は行方向の絶対参照)にすることができます。
有効な数式として使用できるオプションは、使用するスプレッドシートの実装によって異なりますが、一般的に、今日の市販のスプレッドシートのほとんどは、ほとんどの算術演算とかなり複雑なネストされた条件演算を実行できます。最新の実装では、カスタム関数、リモートデータ、およびアプリケーションにアクセスするための機能も提供されています。
数式には、実際の計算の有無にかかわらず、条件(またはネストされた条件)を含めることができ、エラーを特定して強調表示するためだけに用いられることもあります。以下の例では、パーセンテージの列(A1~A6)の合計が有効かどうかをテストし、隣接する右隣のセルに明示的なメッセージを表示することを想定しています。
その他の例:
条件文を構築する最良の方法は、段階的に構成し、試行錯誤を繰り返してテストし、コードを改良していくことです。
スプレッドシートには必ずしも数式を含める必要はなく、その場合はカレンダー、時刻表、単純なリストのように、行と列に整理されたデータの集合(データベース)とみなすことができます。使いやすさ、書式設定機能、ハイパーリンク機能などから、多くのスプレッドシートはこの目的のためだけに利用されています。
スプレッドシートには通常、算術演算(総和、平均など)、三角関数、統計関数など、いくつかの既定の関数が含まれています。さらに、多くの場合、ユーザー定義関数も用意されています。Microsoft Excel では、これらの関数は付属の Visual Basic エディターでVisual Basic for Applicationsを使用して定義され、ワークシート上で自動的にアクセスできるようになります。また、ワークシートから情報を取得し、いくつかの計算を実行して、結果をワークシートに返すプログラムを作成することもできます。図では、名前sqはユーザーが割り当てたもので、関数sqは Excel に付属のVisual Basicエディターを使用して導入されています。名前マネージャには、名前付き変数xとyのスプレッドシート定義が表示されます。
関数自体はワークシートに書き込むことはできず、単に評価結果を返すだけです。しかし、Microsoft Excel では、サブルーチンはサブルーチン内で見つかった値やテキストをスプレッドシートに直接書き込むことができます。この図は、名前付き列変数xの各要素を読み取り、その二乗を計算し、その値を名前付き列変数yの対応する要素に書き込むサブルーチンの Visual Basic コードを示しています。y列には数式は含まれていません。y 列の値はスプレッドシートではなくサブルーチン内で計算され、そのまま書き込まれるためです。
現在の物理的なスプレッドシートファイル内に存在しないセルまたはセルグループを参照する場合、それは「リモート」スプレッドシートへのアクセスとみなされます。参照されたセルの内容は、最初の参照時に手動で更新される場合もあれば、最近ではWebベースのスプレッドシートの場合のように、指定された自動更新間隔でほぼリアルタイムの値として取得される場合もあります。
多くの表計算アプリケーションでは、セルの内容が変わると動的に再構築される指定されたセルのグループからチャートやグラフ(ヒストグラム、円グラフなど)を生成できます。生成されたグラフィックコンポーネントは、現在のシートに埋め込むことも、別のオブジェクトとして追加することもできます。Excel のヒストグラムを作成するには、REPT 関数に基づく数式を使用できます。[ 48 ]
1980年代後半から1990年代初頭にかけて、Javelin SoftwareとLotus Improvが初めて登場しました。従来の表計算ソフトのモデルとは異なり、これらのソフトはレポートのセル内のデータではなく、変数と呼ばれるオブジェクトに基づいて構築されたモデルを採用していました。これらの多次元表計算ソフトは、複数の同期ビューを同時に表示するなど、さまざまな自己文書化方式でデータやアルゴリズムを表示することを可能にしました。例えば、Javelinのユーザーは、図上の変数間の接続をたどりながら、各変数の論理的なルートとブランチを確認することができました。これは、初期のJavelinがもたらしたおそらく最大の貢献、つまり12種類のビューを通してユーザーのロジックやモデル構造を追跡できるという概念の一例です。複雑なモデルであっても、作成に関わっていない人でも分析し、理解することができます。
これらのプログラムでは、時系列データ、あるいは任意の変数は、行や列にたまたま出現するセルの集合ではなく、それ自体が独立したオブジェクトでした。変数は、他のすべての変数との関連性、データ参照、テキストや画像による注釈など、多くの属性を持つことができました。計算はセルの範囲ではなく、これらのオブジェクトに対して行われたため、2つの時系列データを追加すると、カレンダー時間、またはユーザー定義の時間枠で自動的に同期されました。データはワークシートとは独立しており、変数、ひいてはデータは、行、列、またはワークシート全体を削除しても破壊されることはありませんでした。例えば、1月のコストは、ワークシートのどこに、あるいはどちらが表示されているかに関わらず、1月の収益から差し引かれます。これにより、後でピボットテーブルで使用される操作が可能になります。ただし、レポートテーブルの柔軟な操作は、変数によってサポートされる多くの機能の1つにすぎません。さらに、コストが週単位で、収益が月単位で入力されている場合、プログラムは必要に応じて割り当てたり、補間したりすることができました。このオブジェクト設計により、変数とモデル全体がユーザー定義の変数名で相互参照できるようになり、多次元解析や大規模ながら編集しやすい統合処理を実行することが可能になった。
算術式ではなく論理式に基づいた数式言語を持つスプレッドシートは、論理スプレッドシートと呼ばれます。このようなスプレッドシートは、セル値について演繹的に推論するために使用できます。
初期のプログラミング言語が表計算シートの印刷出力を生成するように設計されていたのと同様に、プログラミング技術自体も進化を遂げ、表(表計算シートまたはマトリックスとも呼ばれる)のデータをコンピュータ内でより効率的に処理できるようになった。
スプレッドシートは、エンドユーザー開発ツールとして人気があります。[ 49 ] EUDとは、プログラミング言語に関する十分な知識を持たないプロの開発者ではない人々が、自動化された動作や複雑なデータオブジェクトを作成する活動や手法を指します。多くの人は、同等の逐次プログラムを書くよりも、スプレッドシートで計算を実行する方が簡単だと感じています。これは、スプレッドシートのいくつかの特性によるものです。
「表計算ソフト」は、時間ではなく空間的な関係を主要な構成要素として用いて、一般的な計算タスクを実行するように設計されている。
スプレッドシートは、ノードがスプレッドシートのセル、エッジが数式で指定された他のセルへの参照である数学的なグラフとして考えると便利な場合が多い。これは、スプレッドシートの依存関係グラフと呼ばれることが多い。セル間の参照には、相対位置や絶対位置などの空間的な概念や、名前付きの場所を利用することで、スプレッドシートの数式を理解しやすく、管理しやすくすることができる。
スプレッドシートは通常、セルが変更に依存する場合に自動的にセルを更新しようとします。初期のスプレッドシートは、特定の順序でセルを評価するなどの単純な手法を使用していましたが、現代のスプレッドシートは依存関係グラフから最小限の再計算順序に従って計算を行います。後期のスプレッドシートには、特定のセルで特定の答えが得られるようにソース値を変更するなど、値を逆方向に伝播させる限定的な機能も含まれています。ただし、スプレッドシートのセルの数式は一般的に逆変換できないため、この手法の価値はやや限定的です。
逐次プログラミングモデルに共通する概念の多くは、表計算ソフトの世界にも類似のものがあります。例えば、インデックス付きループの逐次モデルは、通常、セルの表として表現され、同様の数式(通常は参照するセルが異なるだけ)が使用されます。
スプレッドシートは、スプレッドシート言語で容易に実現できる範囲を超えて拡張性を高めるためのツールとして、VBAのようなスクリプトプログラミング言語を利用するように進化してきた。
スプレッドシートは定量モデリングにおいて大きな進歩をもたらしたが、欠点もある。その欠点の一つに、英数字のセルアドレスが使いにくいという認識がある。[ 55 ]
スプレッドシートに関連するその他の問題には、次のものがあります。[ 63 ] [ 64 ]
デスクトップスプレッドシートアプリケーションには、これらの欠点のいくつかに対処する組み込みツールやサードパーティツールがありますが、これらの認知度と使用率は一般的に低いです。金融分野の多くの専門家は、スプレッドシートがどのように監査されているかを「知らない」です。サードパーティソリューションに投資しているのはわずか6%です。[ 73 ]
スプレッドシートリスクとは、関連する(通常は数値に基づく)意思決定を行う際に使用されるスプレッドシートアプリケーションから重大な誤りのある値を導き出すことに関連するリスクです。例としては、資産の評価、財務会計の決定、薬の投与量の計算、構造工学における耐荷重梁のサイズなどがあります。このリスクは、誤ったまたは不正なデータ値の入力、スプレッドシートのロジック内の間違い(または誤った変更)、または関連する更新の省略(たとえば、古い為替レート)から発生する可能性があります。単一のエラーで10 億米ドルを超えるものもあります。[ 74 ] [ 75 ]スプレッドシートリスクは主に個人の行動(または不作為)に関連しているため、オペレーショナルリスクのサブカテゴリとして定義されています。
それにもかかわらず、 ClusterSevenが行った調査[ 76 ]によると、年間売上高が5,000万ポンドを超える企業のCレベル幹部と上級管理職の約半数(48%)が、スプレッドシートの使用に関して、使用管理がまったくないか、手動プロセスが不適切に適用されていると回答した。[ 76 ] [ 77 ]
2013年、マサチューセッツ大学アマースト校の経済学大学院生トーマス・ハーンドンは、経済学者のカーメン・ラインハートとケネス・ロゴフが2010年の非常に影響力のある論文「債務の時代の成長」で使用したスプレッドシートに重大なコーディング上の欠陥があることを発見した。この論文は、2010年から2013年にかけての欧州の緊縮財政プログラムを推進する正当化として広く利用された。[ 78 ]
データや数式を入力して分析または表示するセルで構成されるインタラクティブなグリッドからなるソフトウェアインターフェース。
(コンピュータサイエンス)数字、数式、テキストを簡単に入力および操作できるコンピュータプログラム。特に財務計画や予算編成に使用される。
リリース 3.0 は、PC、Mac、メインフレーム間での容易な移植性を実現するために、C と呼ばれるコンピュータ言語で記述されています。
[...] これらの施設の支出は、部門の会計スタッフによって綿密に監査されています。支出のすべての項目を示すスプレッドシートが毎月作成され、監督官は支出額だけでなく、州内の同様の施設で同じ項目にいくらかかっているかを一目で把握することができます。
当社では、総勘定元帳にいわゆるスプレッドシートと呼ばれるものを使用しており、これは各工場名が特定の列に記載されている長いシートです。
財務分析言語の拡張機能であるTABOLデータベースマネージャ(TDM)も1982年8月に導入されました。
IBM PCの半数、つまり数十万台が1-2-3だけで動いているという説もある。数字は賢く、素早く、知識豊富で、無数のビジネス上の意思決定から愚かさを排除する。その速さがどれほど重要か、興味深い。1-2-3をトップに押し上げたのは、そのスピードなのだ。