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

いつもお世話になっております。
配列について教えてください。
EXCELは2016を使用しています。

大元のシート:sheet1 項目行:2
貼付けいシート:sheet2 項目行:2
sheet1の3行目からB列最終行までで
B列の最後が "W"、C列の最後が "port" になっているものを
↓の列通りにsheet2に貼り付けたいです。
下記のコードでできることはできたんですが、完了するまでに時間がかかり、100行くらいしかないものでも20秒以上かかります。
もっと早くできる方法はありますでしょうか?
Rangeを使えば早いのかと思いましたが、自分じゃかけず、、、
アドバイスよろしくお願いします。

sheet2 列 = sheet1 列
A列    = C列
B列    = A列
C列    = B列
D列    = AA列
F列    = G列

sheet1 
Sub sample()
Application.ScreenUpdating = False

Dim i As Long, k As Long
Dim cnt As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim myRng As Range
Dim myAry1, myAry2

Set sh1 = Sheets("sheet1") '大元のデータ
myAry2 = Array(3, 1, 2, 27, 7) 'C,A,B,AA,G列

Set sh2 = Sheets("sheet2") '出力先
myAry1 = Array(1, 2, 3, 4, 6) 'A,B,C,D,F列

cnt = 3 '貼り付け行

With sh2
For i = 3 To sh1.Cells(Rows.Count, "B").End(xlUp).row 'A3~最終行まで

If sh1.Cells(i, 2) Like "*w" Or sh2.Cells(i, 3) Like "*port" Then
For k = 0 To UBound(myAry1)
.Cells(cnt, myAry2(k)).Value = sh1.Cells(i, myAry1(k)).Value '★★
Next k
cnt = cnt + 1
End If

Next i
End With

MsgBox "完了しました"
Application.ScreenUpdating = True
End Sub

A 回答 (11件中11~11件)

>sheet1の3行目からB列最終行までで


>B列の最後が "W"、C列の最後が "port" になっているものを

これと

>If sh1.Cells(i, 2) Like "*w" Or sh2.Cells(i, 3) Like "*port" Then

これがリンクしないように思えるのですが?
一応正常に動いたのですよね?(遅かったとしても)
    • good
    • 0

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