PDFファイル

CrosMacro 取り扱い説明書
はじめに
このマクロプログラムは Excel でアンケートデータなどから,連続したクロス表を作成することを目
的としています。以前,これらは統計解析ソフト SAS(Sas Institute Inc.)を使いながら作成していま
したが,いろいろな事情で,SAS などを使わなくてもできるようにすることを目指したものです。
最終的には,次のような連続したクロス表を作成することを目的としています。
なお,2004 年 9 月に提供を開始したものと,今回のものは,基本的な発想などは同じですが,全面
改訂版です。
表1.Excel 集計表例(1999 年復興公営住宅調査集計)
問1.健康状態
1.健康
全 体
地区別
ひよどり台
HAT灘の浜
性 別
男
女
年齢別
50 歳未満
50-59 歳
60-64 歳
65-69 歳
70-79 歳
80 歳以上
2.少し悪い
21.3
24.1
13.6
24.7
3.寝てはい 4.寝たり起
5.寝たきり
ない
きたり
無回答
ケース数
46.8
6.7
0.7
0.4
282
19.3
26.3
58.0
41.8
8.0
6.2
1.1
0.5
0.0
0.5
88
194
22.4
20.3
25.9
22.5
44.8
48.6
4.9
8.7
1.4
0.0
0.7
0.0
143
138
46.7
40.0
29.0
20.3
14.8
19.1
40.0
40.0
29.0
20.3
24.3
14.9
13.3
20.0
35.5
47.5
54.8
53.2
0.0
0.0
3.2
10.2
5.2
12.8
0.0
0.0
0.0
1.7
0.9
0.0
0.0
0.0
3.2
0.0
0.0
0.0
15
15
31
59
115
47
問2.通院,往診を受けているか
1.かかって 2.通院して
いない
いる
全 体
地区別
ひよどり台
HAT灘の浜
性 別
男
女
年齢別
50 歳未満
50-59 歳
60-64 歳
65-69 歳
70-79 歳
80 歳以上
3.往診
4.その他
ケース数
21.6
69.9
4.3
4.3
282
15.9
24.2
78.4
66.0
3.4
4.6
2.3
5.2
88
194
27.3
15.9
67.1
72.5
0.7
8.0
4.9
3.6
143
138
60.0
33.3
0.0
6.7
15
40.0
46.7
0.0
13.3
15
29.0
61.3
0.0
9.7
31
23.7
66.1
5.1
5.1
59
11.3
80.9
5.2
2.6
115
21.3
72.3
6.4
0.0
47
Ref: http://www.bukkyo-u.ac.jp/mmc01/naito/seminar/ankate/index.html
1
1.使い方の基本
一般的な使用法を,提供しているサンプルデータ(”Sample.xls”)に則して説明すると,
(1) アンケートのデータを Excel のワークシート上に保存し,そのファイルをオープンしておく。
(2) そのデータの情報や,出力したいクロス表の項目(設問・変数)などを指定した Excel シート(以
下コントロール・ファイルまたはコントロール・シートと呼ぶ)を作成し,そのシートを含む Excel フ
ァイルをオープンしておく。ファイル名,シート名は自由ですが,使用する情報シートの中の,何行目,
何列目に何を指定するかが決まっていますので,提供している"SampleCnt.xls"の"Cnt"シートを修正し
て使用することをすすめます。以下の説明ではこのファイル・シート名であるものとしています。(こ
のシートの茶色の罫線で囲まれた部分が,この処理をコントロールするための情報です)
(3) ”CrosMacro.xls”をオープンし,その中の”Conf0”というシートに(2)のブック名・シート名書き入
れる。(Conf0 の中のブック・シート名書入れ欄が空白なら,(4)の実行中にも指定できる。)
(4) Excel の「ツール(T)」→「マクロ(M)」→「マクロ(M)」をクリックし,下のようなメッセージボ
ックスに対して”a クロス表作成”を選んで実行する(Excel で CrosMacro.xls をアクティブウィンドウ
にしている場合は,”CrosMacro.xls!”の接頭語は省略されている)。
(5) 処理が正常に終わると,臨時に作成された”temp_piv”というシートを削除するためのメッセージ
ボックスが表れます。これについては通常「削除」を選びますが,キャンセルでも構いません。
(6) これで次のようなクロス表が(1)のデータファイルの中に,”Cros_R”という新たなシート名をつけ
て書き込まれますが。ここで1・2 列に入っている数値は,このマクロ・プログラムで利用するための
インデックス・コードです。以下の操作では,基本的にはこのインデックス・コードを読み込みながら,
2
いろいろな「変形」を行っています。この 2 列はマクロ・プログラムによっては最後まで削除されませ
ん。マクロ処理が終わったら,自分で削除操作をして下さい。
表2
1
2
0
3
11
21
40
31
3
12
22
40
40
32
3
12
22
40
40
32
3
12
22
40
40
40
40
40
40
33
0
3
11
21
40
31
3
12
22
40
「a クロス表作成」で作られる表
4
39
5
1
V002
V163
1
1
11
11
2
21
21
3
57
57
4
9
9
5
2
2
総計
100
100
1
2
1
4
7
11
2
10
11
21
3
30
27
57
4
5
4
9
5
1
1
2
総計
50
50
100
1
2
1
4
7
11
2
12
9
21
3
28
29
57
4
2
7
9
5
2
0
2
総計
48
52
100
1
2
0
0
1
7
1
11
2
1
0
0
3
12
5
21
3
0
1
5
11
28
12
57
4
0
0
1
3
2
3
9
5
0
0
1
1
0
0
2
総計
1
2
3
4
5
6
1
1
17
17
2
73
73
3
6
6
4
4
4
総計
100
100
1
7
2
39
3
2
4
2
総計
50
総計
5
2
V002
V160
総計
5
2
V002
V161
総計
5
6
V002
V162
総計
4
1
V003
V163
総計
4
2
V003
V160
1
3
1
7
19
49
21
100
(7) これで連続したクロス表はできましたが,アンケートデータの欠損値・欠損ケースなども表に反
映されています。サブクエスチョンなどでは,「非該当」などの欠損ケースは集計から削除する必要が
あるので,コントロール・ファイルのシート(紺色の枠の部分)に必要な情報を入れ(クロス表のシー
トがアクティブになっていれば,サンプルでは書き込みの必要はない),マクロの”b 欠損値行列削除”を
追加実行します。これは集計に含めたくない列や行のデータを削除するものです。総計の数からその値
を減じるかどうかも指定できます。サンプルデータでは「問 2」「問 14」に欠損値が含まれています。
このクロス表は回答の度数を表したものです。通常は%値を表示したものが必要となりますので次の
処理に移ります。
3
(8) 度数(ケース数)から,%値への変更はマクロの”c パーセント
表への変換”を実行します(クロス表のシートがアクティブになって
いれば,サンプルでは書き込みの必要はないが,そうでない場合コン
トロール・ファイルの紫色の枠の中にシート名などを書き込みま
す)。%値の表記方法もこの枠の中で指定できます。%表記抜きで
「25.1」などと表記したければ,書式は「0.0」,乗数は「100」としま
す。
「25.1%」と表記したければ,書式は「0.0%」,乗数は「1」です。
前者の場合セルのなかのあたいは 25.1 で,後者では 0.251 となりま
す。
なお,(7)もそうですが,この(8)の処理も既存シートを書き換えます。
書き換え前のシートも保存しておきたい場合,
「編集(E)」→「シートの移
動またはコピー(M)」の右図で,
「コピーを作成する」にチェックして「OK」
を選びます。
以上で連続した%値のクロス表が作成されましたが,1 頁の出力例と比較すると,余分な行がずいぶ
ん含まれています。
(9) これを整理するには,コントロール・ファイルの茶色の枠に必要な情報を書き込んで,マクロ”d
不要行の削除”を追加実行します。
以上で,連続した%値のクロス表が完成です。(i)”a クロス表の作成”→(ii)”b 欠損値行列削除”→(iii)”c
パーセント表への変換”→(iv)”d 不要行の削除”と 4 回マクロ・プログラムを実行することになります。
プログラムがどのように実行され,どのような出力がもたらされるのか,ダウンロード後,変更を加え
ていない”CrosMacro.xls”と”Sample.xls”,"SampleCnt.xls" をオープンし,兎に角ためしてみることを
推奨します(なお,(ii)以降の操作では,(i)で作成された”Sample.xls”の”Cros_R”シートをアクティブに
して実行のこと)。この4つの操作と「e ラベル付け」を,連続して実行する”t クロス表作成一括実行”
というマクロ・プログラムも提供しています(この場合でも(5)のメッセージには答える必要があります。
また処理が進む度に処理を進めるかどうかがたずねられます)。
”d 不要行の削除”までで作られたクロス表では,1 頁の出力例にあるような選択肢ラベルの表示はさ
れていません。
(10) それを実行するのが ”e ラベル付け” マクロです。サンプルデータでこのマクロを実行すると,
ほぼ 1 頁のような出力が得られますが,これを実現するためには,変数(設問項目)ラベルと,変数値
(選択肢)ラベルが”Sample.xls”の”Label”シートの 2 行 4 列以降にあるように書き込まれているものが
必要です。また,そのラベルシートを含んだファイル名,シート名などはコントロール・ファイルの青
色の枠のところに書き込みます。なお,ラベルシートの何行・何列目からをラベルデータとするかの指
定できます。
(11) "f 書式の設定"は,作成されたクロス表の各部分の書式を設定します。数値の表示形式以外の書式
が指定できます。ブルーグレーの枠の中に,それぞれについてのフォント,ポイント,列幅などを指定
します。
(12) なお,実数で回答を求めた項目について,平均値を求めたい時は,コントロール・ファイルの緑
4
色の枠に必要な情報を書き込みマクロ”m 平均値表の作成”を実行します。”Mean_P”というシートが作
られ,そこに平均値の表が作成されます。指定された平均値を計算するデータのセルに数値以外の値が
入っていると,それはケースとして除外されて計算されます。なお,平均値集計に対して,”c パーセン
ト表への変換” を実行してはいけません。
2.データを入力する
2-0.変数・変数値・属性
以下の文中に変数・変数値・属性(または種類)などの言葉をよく使います。アンケートについて言
うと,問1,問2などの設問が「変数」,それらについて入力された回答が「変数値」,その変数値の性
質が「属性」ということです。例えばあるアンケートデータが次のように Excel のセルに入っていると
しますと,A~E 列が変数の列,3行目以後の数字がそれぞれの変数(列)に対する変数値(ケースの
回答)です。この場合性別は,1は男,2 は女ということを表す
A
のでカテゴリー化された変数値であるという属性を持ち,年齢は
実年齢が入っているので実数という属性を持つということにな
ります。なお,
「世帯の収入源」の設問は,3 つまでの回答(多重
B
1
C
D
E
世帯の主な収入源
2
性別
年齢
その1 その 2 その 3
3
2
25
1
3
回答,複数回答,Multi Response,Multi Answer)を求めたも
4
1
32
1
3
のなので,1 つ目~3 つ目までの3変数・3列で処理しています。
5
2
38
9
7
(これについては後で詳述します)
2-1.入力するデータの種類
アンケート票のデータとして入力する変数と変数値の属性(種類)は,一般に次のようなものがある。
(1)選択肢として指定された数値や文字番号
あなたの性別は?
→
1.男
2.女
などの設問と選択肢に対し,男は数値「1」を,女は数値「2」を入力する。アンケート
のほとんどはこうした数値番号を入力することが多い。選択肢の番号に文字(a.b.c
や
イ,ロ,ハ など)を使用することもあり,そうした文字を入力してもよいが,その後のいろ
いろな処理を考えると,数値に置き換えることを推奨する。
(2)実数値:収入や支出などを実額や実数で回答を求めるもの。サンプルデータでは「F4」の「年
齢」の設問がそれにあたる
(3)文字列:サンプルデータの元となっているアンケート例では,問 22 で,被災した住所を市区
町村名で回答を求めている。
この例の場合,それを最終的には地域コードなどの数値に置き換えることができれば,
集計上都合よいが,集計の仕方や目的によっては,文字列データとして扱う場合もある。
データ(変数値)の属性は以上の通りであるが,データ項目(設問・変数)の性質としては更に次の
ように分けられる。
(4)サブ・クエスチョン(Sub Question)
特定の対象者にのみ,回答を求めるもので,下の例では問 2-1 は,通院・往診を受けて
5
いる対象者にのみ回答を求めている。
(5)多重(複数)回答
選択肢などに対して1つだけの回答を求めるのではなく,
「3つまで」とか,「いくつで
も」というように回答を求めているもの。
2-2.設問の種類別に設定する変数の数(入力列数)と入力するデータ
上記(1)~(5)のデータを入力するフォーマットのレイアウトは次のように行う。
(1)選択肢番号を入れるもの
「多重回答」でなければ,一般に1設問の回答を1列に対応させ,その列のセルに入れ
る値は選択肢番号である。
(2)実数値
「多重回答」でなければ,一般に1設問を1列に対応させ,その列のセルには実数値を
そのまま入力する。8頁の図で(R)を書き入れているものがそれにあたる。
(3)文字列を入れるもの
「多重回答」でなければ,一般に1設問を1列に対応させ,その列のセルに入れる値は
書き込まれた文字列である。下図で(C)を書き入れているものが それにあたる。なお,
文字列は Excel では 256 バイトを超えてもよいが,他のアプリケーションで操作する時,
超過分は無視されることがある。文字列の中に半角の空白,半角のカンマ,タブなどは
入れない方が良い。Excel のブック・シートとしてだけ操作するなら,入れてもたいし
て問題は起きないが,CSV やテキスト形式などで保存するときに不都合が起きる場合も
ある。
(4)サブ・クエスチョン
「多重回答」でなければ1設問を1列に対応させることになる。8頁の図で(S)を書き入
れているものがそれにあたる。データ(変数値)の性質により(1)~(3)に対応する値をそ
の列のセルに入力する。
(5)多重回答
1設問に対し複数の列を設定しデータ(変数値)を入力することになる。8頁の図で(M)
を書き入れているものがそれにあたる。選択肢を選ぶ方式の設問では,入力形式として
2つの方法が考えられる。
例えば「7つの選択肢から 3 つまでの複数回答」を求めた設問については,
「第 1 の選
択肢を選んだ・選ばなかった」~「第 7 の選択肢を選んだ・選ばなかった」として扱う
方法がある。無回答も1つの選択肢と考えると,8つの選択肢それぞれを1変数とみな
す方式であり,①「YN(Yes No)型」と呼ぶことにする。この場合,選ばれた選択肢
(0 と
に対応する変数のセルには「1」を,選ばれなかった選択肢には「0」を入力する。
1 以外の数値や文字を使用して Yes と No を区別しても良いが,集計上は絶対にこの方
がよく,また,このマクロ・プログラムでは 0 か1であることを前提にしている)
次に3つまでなら3変数で処理するという方式であり,②「MA(Multi Answer)型」
と呼ぶこととする。選ばれた選択肢の番号を3変数に対応するセルに入力する。
6
2-3.データ入力時の注意事項(特に欠損値・無回答の処理)
データ入力セルには,それぞれの設問に対する回答された文字(列),数値などを入力するわけであ
るが,データがない時のことを考えなければならない。SAS など統計解析ソフトでは,そのようなケー
スを「欠損値」として扱い,特に指定しなければ集計から除外してくれる機能がある。しかし,この「欠
損値」という指定は,どんな場合にも使って構わないというものではない。アンケート集計では,その
設問の回答者に該当しないから答えていないという「非該当」と,該当者だがその設問に答えなかった
「無回答」は,集計する時には峻別しなければならない。
そのため,「非該当」と「無回答」は,異なった値をデータ入力セルに入れる必要がある。これにつ
いては,各変数(設問)それぞれに独自な値ではなく,集計データ全体についてできるだけ統一した値
を非該当・無回答に設定するのが便利である。一般的に行われるのは,
「非該当」は SAS などで標準欠損値データとして扱われる「.」(半角ピリオド)を入れる,
「無回答」は,「99」や「999」「9999」などの選択肢にない番号を入れること,
である。このマクロ・プログラムでは欠損値処理のプログラムの中に,
「集計からケースとして除外する
変数値(通常は非該当)」,「ケースとしては除外しないが集計では無視する変数値」をあわせて3つま
で指定できるようにしている。
前節の(1)~(5)について,欠損値・非該当は次のように入力することをすすめる。
(1)選択肢番号を入れるもの
「多重回答」以外は,非該当は「.」
(半角ピリオド),無回答は選択肢にない値,例えば
「99」などを入れる。
(2)実数を入力するもの
実数の回答データについては,平均値・標準偏差などの統計値を計算するので,無回答
は集計に加えない。従って無回答も非該当と区別する必要はないので,すべて一括して
「非該当」扱いとし「.」
(半角ピリオド)をいれる。
なお,実数からカテゴリー化された変数を作る,例えば実年齢の回答を求めてそれを入
力しているが,20~24 歳,25~29 歳などの年齢階層に分けても集計したという場合,
そのカテゴリー化された変数では無回答・非該当の区別が必要になる。その場合は(1)
に従う。
(3)文字列を入れるもの
指定された文字列だけが入力されている場合は,(1)と同じ扱いとなる。自由な文字列記
入の場合も,集計の必要があるなら,(1)と同じであるが,無回答,非該当に対応する値
が,それ以外に全く使われていないことを確認すること。
(4)サブ・クエスチョン
一般に必ず非該当のケースが想定されるものである。(1)と同じ扱いである。
(5)多重回答
「YN 型」の入力と,
「MA 型」の入力で,無回答と非該当値の設定がことなる。7つ
の選択肢について3つまでの回答をもとめた設問に,(a)「1,3,5」を回答,(b)「1,7」
を回答,(c)無回答,(d)非該当,の4ケースの値は次のように入力する。
7
YN 型多重回答
MA 型多重回答
問の 1 問の 2 問の 3 問の 4 問の 5 問の 6 問の 7 問の 8
(a)
1
0
1
0
1
0
0
問の 1 問の 2 問の 3
0
1
3
5
(b)
1
0
0
0
0
0
1
0
1
7
999
(c)
0
0
0
0
0
0
0
1
99
999
999
(d)
.
.
.
.
.
.
.
.
.
999
999
YN 型では,無回答については,この場合は第8番目の「回答しない」という選択肢を
選んだと考えている。非該当は集計に当たってケースとして除外することを念頭に,全
てについて「.」(半角ピリオド)を入れる。
MA 型の場合は,少し入力に工夫がいる。①本来の選択肢を表す値(ここでは 1~7)
と,②無回答を表す値(ここでは 99),③非該当を表す値(ここでは「.」),④基本的に
集計に加えない値(ここでは 999)に区別して入力します。なお,②と③はひとつの多
重回答(複数回答)設問に対して,1 ケースについて1セルだけに設定し,それ以外は
④の値(ここでは 999)を入力します。
2-4.入力データのレイアウト表を作る
データをどのように入力するのか,入力フォーマットやレイアウト表を作ると後々都合がよい。サン
プル・データは,最初のデータの入力作業ではこの形式どおりではないが,最終的に集計されるシート
は図のようになり,回答者のデータは 5 行目以降に入力している。
図
ID
入力データのレイアウト例
問2-1(S.MY)
問6(MY)
問9(MA)
問1
問2
問3(R)
問4
問5
問7
問8
健康状態
通院程度1.近く2.以前の
3.震災前
4.その他
5.無回答 医療費 保健種類負担感 1.自分2.配偶者 3.親 4.兄弟 5.子供6.その他7.いない
8.無回答
介護申請保険金 問9-1 問9-2 問9-3 1.厚生
V001 V002 V003 V004 V005 V006 V007 V008
1
3
2
0
1
1
0
0
V009
0
V010 V011 V012 V013 V014 V015 V016 V017 V018 V019 V020 V021 V022 V023 V024 V025
7
8 999
0
5
4
0
0
0
0
0
0
1
0
4
1
問10(MY)
問11
問12(MY)
世帯収入1.主食 2.副食 3.飲料 4.酒 5.外食 6.家具 7.衣料 8.水道 9.電気 10.ガス11.医療12.交通13.通信14.教育15.教養16.交際17.借金
2.共済 3.国民 4.恩給 5.遺族6.その他7.ない8.無回答
V026 V027 V028 V029 V030 V031 V032 V033 V034 V035 V036 V037 V038 V039 V040 V041 V042 V043 V044 V045 V046 V047 V048 V049 V050
0
1
0
0
0
0
0
2
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
問13(MY)
問12(MY)
問14 問14-1(MY)
19.ない0.無回答1.主食 2.副食 3.飲料 4.酒 5.外食 6.家具 7.衣料 8.水道 9.電気 10.ガス11.医療12.交通13.通信14.教育15.教養16.交際7.その他18.ない9.無回答支援金借金返済
2.入居費
8.その他
V051 V052 V053 V054 V055 V056 V057 V058 V059 V060 V061 V062 V063 V064 V065 V066 V067 V068 V069 V070 V071 V072 V073 V074 V075
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
問17
問18(MY)
問19
問14-1(MY)
問15 問16
3.生活費4.まだ 5.貯金 わからぬ
7.その他
8.無回答
食事回数
飲酒程度A.程度 B.場所 1.仕事 2.家事 3.病院4.語らい5.世話 6.テレビスポーツ8.新聞 9.趣味 .社会活1.その他
2.してな3.無回答
A.団地内
B.団地外
V076 V077 V078 V079 V080 V081 V082 V083 V084 V085 V086 V087 V088 V089 V090 V091 V092 V093 V094 V095 V096 V097 V098 V099 V100
0
1
0
0
0
0
2.5
5
3
1
0
1
1
0
0
0
0
0
0
0
0
0
0
1
3
問20(MY)
問24
問25
問21 問21-1 問21-2 問22(C)
問23
仮設友人
4.震災前会社友人
他の友人
7.市役所8.医師 宗教関係
.政党議1.その他2.いない
3.無回答
仕事有無
仕事種類
無職理由 区
町 被災住宅
入居経験
団地名(C 年
月
1.家族 団地友人
問26 問27
希望地緊急通
V101 V102 V103 V104 V105 V106 V107 V108 V109 V110 V111 V112 V113 V114 V115 V116 V117 V118 V119 V120 V121 V122 V123 V124 V125
0
0
0
1
0
0
0
0
0
0
0
0
0
99
99
99
99
99
4
99
99
99
99
2
1
問28
問27
問29 問30 問31 問32
5.郵便局文化施設
7.飲食店8.坂道9.交通量10.騒音11.花壇12.ペット3.集会所
4.その他15.ない6.無回答
近隣関係
名前一致
さびしい 来客
使い方 B.風呂 使い方 1.公園 2.交通 3.医療4.買い物
問34
LSA
問35
生保
V126 V127 V128 V129 V130 V131 V132 V133 V134 V135 V136 V137 V138 V139 V140 V141 V142 V143 V144 V145 V146 V147 V148 V149 V150
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
4
9
4
1
3
2
8
F1
年齢(R) 性別
医療
F2
F3
F4
F5
世帯 同居数 フロア 勤労数 費
年齢
階層
食事
回数
基準
地区
基準
性別
基準
年齢
基準
ダミー
総数
V151 V152 V153 V154 V155 V156 V157 V158 V159 V160 V161 V162 V163 V164
73
2
99
99
.
99
1
5
2
1
2
5
1
1
(1) 3行目が空白であるが,特に意味はない。最初の2行は集計には全く使わないので4行目以
降との区別をわかりやすくするために空白を入れている。
(2) 4行目に添え字 V で始まる連番の値が入っているが,この行はデータの先頭行で,ここに入
力されているセルの情報が変数名としてピボット・テーブルではとらえられる。2 行目に入って
いるようなものをこの変数名として使用してもかまわないが,
「8.無回答」が何回か現れている,
「1.主食」
「2.副食」などが重複して使われているので,ピボット・テーブルの先頭行に 2 行目は
そのままでは使えない。こんな時「連番」を利用すると,絶対に情報が重複することがないので
便利である。連番の最初に「1」や「001」を使えば,その変数が最初から何番目の変数かもよ
くわかる。
(3) 1 列目の ID という設問は,調査票にはないが,回収調査票にはナンバリングをしておき,そ
の数値を最初に入れている。これは,後でデータの入力ミスなどを点検する時などに必要となる
付加情報である。
(4) 縦の赤い線は,調査票の頁の区切りを表す。こんな線を入れるだけで,結構入力ミスが防げ
る。
(5) ライトブルーや黄色のセルは,多重回答を表す。データ入力部も色づけしておくと,上記と
同様,カーソル移動の失敗による入力ミスが防げる。
(6) 多重回答の設問に対しては,YN 型の場合,選択肢数+1のセルをとっているが,その選択
肢の内容を表す言葉を3行目に入れている。後で結構分かりやすくなる。
(7) V157~V158 の変数は V009 の問 3.医療費,V151 の F1.年齢,V082 の問 15.食事回数の実
数をカテゴライズして作った変数(食事回数は 2.5 回などの回答があったため,V082 では実数
扱いとした)
(8) V161 と V162 は F1.性別,V158 年齢階層のコピー。これは連続クロス表の作成のとき,性
別などが基準変数にも分析変数にも使用されることがあるので二重化している。
(9) V163 の基準総数と V164 のダミーは,全てのケースについて数値「1」を入れている。基
準総数は,1 頁のような出力をする時に「全体」の値を冒頭に出力するときに,この変数の変数
値「1」で表すために入力されているものである。「ダミー」は各クロス表のケース数を計算す
る時に使用するために入力されている。共に絶対に必要とするものではないが,あれば都合がよ
い。
面倒なようだが,この列にはどんなデータが入るか,ワークシートにはっきりと書き込んで置くのが,
後々非常に役立つことになる。
2-5.データ入力上の注意点
このプログラムは Excel の「ピボットテーブル」というものを利用しますので,入力データは,数値,
文字なんでも構いません。但し,何も入っていない空白と半角・全角の空白文字が入ったセルはデータ
9
として区別されることには注意して下さい。
また,「ピボットテーブル」は Excel のシートの矩形範囲(指定された開始行・列番号と,終了行・
列番号の間の範囲)を対象に集計するものですが,その先頭行の各セルには,重複することのないデー
タが入っている必要があります。この先頭行の各セルに入っている値が「変数名」ということになりま
す。前頁のレイアウト表の3行目のようなものを,この先頭行として利用しても構いませんが,この例
では V034 と V054 の列に「1.主食」という全く同じ値が入っているので,このままではピボット・テ
ーブルの 1 行目には使えません。どちらかに何らかの変更をしなければなりません。手っ取り早い方法
は,連続した番号を振るということですが,私はデータと区別するため,先頭に変数(Variables)の1
文字をつけて V001~V163 のようにしています。
3.このマクロ・プログラムの働き
このマクロ・プログラムは Excel の「データ(D)」→「ピボットテーブルとピボットグラフレポート(P)」
を利用してクロス表を作成します。従ってこのマクロ・プログラム利用者は,この「ピボットテーブル」
の利用経験があるとプログラムの動きがよく分かると思います。ピボットテーブルは通常複数の変数間
の値にもとづいて,それらの個数,合計,平均値,最大・最小値などのテーブル(表)を作ってくれる
ものですが,一回の操作で一つの表を作るのが「基本」のようです。そこで,このマクロ・プログラム
は次のようなことを行います。
3-1.第 1 段階(「a クロス表の作成」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートの茶色の枠)に指定された
条件でクロス表を作成します。
(1) ピボットテーブルで利用するデータの使用範囲を設定し,それをデータファイルの中
に”Piv_Cros”という名前のピボットテーブルとして設定する。
この処理のためには,使用するデータファイルのブック名,シート名,使用範囲が必ず設定されてい
る必要があります。また,このコントロール・ファイル(ここでは”SampleCnt.xls”と”Cnt”シート)の
名前自体をプログラムが認識するために,"CrosMacro.xls"の"Conf0"にそれを書き込む領域が設定され
ていますが,そこが空白の場合はメッセージで入力が求められます。
(2) ピボットテーブルの出力を書き出すための臨時シート(temp_piv)を作り,その 3 行目 1 列
を開始セルとして,コントロール・ファイルで要求された最初のクロス表を作る。
ここでいう「クロス表」とは2つの変数(設問)の変数値(選択肢)間の「データの個数」です。こ
の「データの個数」としては,「2-4の(9)」で説明した「ダミー変数」を利用しています。このダミ
ー変数の値がすべて「1」であるのは,その値の「合計」と「データの個数」が同じになるからです。
実際には「合計」は使用せず,「データの個数」だけを使用しているので,データが入力されている(ブ
ランクが無い)ものならどの変数を指定しても,問題はない筈です。
(3) 連続したクロス表を保存する新しいシート(Cros_R)を作成する。既に Cros_R シートがあ
れば,その名前を変更してから,Cros_R を作成。
(4) ”temp_piv”に作られたピボットテーブル(1つのクロス表)の値だけを”Cros_R”にコピーする。
10
その際,コピーは"Cros_R"の3列目以降に行われます。1-2 列目は,その行の特性を示すための Index
値が出力されます。
(5) 上記”temp_piv”につくられたクロス表の変数の組み合わせを変更する。このことで次のクロス
表が 3 行 1 列に作られる。
(6) それを,”Cros_R”に追加コピーする。なお,多重回答については繰り返しの時に列をずらして
コピーしたり,値を加算したりしています。
(7) 上記(5)と(6)を繰り返す。
ここで,どのように繰り返すのかを指定するのがコントロール・ファイルとしての”SampleCnt.xls”
の”Cnt”シートの茶色枠の「基準変数について」,「分析変数について」の部分です。なお,「基準変数」
とは1頁の出力例でいうと,縦に展開されている全体,地域別,性別などの変数(設問)のことで,
「分
析変数」とは,「問1.健康状態」,「問2.通院.往診を受けているか」などの行を単位(横)に展開
されている変数(設問)のことです。
(8) ピボットテーブル作成シート”temp_piv”を削除する。これで同時に”Piv_Cros”という名前で指
定されたピボットテーブル名,およびその使用範囲も削除される。
ところで,Excel のピボットテーブルは,欠損値,非該当などの処理や,いきなり%値を計算するな
どということはしてくれません。そこで次にいろいろとすることがあります。
3-2.第2段階(「b 欠損値行列の削除」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートの紺色の枠)に指定された
条件でクロス表・平均値表のブック・シートの中の行・列を削除します(ブック・シート名の指
定がなければ現在操作しているブックとシート)。削除する場合,「総計」の値からその削除した
列や行の値を減じるかどうかも指定します。非該当(欠損値)などを省く場合は通常「減じる」
を選ぶことになります。
%表への変換を行った後にこの処理をしないで下さい。
選んだシートについてどこまで繰り返すかは,そのシートの1列目に入力されたインデックスの値か
ら判断しています。その値が「99」またはブランクになると,そこで処理が終了します。
なお,各クロス表の基準・分析変数の変数値数(選択肢数)も行・列の削除が行われると,それにあ
わせて減じられます。
3-3.第3段階(「c パーセント表への変換」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートの紫色の枠)に指定された
ブック・シートの「データの個数」の値を,百分比に変えます。その値の表示方法(小数点以下
何桁まで表示するか)も指定できます。
選んだシートについてどこまで繰り返すかは,3-2と同じです。%値はその変数値(選択肢)に対
応した,「データの個数」/「総計」×コントロールファイルで指定した乗数(通常は 100),です。従
って,3-2で「減じる」を選んでいれば,通常(多重回答以外)の設問では%値の合計は 100 となり
ます。なお,「25.3%」などと[%」の文字を表示させたい場合の方法は7-3で説明します。
11
3-4.第4段階(「d 不要行の削除」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートのオレンジの枠)の情報に
基づいて,指定ブック・シートの 1 列目から,1行すべてを削除する行,4 列目以降を削除(ク
リア)する行を判断・実行しています。この処理では 1 列目の Index 値だけを参照しています。
「はじめに(1 頁)」のような表をつくりたいなら,ブック・シート名以外はデフォルトのまま
がいいでしょう。
3-5.第5段階(「e ラベル付け」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートの青色の枠)で指定された
ラベル・ファイルと指定位置からラベル情報を読み込み,クロス表シートに書き込まれている変
数名や変数値名をそのラベルに置き換えます。そのさい,クロス表シートの 2 列目,3 列目に記
入された Index 値を参照して処理をしていますので,必要な情報がある行が3-4で削除されて
いると,正しいラベルづけはできません。その場合,この処理を先に実行(3-2以降が望まし
い)してから3-4の処理をすることで問題が解決されます。
3-6.書式の設定(「f書式の設定」
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートのブルーグレーの枠)で指
定された書式に基づいて,クロス表の各部分のフォントやポイントを整形します。分析変数の選
択肢ラベルの部分については,文字列の折り返しやセンタリングも指定できます。
この処理には 1 列目のインデックス情報を利用していますが,選択肢ラベルや集計数値の書式
設定を何列目まで実行するかについては,シートの 1 行目から順番に実行され,直近に読み込ま
れた 1 列目のインデックスが 11 もしくは 12 である時に 2 列目に入力されている変数値の数によ
っています。
3-M.平均値表の作成(「m 平均値表の作成」が行っていること)
コントロール・ファイル(ここでは”SampleCnt.xls”の”Cnt”シートの緑色の枠)の情報に基づ
いて,新しく作る”Mean_P”シートに平均値表を書き出します。なお,この時に作られるピボット
テーブル名は”Piv_Mean”で,臨時シートの名前は”temp_mea”です。この平均値の計算では,指
定変数(設問)への回答が数値である場合についてだけ計算します。従って文字が入力されてい
たり,
「.」の場合などは集計ケースから除外されます。
「0」
「99」などは数値ですから,無回答や
非該当のデータをこうした数値として入力していると計算結果がおかしくなります。なお,デー
タのブック・シート名,ピボットテーブルの範囲,基準変数となどは,3-1のクロス表の指定
情報によります。
平均値表についても%値の計算以外の3-2~3-6は実行できます。但し3-2.欠損値行
列の削除で実行されるのは実際は基準変数(行側)に現れた欠損値だけです。その際3-2のオ
プション指定としての「ケース数から削除する行・列のケースを減じる」は,必ず減じない「0」
を設定のこと。
12
4.サンプルデータ(Sample.xls)を例にした注意点
サンプルデータ(Sample.xls)は,1999 年に実施された「阪神・淡路大震災復興公営住宅入居者
生
活実態調査」のオリジナルデータを操作(年齢をランダムに加算・減算した。かなりの変数についてオ
リジナルのケースとは違うケースのものに差し替えた。ケース数を減じた。さらにいくつかの設問につ
いてはすべて「無回答」を入力)したものです。従ってこのデータは全くの架空データとなっています
(単純集計だけをみるなら,オリジナルと傾向が一致する場合もあるが)。しかし,Web で公開した調
査票などを参照し(http://www.bukkyo-u.ac.jp/mmc01/naito/cyosa/sinsai/1999//1999ahyo.doc),デー
タのコーディング法や,このマクロ・プログラムを利用したアンケート集計の技法を学ぶために作った
ものです。
4-1.カテゴライズする変数の設定
サンプルデータでは,
「追加変数」として,157~164 列を作っている。このうち 157~159 列は,実
数値で回答を求めたものを実年齢→年齢階層(50 歳以下,50 歳台,60~64 歳,65~69 歳,70 歳台,
80 歳 以 上 ) な ど の よ う に 「 カ テ ゴ ラ イ ズ 」 し た も の で あ る 。 こ の カ テ ゴ ラ イ ズ の 内 容 は
http://www.bukkyo-u.ac.jp/mmc01/naito/seminar/ankate/index.html の第 3 章,3-2に説明してい
るが,それを Excel の IF 文を使った演算で実行している。カテゴライズの数がそれほど多くはなかっ
たので,1つのセルの中の IF 文で演算できた(Sample.xls の Data の 157 列目の医療費のデータセル
など参照)が,かなり複雑な IF 文なので,演算式が間違う可能性も大きくなる。その場合,1 つのセル
の1つの演算式で完結することはあきらめて,いくつかの臨時に操作する列を作って,何回かの演算の
組み合わせにする必要もあるだろう。この例を”Sample.xls”の”カテゴライズ例”のシートに載せている
ので,その演算式などを参照して下さい。
4-2.基準変数の設定
上記の「追加変数」のうち 161,162 列の性別と年齢階層は 152,158 列と全く同じ値が入力されて
いる。このような同一の値を持つ変数を設定するのは,同一変数同士のクロス表作成を指定すると,ピ
ボットテーブルでは集計が乱れることがあるからである。行の側に設定される「基準変数」と列に設定
される「分析変数」は,同じものを設定しないほうが良いようである。集計のときに基準として使用す
る変数はたとえ二重になっても分析変数とは違う列(変数)に設定する必要がある。なお,160 列の「地
区別」は 1 列の ID が 50 以下が 1,51 以上を 2 としたものであるが,分析変数には利用していないの
で二重の設定はしていない。
また,163 列に「基準総数」という変数名をつけ,すべて「1」とした項目を置いているのは,3-
4の行削除をした時でも,1つの分析変数の最初に「総数」にあたる行を残すためのものである。
4-3.多重回答データの入力と整形
サンプルデータのように YN 型多重回答の設問のデータ入力を,各選択肢に1列を配当するように入
力すれば操作の必要がないが,これはデータ入力上は面倒なことである。データ入力上は「3つまで」
などと限定した場合は3列をあて,1と5を選んでいたら,最初の2列に,
「1」
「5」を入力し,3列目
は空白にするのが都合がよいだろう。こうした入力データを YN 型のデータに変換する Excel マクロ
13
も”OmakeMacro.xls”というプログラムとして提供している。情報の指定はそのファイルの”Omake”シ
ートにある。”Sample.xls”の”多重サンプル”シートをアクティブにすると試行できる。
4-4.欠損値・無回答の入力
欠損値や無回答を指定どおり入力すれば,特別な操作はいらないが,入力作業がやはりやっかいにな
る。入力時は空白のままにしておくことも多いだろう。その際,入力作業後にデータを整形するわけで
あり,Excel の編集→置換で,検索する文字列を空白にし,置換後の文字列に「99」を投入し「オプシ
ョンで」,
「セル内容が完全に同一であるものを置換する」をチェックして全置換などを行う方法となろ
う。欠損値などを判定するために,適当なダミー列に"=IF( , , )" 文を入れた操作も必要になる場合もあ
るが,説明は省略する。
5.出力について,およびその整形について
5-1.インデックス情報の意味
出力テーブルは,クロス表は”Cros_R”というシートに,平均値表は”Mean_P”というシートに出力さ
れます。それぞれの出力は 3 列目以降に書き出されます。1 列目と 2 列目は表の変数の数,変数値の数,
その始まり又は終わりを示す Index 番号が入りますが,その意味は次の通りです。
1 列目の情報
0
→
新しい分析変数によるクロス・平均値表の開始を示す。1 頁の出力で,「問1」と「問2」
の間に空白行が出力されていますが,次のインデックス「3」の行を削除した場合にもこうな
るようにするためのものです。この空白行が不要なら「d 不要行の削除」で,インデックス「0」
も削除するようにコントロールファイルを指定します。
3 →
1
→
1つのクロス・平均値表の始まりを示す。
シートの最初の 1 行目は必ず「1」が入ります。この出力の全体の始まりを示しています。
2 列目には基準変数の数が入ります。
2
→
シートの最初の 2 行目にはこれが必ず入ります。2 列目には分析変数の数が入ります。
⇒
従って,1 行の 2 列の数値と 2 行の 2 列の数値を掛けた数が,全体のクロスまたは平均値
表の数です。
11 →
一つの分析変数に対する最初の開始行であることを表します。2 列目には分析変数の変数
値の数(選択肢数)が示されます。平均値表では 2 列目の値は常に 1 である。
12 →
一つの分析変数に対する 2 番目以降の表の開始行であることを表します。2 列目は「11」
と同じである。
⇒
21 →
11 も 12 も 3 列目以降の情報は全く同じです。
一つの分析変数に対する最初の表の 2 行目を表します。2 列目には基準変数の変数値の数
(選択肢数)が示されます。
22 →
一つの分析変数に対する継続表の 2 行目を表します。2 列目は「21」と同じ。
⇒21 も 22 も 3 列目は基準変数のラベルです。4 列目以降は分析変数に入力された値のリスト
14
ですが(多重回答の場合は分析変数のラベル),一つの分析変数に対する継続クロス表な
ので,4 列目以降は全く同じとなります。
31 →
一つの分析変数の最初の表の最終行であることをあらわします。
32 →
一つの分析変数の 2 番目以降の表の最終行をあらわします。
33 →
一つの分析変数の最後の表の最終行であることをあらわします。
40 →
表の基準変数の変数値(選択肢)に対応した行であることをあらわします。
99 → 連続クロス表・平均値表の終了をあらわします。
6.マクロ実行上の注意と CrosMacro.xls では出来ないこと
★このプログラムはクロス表と平均値表を作るだけです。その他の統計計算は一切できません。
★このプログラムでは,ファイル(ブック)名,シート名のチェック,ピボットテーブルの指定範囲の,
特に 1 行目の変数名が指定されているところ,などのチェックはしていません。全ての指定に誤りが無
いことを前提にしたプログラムです。そのため,誤った指定をしたり,特にコントロールシートにおか
しな情報が記入されていると,
マクロ・プログラムの実行がと
まり,次のような Excel のエラ
ーメッセージがでます。このエ
ラーに対しては,「終了(E)」を
選んで処理を終わらせますが,
「デバッグ(D)」を選んだときは
エラーをおこしたプログラムに
飛んで,次の頁のような表示な
って,処理が中断モードに入ります(青丸のように中断キーが押されたモードになっている)。この場
合,再開するときはマクロ処理を終了する
必要があります。赤丸で囲ったマクロの終
了ボタンをクリックしてください。なお,
画面は Excel の「ツール」→「マクロ」→
「Visual Basic Editor」で入ることもでき
ます。マクロを確実に終了させ,エラーを
修正してから再実行してください。
なお,マクロの「実行時エラー」のほと
んどは,
「ブック」
「シート」名の指定ミス,
ピボットテーブルなどの矩形範囲の指定
ミスです。
15
7.コントロール・ファイルの設定の仕方
提供している,SampleCnt.xls のシート Cnt に即して,コントロール・ファイルの設定の方法を説明
します。CrosMacro.xls は,その中のシート"Conf0",もしくはメッセージで指定されたコントロール・
ファイルを読み込み,その情報に基づいて一連の集計や操作をするものであるが,コントロール情報の
全容は下の図の通りである。
図
コントロール・ファイル(シート)の内容
クロス表の作成の時に必要な情報~ラベル付けに必要な情報までが,色分けした罫線で囲まれている。
この行・列位置は固定しているので,独自にコントロール・ファイルを作る場合も,この行・列関係を
忠実に守る必要がある。
7-1.クロス表作成に必要なコントロール情報。
茶色罫線枠部分を必ず指定しなければならない。
(1) まず,データファイルのブック名とシート名の指定を 3 列の 14・15 行に設定する。
(2) 次に,そのシートの中の集計するデータの範囲を 3 列の 16~19 行に設定する。この開始行などを
間違うと,ほとんどの場合プログラム実行でエラーが起きる。
(3) 6列 19 行には,全てのケースに数値「1」が入力されているダミー変数の列番号を指定する。
(4) 基準変数の枠の中には,連続クロス表の縦側に配置される変数の数,そしてその変数リストの列番
号{(2)で指定した開始列から数えたもの}を設定する。本来のクロス集計ではない「単純集計」なら,
このサンプルデータで「基準総数」とした全てに「1」が入っている変数があればそれを 1 つだけ指定
するのが便利である。なお,ダミー変数としたものをこれに使用することはできない。なお,3 列 25
行の「その数」の欄に指定された数しか基準変数としては扱われないので,3列 28 行以降にどれだけ
のリストを書き込もうとも,「その数」を超えるものは無視される。
16
この基準変数の欄に多重回答のリストを設定しても,指定リストはそれぞれが独立した変数として扱
われる。
(5) 分析変数の枠の中には連続クロス表の横に変数値が展開される変数リストを指定する。
「その数」と
リストの関係は(4)と同じである。多重回答の場合(連続した列にデータ入力されている必要があるが),
その開始列と変数の数を変数リストの右に書く。なお,MA 型の多重回答はその数に 1000 を加えた数
字を記入する。多重回答でない普通の変数の場合,この第 7 列の欄は空白でなければならない。
以上である。
7-2.欠損値行列の削除に必要なコントロール情報
紺色の罫線枠に必要な情報を書き込む。
(1) 集計から削除する変数値(例えば選択肢番号)を,10 列 9~14 行に,基準変数に対応する縦(行)
側,分析変数に対応する横(列)側に分けてそれぞれ3つまで指定する。この情報に基づく列と行への
処理は,クロス表全体に対して一貫して行われ,連続クロス表の個々について指定することはできない。
非該当・無回答などをできるだけ同じ値に設定するのはこのためである。なおこの削除の中で,ピボッ
ト・テーブルで「総計」とされる合計値からその値を減じるかどうかは,12 列に指定する。
非該当は一般に総ケース数から減じて集計する。無回答はその場合によることが多い。なお,多重回
答の MN 型の場合,3 つまでの回答を求めたが2つしか答えなかった場合,3つめをどう扱うかも場合
によるが,通常はそれを無視する。そこで,99 を無回答にあてた時,たとえば 999 を選ばなかったセ
ルに入力し,ここではそれを「減じない」とするとうまく集計できる。
(2) 10 列 15・16 行には操作を行うブック・シート名を指定するが,ここを空白のままにし,操作する
ブックとシートをアクティブにすることをすすめる。
7-3.パーセント表への変換作業に必要なコントロール情報
紺色の罫線枠に必要な情報を書き込む。
(1) 10 列 20・21 行に,操作するブック名とシート名を書き込めるが,それらをアクティブにしておい
て,ここは空白のままにすることをすすめる。
(2) どのようにパーセントを計算し表記するかを 12 列 20・21 行に指定する。該当ケース数を総ケース
数で割ったあたいに 100 をかけるなら 21 行は 100 に,そうしないなら 1 にする。表の中に「12.5%」
「12.5」なら 20 行は「0.0」21 行は
などの形で表記したければ 20 行は「0.0%」,21 行は「1」であり,
「100」である。なお,この 12 列 20 行のセル自体の書式は「文字列」にしておくこと。
7-4.不要行の削除に必要なコントロール情報
オレンジ色の罫線枠に必要な情報を書き込む。
(1) ブック・シート名は指定できるが,それらをアクティブにしておき,ここは空白にすることをすす
める。
(2) 7-2の処理は変数の変数値ラベルで行・列を削除したが,ここでは,1 列目に設定された Index
情報に基づき行を削除する。その削除したい Index の数と番号を 15 列 16 行以下に設定する。
18 列には,4 列目以後を削除する Index を指定するが,ここに Index「22」を指定すると,1つの分
析変数の変数値ラベルで,2 番目以降の基準変数にも付けられたものが削除されることになる。
17
7-5.変数名・変数値へのラベル付けに必要なコントロール情報
ここまでに作られたクロス表には,変数名,変数値名が表記されているが,それは元々のデータに示
された変数名と変数値名(入力された選択肢番号など)である。これを「問1」は「問1.健康状態」
であるとか,選択肢番号「4」は「4.寝たり起きたり」などと表示するために,青色の罫線枠に必要な
情報を書き込み
(1) ブック・シート名は指定できるが,それらをアクティブにしておき,ここは空白にすることをすす
める。
(2) 17 列 37 行以下に,指定形式でそのラベルが入力されているブック名とシート名,そしてラベルデ
ータの書き込まれている開始行・列を必ず指定する。
(3) ラベルデータの形式は次章で説明する。
7-M.平均値表の作成に必要なコントロール情報
緑色の罫線枠に必要な情報を書き込む。
(1) 集計するデータ,および基準変数のリストなどは,クロス表のものを使用するので,7-1の(1)(2)(4)
を確認する。ダミー変数はここでは使用しない。
(2) 平均値集計をする変数の数と変数リストを 10 列 25 行以降に設定する。
(3) 平均値の書式は 12 列 23 行に設定する。このセル自体の書式は「文字列」にしておくこと。
以上である。なお,欠損値行列の削除(列削除は実際は行われない),不要行の削除,ラベル付けは
クロス表と同じように実行できる。パーセント値の計算は,プログラムは実行できるが(平均値をケー
ス数で割った値になる)意味のない数値に変換されるだけなので行わないこと。
18
8.ラベル・ファイルの構造
ラベル・ファイルのシートの中身は次のようになっている。この表で実際にラベル・データとして意
味を持つのは 2 行目,4 列目以降である。2 行・4 列目以降には,各行には以下に述べる情報が入る。
図
ラベル・ファイルの内容
8-1.ラベル・ファイルに入る情報と最終行について
1:変数名(データ・ファイルのピボット・テーブルデータ先頭行の各セルに入っている情報)
2:上の変数名を置き換えるラベル
3:この変数の 1 つの変数値
4:上の変数値を置き換えるラベル
5・6 以降は 3,4 を必要なだけ繰り返す。
なお,開始列(ここでは第 4 列)のセルに空白があると,ラベルデータが終了であるとみなしている
ので,ラベルデータが続いている時はこの列のセルに空白を入れてはならない。また最後の行の次の開
始セル位置(ここでは 4 列目)は必ず空白にしなければならない。ラベルの行としては,現在最大 300
行までを可能としている。
19
また,1つの変数の変数値ラベルが幾つあるかは,この表では 7・9・11 列などラベルを入力するセ
ルが空白になることで,判定している。したがってこのラベル入力セルにも途中に空白を作らない,最
後のラベルの後のラベル入力位置は必ず空白にする必要がある。
8-2.ラベルとして設定したほうがよい「変数値」
ラベル表では,変数値ではないが「総計」という項目も変数値と同じ扱いとし,それに「ケース数」
というラベルに書き換えるための設定をしている。ピボット・テーブルでは集計したケース数の合計を
「総計」というラベルで表記する。ラベル付けのプログラムでは,この「総計」にあたる情報が書き込
まれるセルもラベル変換できるようにしている。そのまま「総計」でよければこのような指定はいらな
いが,「ケース数」とするほうがアンケート調査では一般的であろう。V009 では「データ数」を「ケー
ス数」と書き換えるように設定しているが,この V009 は実数が入力されており,平均値の計算対象で
あり,ピボット・テーブルでは平均値計算の時は「総計」でなく「データ数」が表記されるのでこうし
ている。
8-3.多重回答のラベル付けの注意
多重回答の場合,MA 型(V022 の例)においては変数値としては選択肢番号が使われるので,通常
の変数と同じように指定すればよい。しかし,YN 型の場合,変数値は 0 か 1 で,このプログラムでは
1だけを集計しているために,変数値はすべてが1になる。そこで最初のクロス表作成のときに,その
「1」という変数値を該当する変数名に置き換えている。したがって,このラベル付けでは,YN 型につ
いては変数値としてそれぞれの変数名を指定することになる。V004 の例がそれである。なお,MA・
YN 型どちらについても,多重処理の集計のみを行うなら,先頭変数にあたる行だけにラベル情報があ
れば十分で,2 番目(V005)以降の変数には変数ラベルや変数値ラベルの指定は不要である。
8-4.その他
前頁のサンプルでは,使用している変数が,データ入力順に並んでいるが,ラベル付けプログラムで
は変数名との関係で全てが判定されているので,変数名の行の各セルの情報が正しければ,行の順番は
自由である。行の中の変数値の順番も,昇順・降順の必要もない。また,ラベル付けの必要のない変数
などは,省略してもよい。
20
おわりに
このマクロ・プログラムは随分雑に作られています。兎も角,Excel で連続したクロス表ができれば
良いという発想での「プログラム」だからです。これまでのいろいろな「蓄積」を前提としてですが,
メインの”CrosTables”部分は3時間くらいで出来上がりました。と言っても,大部分は「ツール」→「マ
クロ」→「新しいマクロの記録」をしてからピボットテーブル操作をして,記録されたマクロの文字列
部分などを変数に置き換えるといった作業です。マクロに関するマニュアルや参考書は一切参照してい
ませんので,本当はこんなコマンドが使えるというところが沢山あることでしょう。これはまあ,美し
くないプログラムのいい訳でしかないかもしれません。作成に時間がかかるのは,他人に見られた時の
恥ずかしさを抑えるための「整形」と,そして特に,こういう「説明書」を作ることです。それらに 10
倍以上の時間がかかってしまいました。もっとも,それもかなり手抜きでのことです。
このプログラム,サンプルデータ,その他は自由に使って下さい。但し,結果に責任はとりません。
また,何かに参照する場合は,「出展」だけは表記下さい。私への連絡はしてもらえればありがたいで
すが,という程度です。
1日中ディスプレイをにらみ,キーボードをたたいたのは,多分5年ぶ
りのことです。大学は,研究室を含め建物内は全面「禁煙」です。自宅で
今 Montecristo のシガーを味わいながら,この「最終作業」を終えつつあ
ります。
2004.09.02
内藤三義
改訂にあたっての追加
夏に作業するということで,1 年たって「問題」を見直しました。大量データの集計が目前にあるこ
とが,修正の動機です。
「31.3%」という表記もしたい,多重回答の MA 型も集計したい(これは YN
型だと 256 列を超え,2シート以上にデータがわたるようなものに直面したため)などが大きな理由で
すが,Excel のマクロに ThisWorkbook というプロパティがあることを知ったのがもっとも率直な理由
です。マクロのブックの中に何らかの情報を入れるシートをおくときに,マクロのブック名を直接参照
しなくてもよい,したがってマクロのブック名を変えてもシート名だけが固定なら問題ないということ
を知ったということでしょう。
マニュアルや参考書を一切読んでいない「弱み」です。昔 Excel4 の時にマイクロソフトの標準の Excel
マクロのランゲージ書を買ったことがありますが,5 冊くらいに分かれていたそれを,たいして活用し
ないうちにマクロ・コマンドが大幅に改訂されたので,参考書などを買う気があまり起きなかったこと
が災いかもしれません。
兎も角,市民意識や実態調査などのアンケート調査の時の「基本集計」だけでも Excel でできればよ
い,というのが開発動機であり,改訂の理由でもあります。for
goto 文が多用された美しくないマク
ロ・プログラムですが,今のところは私と私の周りの者が使えればいいという代物です。
このプログラムをネットにアップするのは,京都に帰って大学にいくようになってからと思います。
そのころは少し涼しくなっているのでしょうか。
2005.08.24
21
信州小谷村で
追加の追加
結局 HP へのアップは,書式設定のオプションを追加したので,11 月末になりました・・・。
V2 への追加
2005 年に HP にアップしたプログラムは,最終完成品でなく途中のもので,欠損値処理などに「バ
グ」のあるものでした。本人は調査集計に完成品を使い,アップしたものからダウンロードして点検す
ることを怠っていました。迷惑をかけた人がいたら,お詫びいたします。
今回これらの修正を加えることで「V2」としてアップしましたが,バグを取り除いたことを除けば,
プログラムの基本に変更はありません。
22