MS-Excelの世界観1(基本操作)。作業所で受講した「ICTリテラシー講習会」の内容を参考に書きました。
Excelは表計算(スプレッドシート)ソフトウェア。表に数や文字列を入力し、総和や平均の計算や、ソート(並び替え)などが行なえる。メインフレームを導入してCOBOLを書かなくても、簡単に一般ユーザーがビジネスの業務計算を行うのに使えるほか、家計簿をつけたりする用途に使える。
計算のための関数などが豊富に用意されており、相対参照や絶対参照を使うことで簡単にさまざまな方法で数値を計算出来る。VBAを使うことで簡単なプログラミング用途にも使える。
後日注記:自分はかなりアホなことを言っている。COBOLはプログラミング言語であって、エクセルとの直接の比較対象ではない。比較すべきなのは、電卓やそろばんである。エクセルを使うことで、電卓やそろばんをわざわざ叩かなくても、簡単に計算が出来る。数式には関数も使えるほか、VBAでプログラミングもできる。
後日注記2:また、Excelの重要な長所として、「文書を自動で作成することができる」というのが言える。関数のオートフィルや条件付き書式などを上手く組み合わせることで、後述するようにシートをほとんど自動で生成し、書き換えることができる。こうした「自動による文書の作成」はMS-Officeを使う上で大きなメリットになる。
オートフィルは、順序が決まっている項目を、簡単に一つずつ増やしながらコピーできる機能。たとえば、「1」「2」「3」のような項目を「10」まで引き延ばしてコピーすることができる。
オートフィルは、「リスト」と呼ばれる機能を使うことで、事前に設定されている数値、日付、曜日のようなものだけではなく、自分で作ったリストを使ってオートフィルを作ることもできる。
エクセルの入力は、ほかにオートコンプリート(すでに設定済みのセルから文字を補完する機能)やオートコレクト(入力した文字をその場で別の文字に変換する機能)などもある。
また、数値のような単純な入力項目について、表示形式を設定することで、たとえば3桁ごとに「,」を表示するなどの設定を行ったり、%で表示したり、小数点以下の桁数を設定したりこともできる。
書式を設定した場合は、書式だけをコピーしたり、書式なしにコピーするなど、書式をコピーする方法も多様である。こうした場合に、元のデータは「2000」などのシンプルな数値のままで維持することで、簡単にセルの表示形式や書式だけを変えられる。これは数式の入力をする際にも効果を発揮し、数式だけをコピーしてオートフィルで連続的な数式を複数のセルに設定することもできる。
書式のコピーは、書式をコピーしたいセルを選択して、書式のコピーボタンをクリックし、その上で書式をペーストしたいセルをクリックする。書式のコピーボタンをダブルクリックすると、連続して複数のセルに書式をコピーできる(解除も書式のコピーボタンをクリックする)。
また、コピーと貼り付けはさまざまな形態での貼り付けを行うことができ、これを利用することでたとえば行と列を入れ替えてコピーするなどということもできる。
セルを参照するためには、列をABC...、行を123...などと入力し、A1のように記述する。
四則演算をする場合は、セルに
=A1+B1
などと打ち込む。
関数を使う場合は、セルに
=SUM(B1:D1)
などと打ち込む。
オートフィルを使うことで、相対的にセルの参照を変えて(相対参照)、数式をコピーすることが出来る。
オートフィルで参照先を変えないように絶対参照を行う時は、
$A$1
などと、セル番号の前に$マークを付ける。
数式は「数式」タブから挿入できる。
相対参照(A1など)で数式を記述した場合、オートフィルを使った時に自動的にセルの対象範囲が移動距離に応じて調整される。とても便利な機能で、SUMなどと組み合わせると絶大な威力を発揮するが、このオートフィルを行っても対象範囲を変えないようにするためには$を使って$A$1とする。列だけは変えたいとか、行だけは変えたい、といった場合は、A$1とか$A1とする(複合参照)。
数式を記述したセルにおいて、数式の内容を確認したい時は、セルを選択してF2キーを押す。また、自分でセル番号を入力しなくても、=を入力した時点で別のセルをクリックすれば、そのセルを選択できる。複数のセルの範囲を記述したい時は、
B1:D1
のように範囲を:で繋ぐ。相対参照と絶対参照と複合参照を切り替えたい時は、F4キーを押すことで簡単に$記号を付けられる。また、SUM(オートサム)のような良く使う関数は、リボンからボタン一般で選択して自動入力できる。
後日注記:オートフィルは相対参照や関数とともに使った時に真価を発揮する。関数の参照先を自動的に書きかえることができ、「ひとつのセルを変更したらあとは全部そこから計算する」といったことができる。
以下は「オートSUM」ボタンに登録されている主な関数。
関数 | 解説 |
---|---|
SUM | 合計値を求める |
AVERAGE | 平均値を求める |
COUNT | 数値の個数を求める |
MAX | 最大値を求める |
MIN | 最小値を求める |
これ以外にもたくさんの関数がある。
関数を使わなくても、+, -, *, /などで基本的な計算は可能である。
特に条件式を判断するIF, AND, NOT, ORなどの使い方を覚えておこう。IF関数は以下のように使う。
=IF(A1>=90,"合格","不合格")
ANDを使ったりIFをネストしたりすることで、IF文をもっと詳しく記述することができる。
OR関数は以下のように使う。
=OR(WEEKDAY(B4)=1,WEEKDAY(B4)=7)
詳しくは後述する「やってみよう」を参照のこと。
「挿入」タブの「グラフ」グループのさまざまなグラフ機能を使うことが出来る。
Excelのグラフ機能はとても賢くて、表を選択した上でさまざまなスタイルを選択することで、簡単にグラフを作ることができる。表示項目を追加したり削除することも簡単。テンプレートのような既に作られたスタイルがたくさんあり、たとえばグラフにもセルの記述内容を表示したりすることもできるし、棒グラフや折れ線グラフ、円グラフなどを簡単に選択できる。
グラフは画像と同じように移動や拡大・縮小が可能だが、Altキーを押しながら拡大・縮小させることで、セルの枠線にフィットした形で移動・拡大縮小させることができる。
印刷タイトルを使うことで、複数のページを印刷する時に、全てのページに付けるタイトル項目を付けることが出来る。
「ページ レイアウト」タブの「ページ設定」グループの「印刷タイトル」より。
また、ヘッダーとフッターを設定することで、ページ番号や現在の日付のようなものを全てのページに自動的に割り振ることができる。
ワークシートは、複数のワークシートをCtrlやShiftで同時に選択しながら、その状態でセルを編集することで、選択した全てのワークシートに同じ入力を適用することができる。
別のワークシートの内容を取ってきて値にしたい場合は、
シート1:シート3!B1
のようにすれば、シート1からシート3までの全てのB1の値を取ってくることができる。これをSUMを使って集計し、オートフィルによって相対参照でコピーすれば、簡単に各シートの合計を計算出来る。たとえば、シート「田中」「菊池」「丸」があってこれらのA4を集計したい場合は、
=SUM(田中:丸!A4)
とする。
各シートの追加や名前変更は、右クリックで行える。移動やコピーは少し複雑なダイアログボックスを使うか、あるいはCtrlキーを押しながらドラッグしてコピー出来る。
表を入力する時は、事前に表全体を選択しながら、Tabキーを使うことで、入力を確定した後に右のセルに移動することができる(Enterキーで確定した場合は下のセルに移動する)。事前に選択した表全体の選択範囲よりも右のセルに移動しようとした時は、次の行の一番左のセルに入力できる。
また、事前に表全体を選択しなくても、Tabキーでひとつひとつ右に移って行って、最後の一番右の列でEnterキーを押すと、次の行の一番左のセル(最初にTabキーで入力を始めたセルの下のセル)に移動できる。これが分かると、入力するのがとても楽である。
Excelのとても便利な機能に、データベース機能がある。Accessなどを用いることもあるが、Excelでもデータベースとして表計算ワークシートを利用することができる。大量のデータを分析する時になくてはならない大事な機能である。
データベースの基本は、フィールド(列)とレコード(行)。全てのデータを、フィールドとレコードで「関係表」の形で記述しなければならない。
まず、並べ替え機能。1つの要素を基準にするのであれば、昇順あるいは降順でボタン一発で並べ変えられる。注意点は、並べ替えた後で元に戻すための、プライマリーナンバーをどこかに振っておくことである。複数の要素を基準にする場合は、並べ替えダイアログボックスを利用する。1つ1つ、レベルを追加して、並べ替えのキーを選択していく。
次に、フィルター(抽出)機能。Excelのフィルター機能はとても賢い。セルを選択した状態で、フィルターをONにすると、カラムに▼ボタンが表示される。ここから、メニューとダイアログを使ってフィルターを設定する。特定の値を抽出するだけであれば、チェックリストにチェックするだけで選択できる。条件式(以上・未満とか、含むとか)であれば、日付、文字列、数値の各メニューを使って選択する。フィルターを削除する場合は、メニューやボタンからクリアを行う。ひとつのカラムではなく複数のカラムにフィルターをかけることができ、フィルターを設定したカラムには▼ではなくフィルターマークがつく。AND/ORで条件式を書くことも可能。
最後に、集計機能。Excelにはとても賢い集計機能があり、リボンのメニューから「小計」で行える。ただし、これを行う前に、それぞれの集計したい分類を並べ替え(ソート)しておく必要がある。小計のダイアログでは、基準となるセルを設定し、集計の方法に「合計」を選択し、「現在の小計をすべて置きかえる」と「集計行をデータの下に挿入する」を選択すれば、あら不思議という具合に、自動的に全ての計算結果を自動計算・自動挿入してくれる。アウトラインも作ってくれてとても便利である。アウトラインは、+/-でそれぞれの集計結果を開いたり閉じたりすることができる。また、数値を選択することで、レベルごとに要素を開閉できる。平均結果をこれに追加したい場合は、集計の方法に「平均」を選択するが、この時、合計の内容を削除したくない場合(合計と平均をどちらも挿入したい場合)は、「現在の小計をすべて置きかえる」のチェックを外す。
このように、エクセルにはとても便利な機能がたくさんある。Microsoftらしいと言うか、全ての操作をグラフィックで操作できるようにさまざまなやり方を駆使して考えているところは、Linuxユーザーとしても見習うべきところではないかと思う。
Excelでは、任意の位置にテキストを挿入したい時はテキストボックスを使います。
テキストボックスは、Ctrlキーを押しながらドラッグすることでコピーできます。この時、Shiftキーを押すことで水平・垂直に平行に移動できます。Illustratorのように「綺麗に整列させて位置を揃えたい」時にはこれが有用です。
また、Excelには高度な図形ツールが備わっており、Illustratorなどを使わなくても、図形ツールを使うことで簡単な図形編集が可能です。ExcelでLINEのスタンプを作っている人が居るほどです。(テレビで見ました。)
後日注記:Excelのテキストボックスはデザイナーから見ると未熟で、画面でそろっているように見えても印刷するとずれることがある。印刷プレビューも同様に使えない。ある程度割り切って使う必要がある。
Excelを使って、少し高度なことをやってみましょう。
今回は、月初めの日付(2019年11月なら、2019/11/1)を入力し、そこから31日分の日付と曜日を表示するシートを、関数や条件付き書式や表示形式を使って作ります。
土曜日は青文字で、日曜日は赤文字で表示するようにします。また、次の月の日付は白文字にして表示されないようにします。また、他の人がシートを見て分かるように、コメントをつけます。
まず、セルB3に「日付」、セルC3に「曜日」と入力します。
そして、セルB4に
2019/11/1
と入力します。このデータは、必ず「西暦/月/日」と入力します。他のセルからは、相対参照や絶対参照でこのセルの情報を参照します。そのため、このセルの内容を次の月に変えれば、全てのセルの情報が書き換わります。
原則、セルB4に月初めの日付を記述します。次の月になったら、このセルB4の内容を次の月の月初めの日付を入力します(2019/12/1など)。
次に、セルB5に
=B4+1
と入力します。確定すると、「2019/11/2」と表示されます。
次に、セルB5を選択した状態で、オートフィルを使ってセルB34までこのセルを引き延ばします。実際には、セルB5の右下の黒い四角を掴んで下にドラッグして引き延ばします。
これで、31日分の日付が表示できます。
次は、曜日のデータを、日付のデータを参照して間接的に入力します。まずセルC4に
=B4
と入力します。内容はセルB4と同じ「2019/11/1」になりますが、これは後で表示形式を使って曜日の表示に変更します。先ほどと同様に、セルC4をオートフィルでセルC34まで引き延ばします。
次に、日付のデータを、年/月/日ではなく日だけにします。セルB4からB34までを選択して、右クリックし、「セルの書式設定」を選択し、「表示形式」タブの「分類」から「ユーザー定義」を選択し、「種類」のテキストボックスに
d"日"
と入力します。dは日付の値を表し、""の中はそのまま挿入されます。これでOKを押します。
次に、曜日の表示形式を設定します。同様にセルC4からC34を選択し、右クリックからセルの書式設定を開き、先ほどと同様に表示形式のユーザー定義で、「種類」に
aaa
と入力します。ちょっと不思議ですが、aaaは曜日を表します。
これで、日付と曜日が31日分に入力されました。
次に、日曜日を赤文字で、土曜日を青文字で表示するようにします。セルB4からセルC34までを選択した状態で、リボンのホームタブにある「条件付き書式」をクリックし、メニューから「新しいルール」を選択します。「数式を使用して、書式設定するセルを決定」をクリックします。「次の数式を満たす場合に値を書式設定」のテキストボックスに、
=WEEKDAY(B4)=1
と入力します。WEEKDAY関数は曜日の値を出す関数で、1が日曜日、7が土曜日になります。また、「B4」は必ず相対参照にします。このルールが適用されるそれぞれのセルの位置に応じて、参照するセルをずらしたいからです。「=WEEKDAY(B4)=1」は、「曜日が日曜日の場合」を意味します。これを入力したら、今度は「書式」ボタンをクリックし、「フォント」の「色」を「赤」にしてOKを押し、書式ルールのダイアログのOKを押します。日曜日の文字だけが赤で表示されます。
ここで確認のために、セルB4からセルC34を選択した状態でリボンの条件付き書式から「ルールの管理」をクリックします。ルール一覧に先ほどのルールが表示されています。ここで、適用先が
=$B$4:$C$34
になっていることを確認します。このルールの適用範囲を絶対参照で$B$4から$C$34にしています。絶対参照にする理由は、適応する領域はセルの位置によって変わらないから(日付と曜日の全体を対象とするから)です。これがもし曜日を含めない場合や、表示形式で
d"日 ("aaa")"
などとして「11日 (日)」のように表示させたい時は、曜日のカラムが必要ないため、適用先を
=$B$4:$B$34
などに変更します。また、「ルールの編集」を押すと先ほど開いたダイアログが開いて、ルールを編集できます。ここではB4がセルによって変えたいために相対参照になっていることを確認します。
次に、土曜日の文字を青文字で表示します。今度は「ルールの管理」から、「新規ルール」を押します(先ほどのように「新しいルール」からでも同じです)。「数式を使用して...」をクリックし、「次の数式を満たす場合に...」に
=WEEKDAY(B4)=7
と入力します。書式から文字を青色にします。
ちなみに、土曜日も日曜日も赤文字にする場合は、
=OR(WEEKDAY(B4)=1,WEEKDAY(B4)=7)
のようにOR関数を使うこともできます。
最後に、次の月の日付である2019/12/1が「1日」と表示されているため、これを白文字にして見えなくします。セルB4からC34を選択した状態で、ルールを追加します。今度は、ルールに
=MONTH(B4)<>MONTH($B$4)
と入力し、書式に白文字を設定します。MONTH関数は、日付の月情報だけを取り出す関数です。B4は相対参照で、そのセル自身の値になります。また、$B$4は絶対参照で、必ずB4の値を参照します。そのため、「そのセルの月情報と、B4の月情報とを比較して、値が等しくない時は文字色を白にする」ということができます。
ここで、このシートには1日から31日までの表示はありますが、どの月の情報なのかが分かりません。そのため、セルB2に月を表示します。セルB2を選択し、
=B4
と入力します。「1日」と表示されるので、セルの書式設定から表示形式のユーザー設定を選択し、
m"月"
と入力します。mは月を表しています。これで、「11月」と表示されました。
最後に、他の誰かがこのシートを見た時に分かるように、コメントを記載します。セルB4を選択して、右クリックメニューから「コメントの挿入」を選択し、「2019/11/1のように記述してください。このセルの内容を変えると全てのデータが変わります。」と入力します。
これで完成です。確認のため、セルB4にさまざまな日付を入力してみてください。全てのデータがこのセルのデータから変わります。
僕は、小学生の頃にゲームの攻略本に載っていたキャラクターのスコア(能力値)を全部エクセルに入力したりしていた。それは、「楽しいから」である。
エクセルでは、入力した項目に並び替え(ソート)をかけたり、一定以上の数値に対して色や書式(背景色や文字色など)を自動で設定することができる。
昔の僕は、モンスターファームというテレビゲームが好きで、これの攻略本からスコアを全部入力し、またペンタブレットを使って、Windows付属のペイントでキャラクターをなぞってビットマップ画像にしたりしていた。それから、ワードを使って小説を書いたりしていた。本当にパソコン少年だった。僕は、その時代のMS-Office 2000が好きである。昔の、リボンではなかったインターフェースでも、きちんとしたワードやエクセルの機能はあった。また、母親の仕事を手伝って、ワードやエクセルでプリントを作る手伝いをしたりしていた。
Excel VBAを参照のこと。
書籍