質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1141閲覧

配列に入れた行を別シートに貼り付け

yosida11

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/05/17 14:48

Sub test()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng As Range
Dim adr As String
Dim arr() As Long
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
Set rng = ws2.Columns(2).Find("100")
If rng Is Nothing Then
MsgBox "見つかりませんでした。"
Exit Sub
Else
adr = rng.Address
ReDim arr(1)
arr(1) = rng.Row
End If

Do
Set rng = ws2.Columns(2).FindNext(After:=rng)
If rng.Address = adr Then
Exit Do
Else
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = rng.Row
End If
Loop

End Sub

ネットから拾ったこコードを変えてsheet2のB列にある100という文字を見つけて配列に入れています
配列に入れた行をSheet1の二行目から行を挿入しながら貼り付けたいのですが教えていただけませんか
その時に2列目は貼り付けないようにしたいです(1列目と3から5列目を貼り付けたい)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mattuwan

2021/05/17 23:21

>配列に入れた行をSheet1の二行目から行を挿入しながら貼り付けたい すでにシート上に値があるが、1行目の直下に複数の検索結果を挿入したいということですか? >その時に2列目は貼り付けないようにしたいです 空欄でいいということですか? とりあえず貼りついても後で、クリアしてもいいのですか?
yosida11

2021/05/17 23:39

その通りで1行目の直下に貼り付けたいです。 空白ではなく3列目を2列目に移動させたいです(他の列も一列づつ左に移動させたい)
guest

回答2

0

ベストアンサー

こんな感じでどうでしょうか。

VBA

1 Dim r, i 2 r = 2 3 For i = 1 To UBound(arr) 4 With ws2.Rows(arr(i)) 5 ws1.Rows(r).Insert 6 Union(.Columns("A:A"), .Columns("C:E")).Copy ws1.Cells(r, 1) 7 r = r + 1 8 End With 9 Next

こうすると多少速いかも。

VBA

1 Dim u As Range, i As Long 2 Set u = ws2.Rows(arr(1)) 3 4 For i = 1 To UBound(arr) 5 Set u = Union(u, ws2.Rows(arr(i))) 6 Next 7 8 ws1.Rows(2).Resize(UBound(arr)).Insert 9 Union(u.Columns("A:A"), u.Columns("C:E")).Copy ws1.Cells(2, 1)

投稿2021/05/18 00:11

編集2021/05/18 03:47
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosida11

2021/05/18 03:07

ありがとうございます 試してみた結果思い通りに動きました ただデータの量が多く少し時間が掛かってしまいました
yosida11

2021/05/19 03:11

返信遅くなりすみません とても早くなりました驚きました! ありがとうございます。
guest

0

1)sheet1の表から、オートフィルターで抽出
2)表の必要な範囲をコピー
3)SHeet2に挿入して貼り付け

という手順をマクロ化してみてはいかがでしょうか?

投稿2021/05/17 23:54

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosida11

2021/05/18 03:13

ありがとうございます。 その方法なら、ややこしくなく私でも出来るかもしれないです。 実践してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問