タグで絞りこむ

定額コース利用者は自由に投稿できます。  お得な定額コースのご案内はこちら

この投稿の公開範囲:公開

そもそもPythonは特別な環境が必要なのでしょうか??

小川慶一さんの投稿 2022年2月24日10:59  url 
> そもそもPythonは特別な環境が必要なのでしょうか??

というご質問を受けました。

お返事をさらっと書いてみます。

大きく言うと、エクセルVBAでのプログラミングはオートマ車的というか、ハンドルを回すとかアクセル、ブレーキを踏むといった操作だけに特化すれば概ね運転は可能。

一方、他の言語をやろうとすると、マニュアル車的というか、自分でクラッチ操作をする感じです。
プラスして、簡単なパーツ交換は自分で行うという感じですね。

エクセルVBAでマクロを書く場合との環境面での違いを、3つ挙げてみます。

・自分でインストールが必要
エクセルVBAはエクセルをインストールすれば自動的に利用可能になります。
pythonの場合は、自分でネットからダウンロードしてインストールする作業が必要です。

・言語のバージョンアップが必要になる場合がある
エクセルVBAは、適切なバージョンのプログラミング言語が自動的にインストールされています。
必要があれば、Windows Update で更新されます。(たぶん、今お使いのものは、バージョン 7.1 かと。VBE で、メニューのヘルプから、「バージョン情報」を調べてみてください)

Pythonの場合は、3.9から3.10にバージョンアップする/しないという選択を自分でして、自分で更新することになります。

・開発環境のインストールが必要
エクセルVBAはエクセルをインストールすれば自動的に開発環境も利用可能になります。
(Visual Basic Editor, VBE ですね)
pythonの場合は、開発環境の選択肢が複数あり(PyCharm, VS Code 等)、そのうちどれを使うかを自分で選択してネットからダウンロードしてインストールする作業が必要です。

この投稿の公開範囲:公開
スキル  

エクセルマクロでの、2つの表をマッチングするやり方のバリエーション

小川慶一さんの投稿 2019年12月23日5:57  url 
エクセルマクロでの、マッチングのバリエーションについて順を追って説明しました。

もともとは、以下のような質問がきたのがきっかけ:

>1つのExcelに2つのsheetがあり、1つの対比sheetには左に今月、右に前月のデータを横並びにし、差異を対比できるようにしています。
>データはNo.で管理しています。もう1つのsheetには前月のデータのみを入れています。
>行はデータNo.で列は項目とし、列10列くらいは毎月変わりませんが、行は5000行以上あり毎月追加削除が発生するので変わります。
>
>発展1を参考に対比sheetに今月データを貼り付けた後に、前月sheetからで該当するデータを転記する。該当するNo.がない場合はデータの下部に転記する。最後に横並びにしたデータを対比し差異に色をつける、というマクロを作りました。
>ですが、行も列も多くちょっと時間がかかるため、配列を使ってやってみようと思いました。
>
>そこで確認ですが、配列化するのはこの事例でいうと転記元の前月のデータ(5000行10列)を1つの配列とし、該当するNo.の必要な列を、今月列=前月列として転記する。で合っていますか?
>
>転記先の対比sheetの転記列や、検索No.列も別の配列にしたほうがいいのかなど、配列にした方が良い基準がいまいちわからないのですが‥
>よろしくおねがいいたします。

要約すると、こういうこと↓ですね。

>For Next構文を複数組み合わせることでマッチングをできるようになった。
>ただし、データの件数が多いため、マクロ実行時間短縮のため、より高速にマッチングできる方法を求めている。
>そこで、配列を使うとマッチングを高速化できるのではなのではないかと考えた。
>ついては、この見立ては適切かどうか教えてほしい。
>また、適切だということならば、より具体的な方針について相談したい。

ということなのですが...。
実は、このテーマ、配列は関係ありません m(_ _)m

マッチングのパフォーマンスが配列を使うと改善するか?というと。
するにはしますが、そんなに劇的には変わらないです。

マッチングのパフォーマンスを上げるための進化のプロセスは、以下のとおりです。

[1] For Next構文を複数組み合わせることでマッチングをできるようになる
[2] For Each構文を複数組み合わせることでマッチングをできるようになる
[3] Findメソッドを使うことでマッチングをできるようになる
[4] SQLのSELECT文を使うことでマッチングできるようになる

続きは、以下を参照ください。
https://www.exvba.com/comment_detail.php?comment_id=11669

この投稿の公開範囲:公開

情報交換・意見交換の場として、有意義に使ってもらえれば、と

小川慶一さんの投稿 2019年9月20日12:29  url 
フォーラムは、情報交換・意見交換の場として、有意義に使ってもらえれば、と思っています。

メルマガだと、個別にお返事をいただいて、それに対してお返事をさしあげて、としても、「レバレッジが効かない」というか、そこがネックでした。

こういう場で情報交換・意見交換をできると、ひとつの投稿が多くの方に同時に影響を与えるので、とてもよいかと思います。