エクセルのVBAを使って、処理を行いたくてインターネットをいろいろ調べたのですが、目的の動作ができません。 助けてください。
sheet1には C列に品名が記入されています
A 列 B列 C列 D列
1 みかん
2 りんご
3 すいか
4 にんじん
5 みかん
↓
sheet2には A列に検索リスト B列に 文字
A B C D
1 りんご 林檎
2 みかん 蜜柑 3 はくさい 白菜 4 れもん 檸檬 5 にんじん 人参
VBAを使って sheet1 に, sheet2のリストを参照して A1からA325に一致した場合は
一致したセルの二つ左に A列の文字を入力したい
sheetの全てを検索対象として、置換 二つ左に書く などやりたい事が複数になり難しくなりました。 お助けください。
No.1
- 回答日時:
あなたが提示されたsheet1のセルのレイアウトは添付図のように見えます。
良くわからないので、画像で提示していただけませんでしょうか。
画面のイメージの切り取りは、snipping toolを使うと簡単にできます。(snipping toolはアクセサリに入っています)
この画像もsnipping toolで作成しました。
1回の投稿で1画像なので、sheet1とsheet2で2回の投稿が必要になります。
No.2
- 回答日時:
提示されたのはsheet1でしょうか。
もし、そうなら、最初に提示されたC列に品名ではなく、D列に品名が正しいのでしょうか?又、sheet2についても提示していただけませんでしょうか。
No.3ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
sheet1のセルの名前がSheet2に該当名称がない場合は、なにも設定しません。
-----------------------------------------
Option Explicit
Public Sub 検索設定()
Dim dicT As Object
Dim row As Long
Dim col As Long
Dim maxrow As Long
Dim maxcol As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim key As Variant
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
Set dicT = CreateObject("Scripting.Dictionary")
maxrow = sh2.Cells(Rows.Count, "A").End(xlUp).row 'sheet2の最大行取得
'sheet2のひらがなと漢字の名前を記憶
For row = 1 To maxrow
key = sh2.Cells(row, "A").Value
dicT(key) = sh2.Cells(row, "B").Value
Next
sh1.Activate
'Sheet1の最終行、最終列を取得
ActiveCell.SpecialCells(xlLastCell).Select
maxrow = Selection.row
maxcol = Selection.Column
'1から最終行まで繰り返す
For row = 1 To maxrow
'3から最終列まで繰り返す
For col = 3 To maxcol
key = sh1.Cells(row, col).Value
'そのセルが空白でなく、Sheet2のA列に存在するなら
If key <> "" And dicT.exists(key) = True Then
'2列左にSheet2のB列の値を設定する
sh1.Cells(row, col - 2).Value = dicT(key)
End If
Next
Next
MsgBox ("完了")
End Sub
No.4
- 回答日時:
こんにちは!
横からお邪魔します。
標準モジュールにしてください。
Sub Sample1()
Dim c As Range, r As Range, myRng As Range
Dim FoundCell As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For Each c In .UsedRange
If c.Column > 2 And c <> "" Then
If myRng Is Nothing Then
Set myRng = c
Else
Set myRng = Union(myRng, c)
End If
End If
Next c
For Each r In myRng
Set FoundCell = wS.Range("A:A").Find(what:=r, LookIn:=xlValues, lookat:=xlWhole)
If Not FoundCell Is Nothing Then
r.Offset(, -2) = FoundCell.Offset(, 1)
End If
Next r
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
エクセルVBAにて =A1=B1とすれ...
-
VBマクロ 色の付いたセルを...
-
エクセルVBA intersect colu...
-
Worksheets メソッドは失敗しま...
-
文字列の結合を空白行まで実行
-
エクセルVBA シートモジュール...
-
【補足欄が足りなかったため、...
-
VBA 値と一致した行の一部の列...
-
vba 2つの条件が一致したら...
-
マクロ 関数を使った抽出でエラ...
-
【VBA】2つのシートの値を比較...
-
C# dataGridViewの値だけクリア
-
エクセル VBA ユーザーフォー...
-
別シートから年齢別の件数をカ...
-
グリッドの列の最大値を求めたい。
-
VBAで条件から範囲を指定して色...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報
ご指摘 ありがとうございます。 やってみました。宜しくお願いします。
sheet 2 です。 検索リストとして A1(りんご)をsheet 1 全域で検索し 一致したセルの二つ左に B1(林檎)を入力
次にA2(みかん)をsheet 1 全域で検索し 一致したセルの二つ左に B2(蜜柑)を入力・・・
これを sheet 2 A列 で空白セルになるまで実行する
これが希望です。
こんな感じで sheet 1 に表示したいです。
宜しく お願いいたします。