お世話になっております。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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
-
4
Excelにて、シート間で、データーを比較して、一致したら別シートへ転記するコードを教えてください。
Microsoft ASP
-
5
エクセル VBA find は別シートを検索できますでしょうか?
Excel(エクセル)
-
6
【VBA】指定したセルと同じ値で、別シートにあるセルに移動するには?
Visual Basic(VBA)
-
7
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
8
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
9
別のシートから値を取得するとき
Visual Basic(VBA)
-
10
Excel VBAで比較して数値があってなかったらセルの色を変換
Visual Basic(VBA)
-
11
エクセルで複数列の検索をマクロで行いたい
Excel(エクセル)
-
12
VBAで列の比較をする
Visual Basic(VBA)
-
13
他シートのある列を検索して一致したらセルに色をつける方法
会計ソフト・業務用ソフト
-
14
文字列の結合を空白行まで実行
Visual Basic(VBA)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
VBA A列にありB列にないものまた逆
Visual Basic(VBA)
-
17
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
18
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
19
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
20
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
白血球が多いとどんな心配があ...
-
精液の落とし方を教えてください
-
精子が黄色?
-
アクエリアスが苦く感じる
-
電動のネッククーラーは空港の...
-
中出しをするとお腹が痛い・・・。
-
これって喉仏ですか? 私は女性...
-
精子に血が・・・
-
Excel 0目標に対して数字があ...
-
EXCELで条件付き書式で空白セル...
-
ある範囲のセルから任意の値を...
-
エクセル指定した範囲からラン...
-
2つの数値のうち、数値が小さい...
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
甲状腺が腫れているが血液検査...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
精子が黄色?
-
EXCELで条件付き書式で空白セル...
-
至急!尿検査前日にオナニーし...
-
これって喉仏ですか? 私は女性...
-
中出しをするとお腹が痛い・・・。
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
尿検査前日に自慰行為した時の...
-
EXCELで式からグラフを描くには?
-
小数点以下を繰り上げたものを...
-
ある範囲のセルから任意の値を...
-
口の中に黒い血の塊
-
【Excelで「正弦波」のグラフを...
-
エクセル指定した範囲からラン...
おすすめ情報