![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
配列について教えてください。
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
No.1
- 回答日時:
>sheet1の3行目からB列最終行までで
>B列の最後が "W"、C列の最後が "port" になっているものを
これと
>If sh1.Cells(i, 2) Like "*w" Or sh2.Cells(i, 3) Like "*port" Then
これがリンクしないように思えるのですが?
一応正常に動いたのですよね?(遅かったとしても)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
VLOOKUPの列番号の最大は?
-
VBA 指定した列にある日時デー...
-
VBAで結合セルを転記する法を教...
-
エクセルで複数列の検索をマク...
-
エクセル マクロ 範囲指定で...
-
ListViewで列を指定して表示さ...
-
再質問です。マクロの修正箇所...
-
エクセルマクロの組み方
-
エクセル マクロ 範囲の値を上...
-
横軸を日付・時間とするグラフ化
-
csvデータの列の入れ替えができ...
-
エクセルマクロPrivate Subを複...
-
エクセル 重複したデータを別...
-
VBA配列 列を指定する方法について
-
VBAで重複データを合算したい(...
-
エクセル 重複 隣の列 一番...
-
エクセルのソートで、数字より...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Alt+Shift+↑を一括で行うには、...
-
エクセルで住所を県と市・郡と...
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
VBAで結合セルを転記する法を教...
-
エクセルマクロPrivate Subを複...
-
エクセルマクロの組み方
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
エクセルで最初の行や列を開け...
-
エクセルでセル12個間隔で合...
-
エクセル マクロ 範囲指定で...
おすすめ情報