配列(一次元/二次元)RedimPreserveより事前に領域確保したほうが速度が出る【ExcelVBA】 マクロ開発時、二次元配列の要素数が読めない場合、RedimPreserveで指定や要素の入れ直しで 二次元配列を最小の要素数→任意の行数の配列で処理することは、処理自体奇麗と考えます。 処理は奇麗でも...2025.01.230配列(一次元/二次元)
配列(一次元/二次元)配列の指定した範囲を抜き出す(インデックス番号でFromTo)【ExcelVBA】 使い方 上記をコピペでお好きなモジュール内に記載してください。 注意点 元のインデックス番号は保持したまま処理をします。 ※必要あれば要素数計算してRedimPreserveするコードです。 関連記事...2025.01.220配列(一次元/二次元)
配列(一次元/二次元)RedimPreserveはフィルタの動きは出来ずインデックス番号が変わるだけ【ExcelVBA】 RedimPreserveは要素を保持したまま要素数を増やすことが多いと思います。 開発案件で、配列arr(1 to 5)から、arr(3)~arr(5)を抜き出したい案件がありました。 配列をFor...2025.01.210配列(一次元/二次元)
配列(一次元/二次元)一度Dim宣言すると配列の添え字の始まりは変更できない(けどVariant型は関係ない)【ExcelVBA】 当方のオンラインマクロ受講者に聞かれて、少し調べた案件です。 マクロを主に仕事としていても、普段使わないものはわかっていないものがあり、日々勉強だと感じました。 ---- Redim Preservで...2025.01.200配列(一次元/二次元)
配列(一次元/二次元)一次元配列を降順並び替え(ソート)する【ExcelVBA】 使い方 上記をコピペでお好きなモジュール内に記載してください。 注意点 一次元配列の中身を昇順並び替え(ソート)する 一次元配列を降順並び替え(ソート)する(今回はこれ) 一次元配列の並びを反転させる...2025.01.190配列(一次元/二次元)
配列(一次元/二次元)(Dim arr as Variant)配列が初期化されているのかどうか調べる【isEmpty】【ExcelVBA】 配列が初期状態かどうか調べる 厳密には配列が初期化されているのかどうかではなく、 配列として使用を考えているVariantが初期化されているのかどうか、です。 まとめ 配列をEraseで初期化する (...2023.11.250配列(一次元/二次元)
配列(一次元/二次元)配列をRedimPreserveで要素数を増やすor減らす【Redim Preserveステートメント】【ExcelVBA】 Redim Preserveで要素数を増やすor減らす まとめ Eraseステートメントは初期化 Redimは再初期化・再定義(要素は全て消える)。 Redim Preserveは再定義(要素は残した...2023.11.182024.12.230配列(一次元/二次元)
配列(一次元/二次元)配列をRedimで再初期化する【Redimステートメント】【ExcelVBA】 Redimで配列を再初期化する まとめ Eraseステートメントは初期化 Redimは再初期化・再定義(要素は全て消える)。 Redim Preserveは再定義(要素は残したまま) ※要素数を増やす...2023.11.170配列(一次元/二次元)
配列(一次元/二次元)配列の値を変更・更新する(1次元/2次元) VBAで高速処理に欠かせない配列処理 ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。 大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、 ...2023.01.142023.06.120配列(一次元/二次元)
配列(一次元/二次元)配列の要素に値を入れる【For文】 VBAで高速処理に欠かせない配列処理 ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。 大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、 ...2023.01.132023.06.120配列(一次元/二次元)
配列(一次元/二次元)配列の値を取得する(1次元/2次元)【For文で取得】 VBAで高速処理に欠かせない配列処理 ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。 大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、 ...2023.01.122023.06.120配列(一次元/二次元)
配列(一次元/二次元)配列の値を取得する(1次元/2次元)【ForEach文で取得】 VBAで高速処理に欠かせない配列処理 ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。 大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、 ...2023.01.112023.06.120配列(一次元/二次元)
配列(一次元/二次元)二次元配列で条件に該当した行を 別の配列にコピーする【ExcelVBA】 二次元配列内の要素で一致した行だけ別の配列にコピーしたい(抜き出ししたい)場合があります。 単純にFor~Loopで処理し、別の配列にコピーします。 条件に該当した行を抜き出しするサンプルコード サン...2021.06.300配列(一次元/二次元)
配列(Dictionary)Dictionaryにキーが存在するかチェックする【Existsメソッド】【ExcelVBA】 構文 object.Exists ( key ) as Boolean key ・・・ 指定した内容がDictionaryのキーに存在してるかチェックする。【必須】 戻り値・・・True→存在す...2021.04.182021.12.230配列(Dictionary)
配列(Dictionary)Dictionaryにキーと要素を追加する【Addメソッド】【ExcelVBA】 構文 object.Add key, item key ・・・追加する引数 item と紐づける引数 key を指定。【必須】item ・・・追加する引数 key と紐づける引数 item ...2021.04.172021.12.230配列(Dictionary)
配列(一次元/二次元)一次元配列の要素の合計値を求める【ExcelVBA】 一次元配列の要素の合計値を求めたい 一次元配列の要素を全て足したい(ExcelのSum関数の動き)ケースがあります。 VBAには全ての要素を足す専用の関数は用意されていないので、Excel関数(Sum...2021.04.152021.07.040配列(一次元/二次元)
配列(一次元/二次元)二次元配列をランダムに並び替える処理をパーツ化する【Rnd関数】【ExcelVBA】 二次元配列をランダムに並び替えたい ランダムに並び替えるのに、特に難しい処理をしているわけではありません。 下記手順で並び替え可能です。 ①二次元配列の列を一つ増やす。 ②Rnd関数でランダムな値(乱...2021.03.072022.01.032配列(一次元/二次元)
配列(一次元/二次元)一次元配列で〇番目の指定要素を削除する【ExcelVBA】 配列内の指定した要素を、削除したい場合があります。 ■削除例 重複したデータを削除したい場合はDictionaryステートメントで削除が可能です。 配列内で指定した文言の要素を抜き出したい場合はFor...2020.11.282021.04.180配列(一次元/二次元)
配列(一次元/二次元)配列で条件に「完全一致」した要素を取得する【ExcelVBA】 配列内の要素を、完全一致で検索したい場合があります。 Dictionaryの連想配列へ格納して検索した方が高速ですが、コード内の値の重複が許可されません。 ここでは単純にFor~Loopで処理する形を...2020.11.272021.04.180配列(一次元/二次元)
配列(一次元/二次元)配列から空白(Empty)を削除する【ExcelVBA】 セルを配列に取り込んだ際、空白が入り込んでしまった場合など、 空白を削除したい場合があります。 除去したいものがEmptyもしくは空文字列の場合は以下のコードで取り除くことが可能です。 配列から空白を...2020.11.262022.08.160配列(一次元/二次元)