【Excelマクロ】セルの値をループ使わず結合する方法
Excelマクロでセルデータを配列にして取得することは簡単なのですが、2次元配列になってしまうのでちょっと不都合が出てきます。例えば区切り文字で結合するときなど。Forループを用いれば簡単ですが処理速度を気にする場合はなるべくループは使いたくないところです。
そこで今回は、セルデータ→2次元配列→1次元配列化→結合という処理をループを使わずやってみようと思います。
横列データの結合
横方向のデータを取得して結合する場合は以下のソースコードとなります。最初にセルデータを取得する際に2行分持ってくるところがミソになります。じゃないとIndex関数でエラーになります。
Set mySheet = ActiveSheet '2行目まで取得するところがミソ d1 = mySheet.Range("A1:H2").Value '1行目だけ抜き出して一次配列に d2 = WorksheetFunction.Index(d1, 1) '結合 dd = Join(d2, ",") MsgBox dd
実行結果はこちら。うまく結合できました。
縦列データの結合
縦列の場合は以下の通り。Transpose関数で行列逆転させることで可能になります。
Set mySheet = ActiveSheet '2列目まで取得するところがミソ d1 = mySheet.Range("A1:B5").Value '行列反転させて1行目だけ抜き出して一次配列に d2 = WorksheetFunction.Index(WorksheetFunction.Transpose(d1), 1) '結合 dd = Join(d2, ",") MsgBox dd
実行結果はご覧のとおりです。
スポンサーリンク