【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
実行結果はご覧のとおりです。
スポンサーリンク

