【お題】王手、そして

セルに+12の間隔で他のセルを参照したい時
ドラッグして入力を簡単にするため下の"D1"の数字の部分を変数化するには、どのように記述すればいいのでしょうか?D(x+12)となるようなイメージです

_____ A_____B_____C_____D_____E
_1__|=D1__|____|______|__45_|__1
_2__|=D13|____|______|_____|__13
_3__|=D25|____|______|_____|__25
_4__|=D37|____|______|_____|__37
:
1000|=D?_|____|______|_____|___

または別のところ(例えばE1,E2,E3,E4...)に数列(1,13,25,37...)をつくり(これはドラッグすれば簡単にできるので)D(E1),D(E2),D(E3)...とドラッグしてゆくような感じのやり方はないでしょうか?

A 回答 (5件)

他のセルを使ったり、VBAを使わなくてもセルA1に



=INDIRECT("D"& (ROW()-1)*12+1)

を入れて下へ必要分フィルハンドルコピーすればOKです。
    • good
    • 0

#1のものです。

#3でご指摘の通り、A1は=D1でスタートするために、For i = 1 To 5 ---->For i = 0 To 5のように修正してください。考え方・方法には修正
する必要はないと思います。
    • good
    • 0

初めまして。

#1さんのご回答だとA1にD13の値が入力されてしまいます。貴方様はA1にD1の値・A2にD13の値・A3にD25の値・・・を入力されたいのであれば、次のような操作方法で実行することができます。

・新規ブックを開き、ALT+F11キーを押してVBE画面を表示させ、画面左上のVBAProjectと書かれている下のSheet1をダブルクリックして表示された画面の右側の白い部分に下記のコードをコピー&ペーストする。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRow As Integer
Dim i As Integer

myRow = Target.Row
If Target.Address <> Cells(myRow, 1).Address Then Exit Sub
For i = 1 To CInt(Range("A1").Value)
If i = 1 Then
Cells(i, 1).Formula = "=D1"
Else
Cells(i, 1).Formula = "=D" & (i * 12 + 1)
End If
Next i

End Sub

操作方法

上記のコードを貼り付けし終えたら、ALT+F11キーを押してエクセルの画面にもどり、シート1のA1に式を入れたいA列の最終行の行番号(例えばA10まで式を入力したいのであれば、10と入力)し、エンターキー等でA1を抜けだす。その時点でマクロが走り、指定した最終行まで式が自動的に入力されます。

ご不明な点・不具合等がありましたらご遠慮なくお知らせ下さい。私のわかる範囲でご一緒に考えていきたいと思います。
    • good
    • 0

A1に、=indirect("D"&E1)と入力し、下のほうにドラッグすればできます。

    • good
    • 0

この問題はVBA利用が簡単で良い。


Sub test01()
For i = 1 To 5
Cells(i, 1).Formula = "=d" & (i * 12 + 1)
Next i
End Sub
を実行すると出来る。i = 1 To 5の部分を,1000行までならi = 1 To 1000に変えてください。
VBAがはじめてなら、本を読んで頂くか、要求あれば補足します。
    • good
    • 0

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


おすすめ情報