電子書籍の厳選無料作品が豊富!

マクロで自動的に計算式に値を取得させsheet1にある基データを
sheet2に等間隔で出力させたいのですが・・・うまくいきません。
最終的にはこれをループさせsheet1の全てのデータを等間隔で
sheet2の方へもたせる予定です。

[sheet1]          [sheet2]
  A   B   C        A     B     C
1  りんご         りんご
2  みかん
3  なし          みかん
4  ・・・
5  ・・・          なし
6  ・・・                   

sheet2のA1に計算式「=sheet1!$A1」を入れ、それをコピーして
A3、A5にペーストすると計算式が上手く反映されず、ずれてしまいます。

希望としては・・・
A3には「=sheet1!$A2」となりsheet1のA2の「みかん」
A5には「=sheet1!$A3」となりsheet1のA3の「なし」

が入るようにしたいのですが、上手くいきません。また、
sheet1のデータ量も多いのでマクロでの処理を考えています。

いろいろ検索してみたのですが上手く処理ができませんでしたので
こちらで質問させていただきました。

よろしくお願いします。

A 回答 (2件)

どんな数式を記入すれば1行おきに参照させられるのか、考えます。


sub macro1()
 dim lastrow as long
 lastrow = worksheets("Sheet1").range("A65536").end(xlup).row
 worksheets("Sheet2").range("A1").formula = "=INDEX(Sheet1!A:A,ROW(A2)/2)"
 worksheets("Sheet2").range("A1:A2").copy worksheets("Sheet2").range("A1").resize(lastrow * 2, 1)
end sub


もっともマクロを使うなら、考えていた通りの数式を「書かせる」事も容易です。
sub macro2()
 dim r as long
 for r = 1 to worksheets("Sheet1").range("A65536").end(xlup).row
  worksheets("Sheet2").cells(r * 2 - 1, "A").formula = "=Sheet1!A" & r
 next r
end sub
    • good
    • 0
この回答へのお礼

無事組めました。ありがとうございました。
まだまだ勉強していかなくては!と感じました。

お礼日時:2013/04/07 20:52

Sub ボタン1_Click()


For i = 1 To Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet2").Range("A" & i * 2 - 1).Value = Sheets("Sheet1").Range("A" & i).Value
Next
End Sub

こんな感じでしょうか。
    • good
    • 0

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