プロが教える店舗&オフィスのセキュリティ対策術

配列で行いたい。
シート1A列からZ列までのテーブルがあります。
これを配列に入れて特定列のデータをシート2へ貼り付けたいです。
シート1Y列→シート2A列へ
シート1D列→シート2B列へ
シート1K列→シート2C列へ

ただ、シート2は値が既に入っています。
A列50行目までデータが入っていれば51行目から貼り付ける。
シート2は各列に値が入っています。
その続きからデータを貼り付けたいです。

マクロコードを教えてください。

A 回答 (5件)

おはようございます。



配列に入れて、その後、何か使う予定なのでしょうか?
特に使う予定がなく、データだけでしたら、下記の様に記載すれば、
目標が達成できそうですが。

シート1のY1~Y100のデータを、シート2のA51~A150にコピー
Sheet(Sheet2).Range("A51:A150").Value = Sheet(Sheet1).Range("Y1:Y100").Value
    • good
    • 0
この回答へのお礼

ありがとうございます。
配列に入れて、その後の処理にも使用しようかと考えています。

お礼日時:2022/02/14 13:03

シート1がどのようになっているのか不明ですかね。


1行目に項目行があって2行目から最終行(各列同じ?)までを転記なのでしょうか?
    • good
    • 0

No.1の者です。



配列ですと、下記の様な感じでしょうか?
Sub 配列のテスト()
Dim myDat As Variant
myDat = Sheet(Sheet1).Range("Y1:Y100").Value
Sheet(Sheet2).Range("A51:A150").Value = myDat
End Sub

シートD列~Y列まで一括で取得も可能ですが、その後の処理が面倒に
なるので、使うところをそれぞれ取得した方が楽かと思います。
参考になりそうな記事を載せておきます。
https://kosapi.com/post-3209/
    • good
    • 0

あれ?


シート2ってデータを蓄積していくから最終行は変動すると感じたのですが違いますかね。
初心者の勘違いかな?
    • good
    • 0

こんにちは



内容に良くわからない点があるので、以下は、適当ですけれど・・・

>シート1A列からZ列までのテーブルがあります。
テーブルの範囲は、A1セルの CurrentRegion で取得できるものと仮定しました。
レイアウトの実態が不明なので、無駄なチェックを何か所か入れてあります。

>配列で行いたい。
No1様のご回答のように、配列を用いる必要がまったくないので、配列は使用していません。

>配列に入れて、その後の処理にも使用しようかと考えています。
無暗にメモリを使用するよりも、「その後の処理」の際に必要な範囲だけ配列に入れれば宜しいでしょう。

ご希望とは違うだろうとは思いますが、文章からわかる範囲での解釈ですので、違う部分は適宜修正してください。
以下、ご参考までに。

Sub Sample()
Dim s, r, c0, c1, i
Const sht = "YDK"
Set s = Worksheets("シート1")
Set r = s.Cells(1, 1).CurrentRegion

For i = 1 To Len(sht)
 Set c0 = s.Columns(Mid(sht, i, 1))
 Set c1 = Worksheets("シート2").Cells(Rows.Count, i).End(xlUp)
 If c1 <> "" Then Set c1 = c1.Offset(1)
 If r.Columns.Count >= c0.Column Then
  c1.Resize(r.Rows.Count).Value = Intersect(r, c0).Value
 End If
Next i
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます!

お礼日時:2022/02/14 16:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!