10代と話して驚いたこと

マクロ初心者です。
For文で、変数を2つ定義し、それぞれが1つずつ増えてくれるような
マクロを組みたいのですが、うまくいきません。
例えばA列の並んだ数字を、B列に一個とばしで入力するとして・・・

例)
Dim i As Integer
Dim j As Integer
For j = 2 To 10 Step 2
For i = 1 To 9
Cells(j, 2).Value = Cells(i, 1).Value
Next i, j

ではだめですよね。iが1つ増える時に、jも1つ増える、
というようにVBAを組むことが可能なのでしょうか?

ど素人な質問ですみませんが、教えてください。

A 回答 (4件)

> A9の値→B85に といった具合なんです。



A9の値は、B50 と思いますが ?
データがもっとあった場合、A16の値が、B85では ?

1つの変数の場合

Sub test()
Dim Rw As Long
For Rw = 1 To 9
  Cells(Rw * 5 + 5, 2).Value = Cells(Rw, 1).Value
Next
End Sub


普通は、変数 2つで

Sub test2()
Dim Rw As Long
Dim WRw As Long
WRw = 10
For Rw = 1 To 9
  Cells(WRw, 2).Value = Cells(Rw, 1).Value
  WRw = WRw + 5
Next
End Sub
    • good
    • 0

No.1です。



> 実際には、
> A1の値→B10に
> A3の値→B15に
> A5の値→B30に
> :
> A9の値→B85に
>
> といった具合なんです。

B列の行の規則性が良く判りませんが、単純に15づつ増えると言うわけではないのですね。どういう規則性があるのか判れば、的確な答えが得られると思います。
例をもう少し挙げて見てください
    • good
    • 0

こんな感じでしょうか


Aは初期値から2づつ増加、Bは初期値から15づつ増加
(例とBが10ずれていますが)
Sub test()
Dim i As Long
Dim lngAS As Long
Dim lngBS As Long
lngAS = 1
lngBS = 10
For i = 1 To 10
Cells(lngBS + (i - 1) * 15, 2).Value = Cells(lngAS + (i - 1) * 2, 1).Value
Next i
End Sub
    • good
    • 0

A1の値→B2に


A2の値→B4に

A9の値→B18に

と、言うことですか?
それなら1つの変数を使いまわせば良いですよ。

Dim i As Integer
For i = 1 To 9
Cells(i*2, 2).Value = Cells(i, 1).Value
Next i

この回答への補足

早速のお返事ありがとうございます。
言葉足らずですみません。
実際には、
A1の値→B10に
A3の値→B15に
A5の値→B30に

A9の値→B85に

といった具合なんです。
片方がSTEP2、片方がSTEP15なので
(自分のしょぼい脳ミソでは)1つの
変数でうまく組めなかったもので・・・
この場合はいかがでしょうか?

補足日時:2008/12/16 06:52
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A