top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

TransposeN1toArray1D|縦1列の2次元配列を型を保持したまま一次元配列へ変換(転置) | Excel VBA

TransposeN1toArray1D|縦1列の2次元配列を型を保持したまま一次元配列へ変換 | Excel VBA


<概要 (転置)>

 TransposeN1toArray1D は、Nx1(縦一列)の二次元配列を、要素の型を保持したまま一次元配列へ変換(転置)するための汎用プロシージャです。


Excel VBA では WorksheetFunction.Transpose を使用すると、日付型や数値型が文字列に変換されてしまうという問題があります。

特に日付配列を扱う処理や、後続で計算・比較処理を行う場合、この型変換は致命的な不具合の原因になります。


本プロシージャは以下の特徴を持っています。


・Nx1 形式の二次元配列専用(縦一列)

・Date / Double / Long などの型を保持

・要素が Object(Range や Class 等)の場合も対応

・開始インデックスが 1 の配列のみを受け付け、安全性を重視


「WorksheetFunction.Transpose の代替として、安全に配列変換したい」という場面で、汎用的に利用できる関数です。


<実行例>

 実行例のサンプルコードは次の通りです

  

 実行結果のイミディエイトウィンドウは次のようになります。



イミディエイトウィンドウの実行結果
イミディエイトウィンドウの実行結果

 

 実行結果を見ると、TransposeN1toArray1D とWorksheetFunction.Transpose の挙動の違いが明確に分かります。


TransposeN1toArray1D を使用した場合、各要素は Date 型のまま一次元配列へ格納されます。

そのため、日付計算や比較処理をそのまま続けて行うことが可能です。


一方、WorksheetFunction.Transpose を使用した場合、Date 型の要素が String 型に変換されてしまいます。

見た目は日付でも、内部的には文字列となるため、後続処理でエラーや想定外の挙動を引き起こします。


「配列の形を変えるだけで、要素の型は変えたくない」という要件に対して、TransposeN1toArray1D は安全に利用できる実装となっています。


<関連コード>

 今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。


<関連記事>

 今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。

 コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。


<コード>


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page