このプロジェクトは、VBA for Excel を使用して開発されたマクロの使用法を説明するために作成されました。グリーン エネルギー株の選択されたグループからのデータの収集と視覚化を自動化するために使用できます。これは、マクロを使用する機能と、タスクを繰り返し使用できるようにボタンなどのグラフィック インターフェイスを使用してマクロを自動化する方法を示すために使用されました。このプロジェクトでは、2017 年と 2018 年に収集された 12 銘柄の株式データが使用されました。使用されたデータには、ティッカー コード、始値と終値の株価、毎日の取引高が含まれます。これから、分析対象の各銘柄の最初と最後の株価と全体の取引高を決定できます。
このプロジェクトのもう 1 つの目標は、リファクタリングを使用してコードの効率を改善し、マクロを完了するために必要な計算能力を最適化する方法を検討することでした。このために、機能するコードの初期バージョンを使用しましたが、分析対象の各株式ティッカーのデータセット全体の反復をプログラムが完了する必要がありました。目標は、プログラムがデータセットの反復でのみ完了し、最初のバージョンと同じデータを取得することを必要とする、元のコードのリファクタリングされたバージョンを開発することでした。
まず、年間総在庫量と、分析対象の各株式の前年比パフォーマンスを収集できる機能コードを開発しました。以下に提供したコードに見られるように、データセットの反復を完了し、次の銘柄に移動する前にデータを Excel ワークシートに挿入することにより、各銘柄のデータが収集されました。
コードには、プログラムの実行にかかった時間を表示し、結果を表示するタイマーが組み込まれていました。これを使用して、各年のデータセットのデータを収集するための初期コードを完了するのに必要な時間を比較できます。これにより、以下の画像に示すように、各年のコードの実行時間が得られました。これは、最初のコードが 2017 年のデータセットを完了するのに 0.6289062 秒かかり、2018 年のデータセットを完了するのに 0.6171875 秒かかったことがわかります。
元の作業コードのリファクタリングを通じて、データセットの合計反復回数を減らすことでコンピューティングをより効率的に使用でき、その結果タスクの実行速度が向上します。このコードをリファクタリングするには、開発中のマクロに 2 つのコンポーネントを追加する必要がありました。 1 つ目は、分析対象のデータセット内のデータ行ごとに反復される各ティッカーのインデックスでした。これにより、プログラムはデータセット内のデータ行ごとにどのティッカーが存在するかを識別し、インデックス値に関連する関連データを保存します。 2 つ目は、各株価ティッカーの複数のデータ ポイントを保存するためのデータ配列のコレクションです。配列に保存された各値は、収集された順序に基づいて取得できるため、このデータを使用されるティッカー インデックスにリンクすることができました。これら 2 つのツールを使用すると、以下のサンプルに示すようにコードのリファクタリングが可能になりました。
初期コードの実行時間を決定するために使用したのと同じコードを使用して、分析用にリファクタリングされたコードで観察された実行時間に改善があるかどうかを確認することができました。下の画像に見られるように、2017 年と 2018 年のデータの分析を完了するまでにかかった時間を新しいコードを使用して比較し、これを使用して最初に使用されたコードと比較しました。このことから、2017 年のデータセットを完了するのに 0.5273438 秒かかり、2018 年のデータセットを完了するのに 0.516825 秒かかったことがわかります。
初期コードとリファクタリングされたコードの実行が完了するまでの時間に基づいて収集された情報から、2017 年のデータセットでは 0.1015624 秒、2018 年のデータセットでは 0.1103625 秒の短縮が見られました。
コードをリファクタリングするプロセスには、その使用に関していくつかの利点と欠点があります。まず、いくつかの利点を見てみましょう
コードのリファクタリングを使用する場合の欠点のいくつか。
ここで示した例では、コードの効率を向上させるために完了したリファクタリングには、いくつかの長所と短所がありました。
コードの変更の結果として得られた肯定的な意見のいくつかは次のとおりです。
データ収集に必要な反復回数を減らすことで、分析の完了にかかる時間を短縮しました。
その結果、より大きなデータセットやより多くの検索条件に簡単に拡張できる、より堅牢なコードが得られました。
データのより詳細な分析が必要な場合に他の計算や分析に使用できるデータを保存するために配列を利用
このコードでリファクタリングを使用する場合のマイナス要因には、次のようなものがあります。
https://www.c-sharpcorner.com/article/pros-and-cons-of-code-refactoring/" ↩ ↩ 2