Excel

基本的には Microsoft の製品は使いたくない(Windows2000だけは気に入って愛用している)のだが、仕事上 Word や Excel は避けて通れない。
ここでは、私が Excel で使った技(と言うほどのものでは全然ない)を紹介する。もし、もっと簡単にやる方法があったら教えて欲しい。

セル(範囲)を指定する

A1形式とR1C1形式
セルの位置を指定するには、列と行を指定する。Excelのシートの画面では、列がA, B, C などのアルファベット。行が1,2,3の数字で表されている。
セルの位置を指定するには、この列のアルファベットと行の数字を続けて書けばよい。たとえば、5列目の4行目なら、「E4」となる。(これをA1形式と呼ぶ)
同じことを、「R4C5」と書くことができ、こちらをR1C1形式と呼ぶ。(R1C1形式を使うには、[ツール]->[オプション]->[全般]の[R1C1参照形式を使用する]のチェックをonにする必要がある) 絶対参照と相対参照
A1形式では、たとえば B1 のセルに、=A1*10 と書いてあるときに、このセルをB2にコピーすると、B2の中身は =A2*10 となる。これは、A1形式のデフォルトが相対参照だから。
常に同じ場所を指定したい場合は、$を前に付ける。同じように、C1のセルに =A$1*10 と書いてあるときに、C1の内容をC2にコピーしても、C2の内容は =A$1*10 のままである(絶対参照)。
ただし、C1の内容をD1にコピーすると、=B$1*10 となる。これは、行を指定する1には$を付けてあるが、列を指定するAには$を付けていないため。このように、行と列のそれぞれを絶対参照にするか相対参照にするか選択できる。
これに対して、R1C1形式は、デフォルトで絶対参照である。そして、R1C1形式の相対参照は、数字の部分を[]で囲む。ただし、[]の中には、対象のセルからの相対位置を書く。
たとえば、E4のセルから、E3のセルを指定するには、=R[0]C[-1] となる。

セル範囲の指定は、セルの指定を:または,で並べる。:は、:の左のセルから:の右のセルまでのすべてのセル、,は、それぞれのセルを個別に指定したことになる。
たとえば、A1:A5はA1,A2,A3,A4,A5と同じ。

数える

仕事で、お客さんが作成したテスト仕様書を使ってテストを行うことになった。毎日テストを実施し、その結果を報告する。最初は、手で何件のテストをこなしたか数えていたのだが、さすがに馬鹿らしいので Excel に数えさせることにした。
元のシート(デフォルメしてある)
ABCDE
1項番試験内容確認内容確認日判定
21こ〜ゆ〜試験をやってこれを確認して11/28OK
3  あれも確認して11/28NG
42あ〜ゆ〜試験をやってそれも確認して11/29N/A
5  どれも確認して11/29N/A
特定の日付のOK, NG, N/Aの数
まず、以下のように列を追加して、OK, NG, N/Aを数値化した。
ABCDEFGH
1項番試験内容確認内容確認日判定OKNGN/A
21こ〜ゆ〜試験をやってこれを確認して11/28OK100
3  あれも確認して11/28NG010
42あ〜ゆ〜試験をやってそれも確認して11/29N/A001
5  どれも確認して11/29N/A001
Fの列には、F2: =IF($E2="OK",1,0)のような式を入力する。G, Hもそれぞれ"OK"を"NG", "N/A"に変えて同じ。
続いて、=SUMIF($D$2:$D$65535, "11/28", $F$2:$F$65535)のようなセルを作ると、11/28日のOKの数を数えることができる。
確認項目の数
単純に、I列に1を入れた。
ABCDEFGHI
1項番試験内容確認内容確認日判定OKNGN/A確認項目数
21こ〜ゆ〜試験をやってこれを確認して11/28OK1001
3  あれも確認して11/28NG0101
42あ〜ゆ〜試験をやってそれも確認して11/29N/A0011
5  どれも確認して11/29N/A0011
そして、=SUM($I$2:$I$65535)のセルを確認項目数とした。
項番の数
非常に馬鹿らしくて申し訳ないのだが、項番の数。
最初は、=MAX($A$2:$A$65535)で計算していたのだが、項番のフィールドに重複があることがわかった。すでに仕様書は印刷済みなので、番号が変わるのは望ましくない。
そこで、J2: =IF($A2<>"", 1, 0)のようにして、
ABCDEFGHIJ
1項番試験内容確認内容確認日判定OKNGN/A確認項目数項目数
21こ〜ゆ〜試験をやってこれを確認して11/28OK10011
3  あれも確認して11/28NG01010
42あ〜ゆ〜試験をやってそれも確認して11/29N/A00111
5  どれも確認して11/29N/A00110
=SUM($J$2:$J$65535)のセルを項目数とした。(これは、後で項番が正しく昇順になるように採番しなおしたことを報告しておく)

false@wizard-limit.net