Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3231 / 13644 ツリー ←次へ | 前へ→

【63400】配列処理 はちおうじ 09/10/31(土) 10:42 質問[未読]
【63401】Re:配列処理 よろずや 09/10/31(土) 11:22 発言[未読]
【63403】Re:配列処理 はちおうじ 09/10/31(土) 13:53 質問[未読]
【63404】Re:配列処理 よろずや 09/10/31(土) 20:38 回答[未読]
【63405】Re:配列処理 りん 09/10/31(土) 20:47 回答[未読]
【63406】Re:配列処理 はちおうじ 09/11/1(日) 0:01 お礼[未読]

【63400】配列処理
質問  はちおうじ  - 09/10/31(土) 10:42 -

引用なし
パスワード
   お世話になります。

sheet1のA1からAA1000までデータがあり

まず、Sheet1のデータを配列に格納し、
その配列から2行飛ばしで、別の配列に格納しその配列データを
Sheet2に貼り付ける方法です。

Sheet2に張り付ける際は、一気に書きだすようなプログラムに
なればよいです。

まる投げの形になり、大変申し訳ありませんが、アドバイスの方よろしくお願いします。

【63401】Re:配列処理
発言  よろずや  - 09/10/31(土) 11:22 -

引用なし
パスワード
   配列の勉強でしょうか。

このケースでは、1行ずつコピペするプログラムを書いた方がよろしいかと。

【63403】Re:配列処理
質問  はちおうじ  - 09/10/31(土) 13:53 -

引用なし
パスワード
   ▼よろずや さん:
>配列の勉強でしょうか。
>
>このケースでは、1行ずつコピペするプログラムを書いた方がよろしいかと。

お世話になります。
Sheet2にあるデータを配列に取り込み、Sheet3に書き出すプログラムとして
試しに以下を作ってみましたが、Sheet3には、sheet2の一行目の内容が貼りついており、そのあとはN/Aになっています。
2行目には、データは貼り付けられていません。

どこを修正すればよいか教えてください。


Sub test()
 Dim Gyo As Long, Retu As Long
 Dim AllCells As Variant

 Worksheets("Sheet2").Activate

 ' ---変数にセル範囲を取り込む
 AllCells = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("D3").End(xlToRight).Column))

 ' ---何らかの処理
 For Gyo = 1 To UBound(AllCells, 1)
   For Retu = 1 To UBound(AllCells, 2)
     AllCells(Gyo, Retu) = AllCells(Gyo, Retu)*0.01
   Next Retu
 Next Gyo

 ' ---セル範囲に一気に書き戻す
 Worksheets("Sheet3").Activate
 
 Range(Cells(1, 1), _
   Cells(Range("A65536").End(xlUp).Row, _
      Range("D3").End(xlToRight).Column)) = AllCells
End Sub

【63404】Re:配列処理
回答  よろずや  - 09/10/31(土) 20:38 -

引用なし
パスワード
   ▼はちおうじ さん:
> Range(Cells(1, 1), _
>   Cells(Range("A65536").End(xlUp).Row, _
>      Range("D3").End(xlToRight).Column)) = AllCells
書き戻すセル範囲を Sheet3 のデータ範囲を元に計算していますが
AllCells の大きさを元に計算しましょう。

【63405】Re:配列処理
回答  りん E-MAIL  - 09/10/31(土) 20:47 -

引用なし
パスワード
   はちおうじ さん、こんばんわ。

>sheet1のA1からAA1000までデータがあり
>まず、Sheet1のデータを配列に格納し、
>その配列から2行飛ばしで、別の配列に格納しその配列データを
>Sheet2に貼り付ける方法です。
>
>Sheet2に張り付ける際は、一気に書きだすようなプログラムに
>なればよいです。

Sub test()
  Dim r1 As Variant
  Dim r2(1 To 334, 1 To 1) As Variant
  '一括取り込み
  r1 = Worksheets("Sheet1").Range("A1:A1000").Value
  For II = 1 To 1000 Step 3
   JJ = JJ + 1
   r2(JJ, 1) = r1(II, 1)
  Next
  '一括書き出し
  Worksheets("Sheet2").Range("A1:A334").Value = r2
  Erase r1, r2
End Sub

こんな感じ?

【63406】Re:配列処理
お礼  はちおうじ  - 09/11/1(日) 0:01 -

引用なし
パスワード
   ▼よろずや さま
▼りん さま

ありがとうございました。
うまくいきました

3231 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free