
VBA勉強中で調べながらプログラムを作成しています。
調べた中で似た内容のプログラムを実行させたのですが自分が実行したい内容と
一部違うのでどうすればいいのかをご教授いただけると助かります。
下記プログラムではコメントでもあるように1行全部の転記となってしまう為
一部の列のみを転記するプログラムに変更したいです。
◆似た内容のプログラム◆
Sub Sample()
Dim c As Range
Dim v() As Variant
Dim cols As Long
Dim j As Long
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Sheet2")
'シート2のA3からA列のデータ最終行までのセルを1つずつ取り出す
For Each c In .Range("A3", .Range("A" & .Rows.Count).End(xlUp))
dic(c.Value) = dic.Count + 1 'その値をキー、1からの連番をデータとして辞書登録
Next
End With
With Sheets("Sheet1")
'シート1の列数取得
cols = .UsedRange.Cells(.UsedRange.Cells.Count).Column
ReDim v(1 To dic.Count, 2 To cols) '転記用配列
'シート1のG5からG列のデータ最終行までのセルを1つずつ取り出す
For Each c In .Range("G5", .Range("G" & .Rows.Count).End(xlUp))
'もし辞書にあれば(シート2にあれば)1行分のイメージを配列に格納
If dic.exists(c.Value) Then
For j = 2 To cols
v(dic(c.Value), j) = c.EntireRow.Cells(j).Value
Next
End If
Next
End With
With Sheets("Sheet2")
.Range("I3").Resize(UBound(v, 1), UBound(v, 2)).Value = v
.Select
End With
MsgBox "転記終了"
End Sub
◆実行したい内容◆
【Sheet2】A3~最終行までの番号(値)をキーとして
【Sheet1】G5~最終行までの番号(値)と一致した同じ行の一部の列(B5・K5・M5・S5の最終行まで)を
【Sheet2】一致した番号(値)と同じ行の列(I3・J3・K3・L3の最終行まで)に転記したいと思っています。
転記元 ⇒ 転記先
【Sheet1】B列 ⇒ 【Sheet2】I列
【Sheet1】K列 ⇒ 【Sheet2】J列
【Sheet1】M列 ⇒ 【Sheet2】K列
【Sheet1】S列 ⇒ 【Sheet2】L列
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは!
人様がお考えになったコードに手を加えるのは好みではないので・・・
Sub Sample1()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 3 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("G:G").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
With .Cells(i, "I")
.Value = wS.Cells(c.Row, "B")
.Offset(, 1) = wS.Cells(c.Row, "K")
.Offset(, 2) = wS.Cells(c.Row, "M")
.Offset(, 3) = wS.Cells(c.Row, "S")
End With
End If
Next i
End With
MsgBox "完了"
End Sub
※ Sheet1のG列に重複データがある場合、
最初にヒットした行のデータが表示されます。
こんな感じをご希望をご希望なのでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
-
4
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
5
VBAで別ブックの列を検索し、該当があれば行ごと新規ブックにコピーしたい。
Excel(エクセル)
-
6
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
7
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
8
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
9
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
10
VBA 空白行に転記する
Visual Basic(VBA)
-
11
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
12
VBAで文字列を数値に変換したい
Excel(エクセル)
-
13
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
14
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
15
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
16
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
17
VBAで、離れた複数の列に対して処理を施すには?
Visual Basic(VBA)
-
18
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
19
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
20
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Changeイベントでの複数セルの...
-
Excelで、あるセルの値に応じて...
-
VBAのFind関数で結合セルを検索...
-
IIF関数の使い方
-
VBAを使って検索したセルをコピ...
-
URLのリンク切れをマクロを使っ...
-
vba 2つの条件が一致したら...
-
Excel VBA:エクセルのマクロで...
-
【Excel VBA】 B列に特定の文字...
-
VBA 何かしら文字が入っていたら
-
エクセルVBA intersect colu...
-
rowsとcolsの意味
-
VBAで、特定の文字より後を削除...
-
Worksheets メソッドは失敗しま...
-
グリッドの列の最大値を求めたい。
-
数字が「0」の列を削除するた...
-
重複データをまとめて合計を合...
-
DataGridViewにリンク列の追加...
-
targetをA列のセルに限定するに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
【VBA】2つのシートの値を比較...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを使って検索したセルをコピ...
-
DataGridViewに空白がある場合...
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
VBAで指定範囲内の空白セルを左...
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
おすすめ情報