
お世話になっております。VBAで下記のようなものを作ろうとしましたが、わかりませんのでご教示願います。
①「sheet1」と「sheet2」があります。
②「sheet1」のC列に値が入っています。(複数行)
③「sheet2」のD列でその値を検索します。
④値があればその値のある行の一番右端のセルに、「sheet1」のD列にある値をコピーします。(検索した値の行の右端セル)
⑤それを「sheet1」のC列に値が入っているだけ繰り返し。
最終的に振り分けられた状態にしたいです。
マクロ初心者なのでソース頂けたら幸いです。
よろしくお願いいたします。

No.3ベストアンサー
- 回答日時:
No.1です。
何度もごめんなさい。
列を1列間違っていました。
Sheet2のC列とD列が違います。
前回のコードの
>For i = 4 To .Cells(Rows.Count, "C").End(xlUp).Row
を
>For i = 4 To .Cells(Rows.Count, "D").End(xlUp).Row
に
>Set FoundCell = wS.Range("C:C").Find(what:=.Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
を
>Set FoundCell = wS.Range("C:C").Find(what:=.Cells(i, "D"), LookIn:=xlValues, lookat:=xlWhole)
にそれぞれ変更してください。
どうも失礼しました。m(_ _)m
No.2
- 回答日時:
画像が小さくて詳細がよく判らないのですが、おそらくこういうコトだと解釈して・・・
「Sheet1」は個別データのシートで、
C列4行目以降がデータで、設置?機材の型式とシリアルNo.が書かれている。
「Sheet2」は台帳のようなシートで、
型式毎に、設置使用済み?のシリアルNo.を整理記入する。
「Sheet1」は、数回新しい設置情報?に全面書き換えられて、書き換えられた後で、
その情報からをシリアルNo.を、「Sheet2」の台帳に追記する。
Sub Sample()
Dim i As Long, iend As Long, j As Long, jend As Long, ii As Long
Dim wS1 As Worksheet, wS2 As Worksheet
Dim MTD As Variant
Set wS1 = Worksheets("Sheet1") ' 新規 data sheet
Set wS2 = Worksheets("Sheet2") ' 台帳 sheet
iend = wS1.Cells(Rows.Count, "C").End(xlUp).Row
jend = wS2.Cells(Rows.Count, "D").End(xlUp).Row
ii = iend - 3
MTD = wS1.Range("C4:D" & iend)
With wS2 ' 台帳sheet
For j = 4 To jend
For i = 1 To ii
If .Cells(j, 4) = MTD(i, 1) Then
.Cells(j, Columns.Count).End(xlToLeft).Offset(, 1) = MTD(i, 2)
End If
Next
Next
End With
End Sub
ご回答ありがとうございます。NO1の方のソースで動きましたので、今回はそちらを使わせていただきますが、yoreyoreさまのソースも活用させていきたいと思います。ありがとうございました。
No.1
- 回答日時:
こんにちは!
画像が小さくて詳細がよく判らないのですが、おそらくこういうコトだと解釈して・・・
「Sheet2」のC列4行目以降のデータが「Sheet1」のC列に存在すれば、
「Sheet1」のその行のD列データを「Sheet2」のD列以降右側に表示する!という解釈で・・・
というコトはSheet1に重複するデータが存在するのですかね?
関数でもできそうですが、VBAをご希望だというコトなので、一例です。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, wS As Worksheet
Dim FoundCell As Range, FirstCell As Range
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 4 To .Cells(Rows.Count, "C").End(xlUp).Row
Set FoundCell = wS.Range("C:C").Find(what:=.Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not FoundCell Is Nothing Then
Set FirstCell = FoundCell
GoTo 処理
Do
Set FoundCell = wS.Range("C:C").FindNext(after:=FoundCell)
If FoundCell.Address = FirstCell.Address Then Exit Do
GoTo 処理
処理:
.Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) = FoundCell.Offset(, 1)
Loop
End If
Next i
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
-
4
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
更新前と更新後の差分をVBAを使って抜き出したい
Excel(エクセル)
-
7
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
8
VBAでセル同士を比較して色付け
Visual Basic(VBA)
-
9
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
10
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
13
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
14
エクセルのマクロで条件一致のデータを別シート(複数)に転記したい
Visual Basic(VBA)
-
15
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
16
別のシートから値を取得するとき
Visual Basic(VBA)
-
17
EXCELで2列を参照し、重複するものを横に並べたい
Excel(エクセル)
-
18
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
19
VBAの構文 3列置きにコピーして別シートに貼付
Visual Basic(VBA)
-
20
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
血小板増加について
-
検便についてです。 便は取れた...
-
首吊りどこ締めるの
-
腕を見たら黄色くなってる部分...
-
病院側から早く来てくださいと...
-
2つの数値のうち、数値が小さい...
-
Excel 数値の前の「 ' 」を一括...
-
VLOOKUP関数を使用時、検索する...
-
値が入っているときだけ計算結...
-
彼女のことが好きすぎて彼女の...
-
エクセルで数式の答えを数値と...
-
【Excelで「正弦波」のグラフを...
-
エクセルで空白セルを含む列の...
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
レインボーシックスシージをし...
-
EXCELで式からグラフを描くには?
-
エクセルのラベルの値(文字列...
-
Excel 0目標に対して数字があ...
-
エクセルでエラーが出て困って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
彼女のことが好きすぎて彼女の...
-
尿検査前日に自慰行為した時の...
-
VLOOKUP関数を使用時、検索する...
-
Excel 数値の前の「 ' 」を一括...
-
精液の落とし方を教えてください
-
【Excelで「正弦波」のグラフを...
-
2つの数値のうち、数値が小さい...
-
風俗店へ行く前のご飯
-
精子に血が・・・
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
イタリアから帰国する際、肉製...
-
excelでsin二乗のやり方を教え...
-
腕を見たら黄色くなってる部分...
-
病院側から早く来てくださいと...
-
ワードのページ番号をもっと下...
おすすめ情報