質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JOIN

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2712閲覧

VBA 配列 JOIN関数の質問

cd987456

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JOIN

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/07/11 06:51

SHEETS(1)のA列とB列をカンマで結合し、SHEETS(2)のA列に記載しようとしています。
例えば
SHEETS(1)
A1セル・・東京都 B1セル・・新宿区
A2セル・・大阪府 B2セル・・大阪市
SHEETS(2)
A1セル・・東京都,新宿区
A2セル・・大阪府,大阪市

データ量はかなり多く、数万行くらいです。
できるだけ早く処理できるようなコードにしたいです。

配列とJOIN関数を使う方法が早そうなので他のサイトを参考に記載してみました。

Sub SAMPLE() Dim i As Long Dim j As Long Dim str As String Dim ary Dim ary2() As String Dim MAXROW As Long With Sheets(1) With .Range("A1").Cells(Rows.Count, 1).End(xlUp) MAXROW = .Row End With ary = .Range(.Cells(1, 1), .Cells(MAXROW, 2)) ReDim ary2(1 To UBound(ary, 1) * UBound(ary, 2)) For i = LBound(ary, 1) To UBound(ary, 1) For j = LBound(ary, 2) To UBound(ary, 2) ary2((i - 1) * UBound(ary, 2) + j) = ary(i, j) Next Next str = Join(ary2, ",") End With With Sheets(2) .Range(.Cells(1, 1), .Cells(MAXROW, 1)) = str End With End Sub

実行してみるとSHEETS(2)のA1セル(以降のセル全て)に”東京都,新宿区,大阪府,大阪市”とSHEETS(1)のA2セル以降の内容も
入ってしまいます。

修正したいのですが、コードがよく分かりません。
教えて下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

速いかわかりませんが…。
sheet1のコードに貼り付けて実行してください。

VBA

1Sub test() 2 Dim ab As Variant 3 Dim csv As Variant 4 Dim maxrow As Long 5 6 maxrow = Range("A1").End(xlDown).Row 7 ReDim csv(maxrow, 1) 8 ab = Range("A1:B" & maxrow) 9 10 For i = 1 To maxrow 11 csv(i - 1, 0) = ab(i, 1) & "," & ab(i, 2) 12 Next 13 Worksheets(2).Range("A1:A" & maxrow) = csv 14End Sub 15

投稿2017/07/11 07:34

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cd987456

2017/07/11 08:22

早速の御回答ありがとうございます。 上手く処理できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問