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

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

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

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

配列

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

Q&A

解決済

1回答

15567閲覧

ExcelのVBAで、2次元配列の列番号を1つ指定して、指定したセルに一括で貼り付ける方法がわかりません。

Ker1Wxg9hggXaKN

総合スコア1

VBA

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

配列

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

0グッド

0クリップ

投稿2020/07/06 08:24

前提・実現したいこと

ExcelのVBAで、2次元配列を宣言し、指定した1つの列番号の要素の値を、指定したセルに一括で貼り付けたいです。
ソースコード全体で、For文をなるべく使わない方法を探しています。
1次元配列に2次元配列の1列分の要素を格納してから一括で貼り付ける、という方法はなしでお願いします。

ExcelVBAを勉強し始めて1か月ほどの初学者です。

該当のソースコード

ここでは、2次元配列の2列目を「C3:C6」のセルに一括で貼り付けることを試みています。
2列目を指定する方法がわからないため、2次元配列を一括で貼り付けているという処理になってしまっています。

VBA

1Sub Test() 2 Dim tmp(1 To 4, 1 To 3) As Integer 3 4 tmp(1, 1) = 1 5 tmp(2, 1) = 2 6 tmp(3, 1) = 3 7 tmp(4, 1) = 4 8 9 tmp(1, 2) = 5 10 tmp(2, 2) = 6 11 tmp(3, 2) = 7 12 tmp(4, 2) = 8 13 14 tmp(1, 3) = 9 15 tmp(2, 3) = 10 16 tmp(3, 3) = 11 17 tmp(4, 3) = 12 18 19 '2次元配列の2列目の要素を一括で貼り付ける 20 Range("C3:C6") = tmp 21 22End Sub 23

試したこと

2次元配列の要素を一括で貼り付ける方法はすぐに出てくるのですが、1列を指定してその列を一括で貼り付ける方法が、1時間ほど調べてもどうにもわかりませんでした。

ご回答よろしくお願いいたします。

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

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

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

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

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

meg_

2020/07/06 08:52

for文が駄目な理由を教えてください。
Ker1Wxg9hggXaKN

2020/07/06 08:58

ご指摘ありがとうございます。 For文を使って、特に貼り付けの処理を行うと処理速度が遅くなると考えられるためです。 ここでは簡略してソースコードを示しましたが、実際はもっと大きなものになります。
guest

回答1

0

ベストアンサー

下記でどうでしょう。

vba

1Sub Test() 2 Dim tmp(1 To 4, 1 To 3) As Integer 3 4 tmp(1, 1) = 1 5 tmp(2, 1) = 2 6 tmp(3, 1) = 3 7 tmp(4, 1) = 4 8 9 tmp(1, 2) = 5 10 tmp(2, 2) = 6 11 tmp(3, 2) = 7 12 tmp(4, 2) = 8 13 14 tmp(1, 3) = 9 15 tmp(2, 3) = 10 16 tmp(3, 3) = 11 17 tmp(4, 3) = 12 18 19 '2次元配列の2列目の要素を一括で貼り付ける 20 Range("C3:C6").Value = WorksheetFunction.Index(tmp, 0, 2) 21 22 '2次元配列の2行目の要素を一括で貼り付ける 23 Range("A1:C1").Value = WorksheetFunction.Index(tmp, 2, 0) 24End Sub

WorksheetFunction.Index メソッド (Excel) | Microsoft Docs

ループで一次元配列に取り出す方法と比べて速度的に改善できるかどうかは検証してないのでわかりません。

投稿2020/07/06 13:36

編集2020/07/06 13:44
hatena19

総合スコア33715

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

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

Ker1Wxg9hggXaKN

2020/07/06 14:04

できました!感動しました… 大変ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問