- すべて
- 画像・動画
並べ替え:新着順
メインの業務ではないけど、データをイジる仕事を最近やっていて、VBAでマクロを作る依頼をされた😳 副業狙いで勉強していたのが活きた瞬間🤩 cells+if文で判定して30秒掛かっていた処理が、過去にやった事を思い出して配列使うと最終的に1秒以内で完了したことに感動した。笑
WorksheetFunction.Transpose の一次元配列の変換は65536までは正常動作するようです。 それ以上になるとNGっぽい。 #Excel #vba pic.twitter.com/cwp8DLyRIE
VBAエキスパート Excel VBAスタンダード 用語2章配列つづりの難問は、 ・split関数 ・variant 変数の型 ・ redim 動的配列 これらを正しく入力できることが得点アップつながります。
その先には、配列関数と、ラムダ関数があるのですが、配列関数までは正直、だれでも到達できるでしょう。中学1年レベルの知識ですみますので。問題はラムダですね。VBAを減らすにはラムダかMが必要ですがラムダを覚えたほうが良いと思います。この壁は結構高い壁ですので必要な人だけでよいかと。
補足 呼吸するほど当たり前だったので記述を忘れてた。 if文と適切なループ文を使える。 コレクションと配列の違いを理解している。 後、何かあるかな。 RDBへの接続と基本レベルのSQLは書けた方がいいか。 最低限これだけ理解してれば事務仕事でVBAをつかえるを羅列したが意外と多くなった。
追記 マクロの記録が出来る。 マクロの記録で生成されたコードを修正して自分のコードで使える。 配列とRedimと番兵を理解している。 後は、外部データの取り込み位かな。 後は、知ってるに越したことはない程度の機能が多い。 VBAよりExcelの基本機能使った方が楽で速い事もあるのでVBAも控えめに。
有識者に協力求む マクロVBAの3次元配列って何? Dim Data2 (10, 70, 5) As String (10, 70) の2次元配列は理解出来たんやが 3次元配列の最後の【5】って何を指してExcelでどこの部分を指してるの? 分かる人いたら教えて下さい よろしくお願いします
返信先:@inuko_inuko9VBAも超クセツヨプログミングなんで… 配列を5と指定したら0-5の6個定義するし… 基本は型自動推測モードですし なんと言っても途中でマウス動かすと警告が出まくるという…
返信先:@kurenai_orutaDataが変数名かどうかも自信なくなってきた 命名的になにか意味があるのかちょっと調べたけど VBAで無名配列とかはヒットしなかったので 変数名で良いっぽい? 逆に混乱させてしまう回答ですみません
返信先:@kurenai_oruta既にご理解の内容があるかもですがご容赦を~ 配列の宣言の仕方は言語によって異なるので ちょっと自信ないです 文字列型の変数に数値等を代入した場合、 そのまま数値を文字列と解釈して エラーにならないフレキシブルな言語もありますが VBAの挙動は分かりません 間違ってたらゴメンナサイ
#ExcelVBAマクロを使いこなす 16 VBA 配列とコレクションの違い thom.hateblo.jp/entry/2016/08/… 配列 ・宣言時に型と要素数を決定してメモリ領域確保 ・ArrayやSplitで生成,Joinで結合できる コレクション ・データの追加・削除・挿入が容易 ・インデックスの代わりにキー文字列で参照可
返信先:@Tsutsui0524これは知りませんでしたが、Excelの作りかたからいえば当然ですね。Excelは2次元配列に親切に厚化粧をして、データ種や書式まで扱えるようにしたものだから、csvファイルを開く方がデータの内容を考慮して上手く開けるVBA等を用意するのが当然と思っています。 (csvファイルの関連付けは顰蹙ですが)
そういえば、つい最近、VBAでゴリゴリと ・配列として読み込んで ・「必要な列だけ」別の配列に転記する プログラムを書きました。 必要な列かどうかは、 Const Attr = "X,X,X,,,,X,X" みたいな定数から、Splitで配列を生成して「X」が指定されている列だけ残す、みたいなロジック。
簡単な方法ではありませんが エクセルVBAの練習として コードを書いてみました 単純に要素を配列に入れて 一つの要素を取り出して、 もう一つの配列の要素と一つずつチェック 異なるものがあれば一致していないの判定 最後まで行けば、一致していると判定 ・2つの要素数は同じ ・重複する要素はない pic.twitter.com/PnRrQfc5ew
AA,BB,CC BB,CC,AA この2つが「同じ要素を含んでいる」と判定する一番かんたんな方法はどんなのでしょうね… 私は「分割→並べ替え→結合→一致検査」という手順かな…と思ったのですが。
今日は他県の同僚から依頼があって、久々のフルタイムExcel・VBAいじり。 配列やらDictionaryを駆使しまくり、最初に作った30分かかるマクロを1分半まで短縮成功。 FileSystemObjectもそうだけど、いい加減「Microsoft Scripting Runtime」をデフォルトでONにしててくれないだろうか⁉
#はた読 #ExcelVBA配列入門 VBAの配列は決まりごとが多く、覚えるのは大変。しかし、労力に対してのリターンはきちんとある。例えば条件を設定しないで6秒かかった処理が0.2秒で終わることもある。
データを事前に処理するバッチ言語 データを自動で読み込むM言語 複雑な変形をする配列関数とラムダ ここがどこまでOfficeスクリプトで対応できるかですが、もうVBAのような自由度はないでしょうね。アレはURLをベースとしたクラウドでこそ威力を発揮するとおもいます。
もしかしたら構造体が使える、もExcel中級者なのかもしれないけど Excel VBAのクラス、俺いまいち使い所が分からないんだよね apiの受け皿かユーザーフォームの制御ぐらいしか思いつかない コレクションと併用してレコードセットの代わりにしても、配列変数より遥かに遅いからねぇ あ、あと連想配列か
あくまで個人的な見解だけど VBA初心者 セルに逐次データ書き込み VBA中級者 配列変数で処理 VBA中級者2 api使える みたいな感じかなぁ api使えるとExcel単体でできないことが実現できるからね 上級者は分からん 世の中には凄い人一杯いるから
VLOOKUPの速度について軽く検証してみました。 前提条件:書き込みは配列を使用する。データ数は5000件 結果 1. wsf.Vlookupより数式VLOOKUPのほうが倍くらい早い 2. wsf.Vlookupは第2引数(範囲)にValue(VBA内二次元配列)を指定したとき50倍くらい遅くなる 3. やはりDictionaryは早かった pic.twitter.com/R0GsN8vZn6
VBAにて、ForNextでWorksheetfunction.Vlookupを入力するマクロが時間かかり過ぎるというご相談。 もう定番の解決策ですがForNextやめて、 Range(入力範囲指定) = "=VLOOKUP(引数)" で一括入力ですね。早くなるなんてもんじゃない。 数分以上かかる処理が1秒になりますものね。