アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sub test1()
With Range("G2:G13")
  .Formula = "=VLOOKUP(A2&""_""&E2,data貼り付け!A:L,8,FALSE)"
 End With
End Sub
上記のようにG2からG13まで(12行)VLOOKUP関数を入力という処理をしています
この処理が終わったら2行下(G15)に移動し、G15~G26(12行)まで上記の関数を貼り付ける
というものを4459行目まで繰り返したいのです。

こちらは初心者ですので何卒お願い致します

A 回答 (6件)

No.2・3です。



たびたびごめんなさい。
もっと簡単な数式で大丈夫です。
前回のコードは消去し
↓のコードに変更してください。

Sub Sample2()
Dim i As Long, myRng As Range, wS As Worksheet
Set wS = Worksheets("data貼り付け")
Set myRng = Range("G2").Resize(12)
For i = 2 To 4448 Step 13
If myRng Is Nothing Then
Set myRng = Cells(i, "G").Resize(12)
Else
Set myRng = Union(myRng, Cells(i, "G").Resize(12))
End If
Next i
myRng.Formula = "=VLOOKUP(A2&""_""&E2,data貼り付け!A:L,8,FALSE)"
End Sub

どうも失礼しました。m(_ _)m
    • good
    • 0

No.1です。

回答も出てきたようなので
Sub test5()
   Dim i As Long
   For i = 2 To 4448 Step 13
       Range("G" & i & ":G" & i + 11).FormulaR1C1 = _
       "=VLOOKUP(RC[-6]&""_""&RC[-2],data貼り付け!C[-6]:C[5],8,FALSE)"
   Next
End Sub

とか

Sub test6()
   Dim i As Long
   Dim Rng As Range
   Set Rng = Range("G2:G13")
   For i = 15 To 4448 Step 13
   Set Rng = Union(Rng, Range("G" & i & ":G" & i + 11))
   Next
   Rng.FormulaR1C1 = _
       "=VLOOKUP(RC[-6]&""_""&RC[-2],data貼り付け!C[-6]:C[5],8,FALSE)"
End Sub
    • good
    • 0

ループで行うなら下記test1のようになると思います。

VLOOKUPの式にも手を入れないと正しい結果が得られないので、呪文のようになってしまいます。
ループに拘らなければ、test2でもできます。G2:G14を範囲選択して、G4459までオートフィルするイメージです。

Sub test1()
Dim i As Long
For i = 2 To 4448 Step 13
With Range("G" & i & ":G" & i + 11) '←i=2の場合、"G2:G13"になります。
.Formula = "=VLOOKUP(A" & i & "& ""_""&" & "E" & i & ",data貼り付け!A:L,8,FALSE)"
End With
Next i
End Sub

Sub test2()
With Range("G2:G13")
.Formula = "=VLOOKUP(A2&""_""&E2,data貼り付け!A:L,8,FALSE)"
End With
Range("G2:G14").AutoFill Destination:=Range("G2:G4459"), Type:=xlFillDefault
End Sub
    • good
    • 0

No.2です。



投稿後気づきました。
コード内の
>myRng.Select
の行は不要でした。
消去してください。
(確認の意味で入れていただけです)m(_ _)m
    • good
    • 0

こんにちは!



G列には計算結果ではなく、数式を残したいのですね?
一例です。

Sub Sample1()
Dim i As Long, myRng As Range
Set myRng = Range("G2").Resize(12)
For i = 15 To 4448 Step 13
Set myRng = Union(myRng, Cells(i, "G").Resize(12))
Next i
myRng.Formula = "=VLOOKUP(INDIRECT(""A""&ROW())&""_""&INDIRECT(""E""&ROW()),data貼り付け!A:H,8,False)"
myRng.Select
End Sub

※ VLOOKUP関数の入れ子に他の関数が入っていますが、
結果としてはVLOOKUP関数がそのまま入っています。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

G14,G27,G40・・・G4447セルはすべて何か入力されているのですか?


入力されていないなら、後から消す方が処理が早そうです
すべて入力されているなら、入力されていないセルを選択して
入力させれば良いので、
繰り返し構文が必要なさそうです。
数式の入力が目的ではなく、質問のような繰り返し構文を勉強したいのでしょうか
FOR i=2 to 4448 step 13
みたいな
http://excelvba.pc-users.net/fol6/6_3.html
    • good
    • 0

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