ここから本文です

仕事でVBAプログラムを利用してエクセルデータの整理をしています。 ここでは仕...

tak********さん

2019/7/315:51:41

仕事でVBAプログラムを利用してエクセルデータの整理をしています。

ここでは仕事の内容を書けないので、小学校の全生徒の身長のデータだと思ってください。

1年生のブックがあり、その

中にA組、B組、C組の3シートがあります。
A組シートの中には田中さん、佐藤さん、鈴木さん・・・と言うように生徒名が縦軸にあり、横軸に身長がある2次元の表が書かれています。
残りのB組、C組のシートもすべて同じ書式で身長データが書かれています。

2年生のブックもあって、その中にA組、B組、C組、D組の4シートが入っています。
1年生と違い、2年生は生徒数が多いため、シート数がD組まであるようです。
同じように3年生、4年生、5年生、6年生のブックがあり、シート総数は学年(=ブック)によって違います。


VBAプログラムの処理内容ですが、
この6つのブックを順番に開いて、各シートを順番に参照して、身長データを吸い出して行き、
吸い出したデータから全校生徒分の身長の平均値を計算して、その結果を新規作成したブックのsheet1に出力します。
ボタンを押すとプログラムが走るように作ってあり、終了時にはMsgBox ("プログラム終了")として、
処理が終わったことを知らせるコーションが出るようになっています。


ボタンを押してプログラムをスタートさせてみると、
しばらくして"プログラム終了"のコーションが出たので正常に終わったようです。
予定通り、新規作成されたブックのsheet1に身長の平均値が出力されました。

しかしながら、出力結果が、事前に私が手計算しておいた計算結果と合いません。
おかしいなと思い、プログラムを変更せずにもう一度ボタンを押して処理を走らせました。
2回目、何故か計算結果が一致しました。

【質問1】
なぜ1回目は一致せず、2回目は一致したのか??



実は身長データだけではなく、体重のデータもありました。
身長か体重か、選択できるプログラムにしておいたのですが、
データを吸い出すセルが違うだけで、基本的には全く同じ処理が走ります。

今度は体重を指定して処理をスタートさせました、結果は一致せず。
もう一度処理をスタート、また結果は一致せず。
プログラムの変更をせずに5回繰り返しました、ここで一致です。

【質問2】
なぜ5回目で一致??
気まぐれな結果で、プログラムの不具合がどこにあるのか特定し辛いです。
ブレークポイントを置いて変数をモニタしてみましたがよく分からず。

VBAは最近使うようになりましたが、別の言語のソフトウェア開発者です。

小学校は仮の話です。
本当はもっと複雑なデータ、フォーマットで、プログラム行数もご想像以上にあると思います。

閲覧数:
35
回答数:
1

違反報告

ベストアンサーに選ばれた回答

meg********さん

2019/7/316:31:58

不一致とは桁が2つも3つも違うとかそれ程の違いなのか、或いは桁数は同じだけど僅かに違うのか?

前者は現物・コードを確認しないと不明でしょう。
同じブックを何度も開いたのかも知れませんし。

後者についてはググってみるとわかりますけどExcelって『値の誤差』がありますから、その影響ではないでしょうか。
対策についても記載されてるところがあったような遠い記憶が~~~~~?

質問した人からのコメント

2019/7/5 22:53:32

ご回答ありがとうございました。
誤差は考慮済みです、コードを細かくデバッグしてみます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる