
いつもお世話になっております。
この度、下記の操作の自動化についてご教示をいただきたく質問させていただきました。
自動化したい処理内容は下記の添付画像を例にご説明いたします。
B列3行目より下記には各機材名が入力されており、黄色で示しております【VAIO】の文字に一致した場合、C1~F1(※オレンジ色で示しましたA・B・C・D(※ここには関数が入力されています。)のセルのデータを、離れた位置にございます【VAIO】が入力されている行の、H5、I5、J5、K5セルに貼り付けたい処理の内容となります。
どうぞよろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
こんな感じでしょうか?
Sub megu()
Dim rr As Range
Dim rf As Range
Set rr = Range("B3", Cells(Rows.Count, "B").End(xlUp))
Set rf = rr.Find("VAIO", , xlValues, xlWhole)
If rf Is Nothing Then
MsgBox "検索値は見つかりませんでした"
Set rr = Nothing
Exit Sub
End If
Range("C1:F1").Copy
rf.Offset(, 6).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set rr = Nothing
Set rf = Nothing
End Sub
後々は
>Set rf = rr.Find("VAIO", , xlValues, xlWhole)
の "VAIO" の所を Range("B1").Value に変更してみて下さい。
めぐみん様、VBAの構築ありがとうございます。
こちらで理想の処理ができました!
後々の変更箇所のご提示もありがとうございます。
大切に活用させていただきます。
ありがとうございました。
No.3
- 回答日時:
こんにちは
>自動化したい処理内容
「自動化」というのが、いちいちマクロを実行する操作をしなくても、入力をした際に自動的に実行されるという意味と解釈しました。
当該シートの「シートモジュール」に以下を記述ではいかがでしょうか。
(シートタブを右クリックし「コードの表示」を選択した際に表示されるエディタ画面に記述)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In Intersect(Target, Columns(2)).Cells
If c.Value = "VAIO" Then
Cells(c.Row, 8).Resize(, 4).Value = Range("C1:F1").Value
End If
Next c
Application.EnableEvents = True
End Sub
※ コード設定した以降の操作に対して有効になります。
(それ以前に入力済みのセルに対しては実行されません)
fujillin様、回答に重ねVBAの構築ありがとうございます。
Changeイベントを組むことでこの様に自動化することができるのですね。
こちらも大切に活用させていただきます。
ありがとうございました。
No.1
- 回答日時:
>【VAIO】の文字に一致した場合
B列の機材名が『何と』一致した場合なのでしょうか?
VAIO 固定ではないですよね?
例えばセルB1にその機材名が表示されるようになっている or 入力するようになっているとか?
めぐみん様、いつもお世話になっております。
回答ありがとうございます。
私が将来イメージしております処理の内容と重なっており驚いております。
めぐみん様が仰る通り、例えば(機材管理表)という別シートを作成。
今後はこの表とB1セルに関数で機材名を反映させ、B1セルの機材名に一致した場合にデータを反映させたいと考えておりました。
ただ現状、別シートの完成が今しばらくかかるので今回はVAIOに一致した場合のみを処理内容としたいです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”戻り値”が変化したときに、マ...
-
VBA実行後に元のセルに戻りたい
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excel VBAで、 ヘッダーへのセ...
-
Excelのハイパーリンクにマクロ...
-
Google Apps Script:Googleスプ...
-
screenupdatingが機能しなくて...
-
DataGridViewで右寄せ左寄せが...
-
Book1のセルへ別Book(Book2)...
-
エクセルの参照先セルの選択に...
-
VBA ユーザーフォーム ボタンク...
-
エクセルVBAでできるでしょ...
-
Excelで指定した日付から過去の...
-
3桁または4桁の数値を時刻に...
-
EXCELで変数をペーストしたい
-
VB.NETで DataRow()を利用して...
-
VBAでActiveDirectoryのユーザ...
-
VBA B列にある前から10文字の...
-
リストビューに条件による表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報