何で俺の命令をすぐに実行できないのだ!
と怒りだす上司などの遭遇した苦い経験のある方は少なくないと思います。
このようなケースの中には、実は、本人が全く気づいていないだけで、命令の中に、無駄な命令 が含まれている拙い指示だったことが原因で、部下は全く悪くないということが少なからずあります。
人間には、思い込みによって、font color="pink"> 自分のミスに全く気づかないケース がありますが、コンピューターの場合には、確実に指示ミスがハッキリと解ります。
先日の私の経験ですが、この程度の処理ならば、時間にして 1秒~2秒程度 だろうと予想したExcelのマクロ(VBA)を作り、実行したところ、処理を終了するまでに 4分~5分 も時間がかかってしまいました。
相手が人間だったならば、何で俺の命令を処理するのに、こんなにも時間がかかるのだ! この能無しが ‥‥ という、こうした酷い心の感情が沸き起こってしまったかもしれません。
しかし、コンピューターは正直なのです。
大幅に時間はかかってしまいますが、意図した処理は、正しく実行してくれているので、自分の出した命令(コンピューターへの指示) のどこかに無駄が含まれている筈なのです。
冷静に分析したところ、原因が判明しました。
横の列数が約100列、行数は現時点で約3800行、つまり、38万セルの一部の修正したい箇所のみを指定して、データーベースを修正させる命令(マクロ)なのですが、マクロ(VBA)のコマンドには、特に問題はありませんでした。
問題は、修正すべき元のデーターベースに漏れがないか、その行数を示すための COUNTA関数(空白セル以外の 数値、文字列、論理値、エラー値 をカウントする関数) を設置したことが原因でした。
COUNTA関数があることで、マクロで命令を実行する毎に、現在の行数をコンピューターが数える(カウントする)ために、処理が著しく遅くなってしまっていたのです。
最初に数を確認して、特に問題がなかれば、いちいち数など数えずに処理を実行して何の問題もないのに、私が無駄な命令をコンピューターに与えていたことが原因でした。
マクロの命令を修正し、マクロの実行の最初に COUNTA関数の記してあるセルのこの計算式を消去して、それから、その他の本筋の命令を実行させ、命令の最後に、最初に消去した COUNTA関数 を再び同じセルに(計算式を)入力することで、解決させることが出来ました。
結果として、当初の見込み通り、 1秒~2秒程度 の処理時間で、目的を達成させられることが出来ました。
コンピューターは正直です。
私が間違った命令(指示)を行えば、エラーで処理が実行できませんし、無駄な命令が含まれていれば、処理時間が大幅に遅くなってしまいます。
対人間に対する自分の言動にも、注意しなければ ‥‥ と改めて思いました。
シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。
http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5
音楽(クラシック) ブログランキングへ
と怒りだす上司などの遭遇した苦い経験のある方は少なくないと思います。
このようなケースの中には、実は、本人が全く気づいていないだけで、命令の中に、無駄な命令 が含まれている拙い指示だったことが原因で、部下は全く悪くないということが少なからずあります。
人間には、思い込みによって、font color="pink"> 自分のミスに全く気づかないケース がありますが、コンピューターの場合には、確実に指示ミスがハッキリと解ります。
先日の私の経験ですが、この程度の処理ならば、時間にして 1秒~2秒程度 だろうと予想したExcelのマクロ(VBA)を作り、実行したところ、処理を終了するまでに 4分~5分 も時間がかかってしまいました。
相手が人間だったならば、何で俺の命令を処理するのに、こんなにも時間がかかるのだ! この能無しが ‥‥ という、こうした酷い心の感情が沸き起こってしまったかもしれません。
しかし、コンピューターは正直なのです。
大幅に時間はかかってしまいますが、意図した処理は、正しく実行してくれているので、自分の出した命令(コンピューターへの指示) のどこかに無駄が含まれている筈なのです。
冷静に分析したところ、原因が判明しました。
横の列数が約100列、行数は現時点で約3800行、つまり、38万セルの一部の修正したい箇所のみを指定して、データーベースを修正させる命令(マクロ)なのですが、マクロ(VBA)のコマンドには、特に問題はありませんでした。
問題は、修正すべき元のデーターベースに漏れがないか、その行数を示すための COUNTA関数(空白セル以外の 数値、文字列、論理値、エラー値 をカウントする関数) を設置したことが原因でした。
COUNTA関数があることで、マクロで命令を実行する毎に、現在の行数をコンピューターが数える(カウントする)ために、処理が著しく遅くなってしまっていたのです。
最初に数を確認して、特に問題がなかれば、いちいち数など数えずに処理を実行して何の問題もないのに、私が無駄な命令をコンピューターに与えていたことが原因でした。
マクロの命令を修正し、マクロの実行の最初に COUNTA関数の記してあるセルのこの計算式を消去して、それから、その他の本筋の命令を実行させ、命令の最後に、最初に消去した COUNTA関数 を再び同じセルに(計算式を)入力することで、解決させることが出来ました。
結果として、当初の見込み通り、 1秒~2秒程度 の処理時間で、目的を達成させられることが出来ました。
コンピューターは正直です。
私が間違った命令(指示)を行えば、エラーで処理が実行できませんし、無駄な命令が含まれていれば、処理時間が大幅に遅くなってしまいます。
対人間に対する自分の言動にも、注意しなければ ‥‥ と改めて思いました。
シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。
http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5
音楽(クラシック) ブログランキングへ