ここから本文です

VBAの配列について質問です。

aco********さん

2020/1/418:03:19

VBAの配列について質問です。

下のコードでエクセルの範囲Range("A1:C10")を配列にして、
エクセルで言うところのRange("A5:C6")を配列から取り出して
Range(A11:C12)に書き出したいのですがどのように書けばいいでしょうか?

Sub test()
Dim arr As Variant

arr = Range("A1:C10")

End Sub

閲覧数:
72
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

iru********さん

2020/1/419:39:35

Option Explicit
Sub test()
Dim arr As Variant
arr = Range("A1:C10").Value
Dim ar2(1 To 2, 1 To 3) As Variant, Row As Long, Col As Long
For Row = 1 To 2
For Col = 1 To 3
ar2(Row, Col) = arr(Row + 4, Col)
Next Col
Next Row
Range("A11:C12").Value = ar2
End Sub

ではいかが。

質問した人からのコメント

2020/1/5 10:30:14

できました。
配列は勉強し始めたばかりなのでみなさんに教えていただいたコードを参考に
理解を深めていきたいと思います。
ありがとうございました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

2020/1/509:30:25

もし仮にですがセル範囲(A1:C10)のデータの中から任意の範囲にあるデータを取り出したいと言うのであれば、
全体のデータを配列にして必要な個所を抽出するよりかは最初から抽出したい範囲を選び出すよう作った方が楽なのでは?

そもそも今回は5・6行目のデータとなってますが、目的はここを任意に変更したいのではないのでしょうか?

30246kikuさん

2020/1/509:27:11

以下でどうなりますか

Samp1:
複数セルを配列として読み込むと、配列添え字は 1 ~ になりますが、
配列添え字は 1 ~ もしくは 0 ~ 始めるルールは無いかと
例では、配列添え字が 5 ~ 6 の配列を作って、
単にデータを移して
書き出す時に要素数を求めて、その範囲を書き出すでも・・・

Samp2:
読み込んだ配列を潰して良いのなら、
書き出したい範囲を先頭に移して・・・

どうなりますか


Option Explicit

Public Sub Samp1()
   Dim vA As Variant, vR As Variant
   Dim i As Long, j As Long
   Const CRS As Long = 5, CRE As Long = 6

   vA = Range("A1:C10").Value
   ReDim vR(CRS To CRE, 1 To UBound(vA, 2))

   For i = CRS To CRE
      For j = 1 To UBound(vR, 2)
         vR(i, j) = vA(i, j)
      Next
   Next

   i = CRE - CRS + 1
   Range("A11").Resize(i, UBound(vR, 2)).Value = vR
End Sub


Public Sub Samp2()
   Dim vA As Variant
   Dim i As Long, j As Long, k As Long
   Const CRS As Long = 5, CRE As Long = 6

   vA = Range("A1:C10").Value

   k = 0
   For i = CRS To CRE
      k = k + 1
      For j = 1 To UBound(vA, 2)
         vA(k, j) = vA(i, j)
      Next
   Next

   Range("A11").Resize(k, UBound(vA, 2)).Value = vA
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる