vba初心者です。
入力シートとデータシートがあり
入力シートのa1に氏名、a2に番号が入ります。
そのデータがデータシートのa1,b1に入りa2b2,a3b3と
順に蓄積していくように作りました。
ネットで調べたら僕のやりたいことと同じようなコードを発見したので少し変えてみたら
データシートのA列の中からa1の名前と位置するデータの行をすべて取得するものができました。
出来たらその複数ある行の中のB列の番号がa2の番号と一致する行を取得できるようなものにしたいのですが
どうしたらいいか教えていただけないでしょうか?
同じ名前のデータの中に重複する番号は入らないようになっています。
違う名前なら同じ番号も入ります。
なので最終的に取得する行は同姓同名でない限り一個になります。
説明がややこしくすみません。
初心者なのでできるだけわかりやすく教えていただけたら有難いです。
よろしくおねがいします。
Private Sub CommandButton1_Click()
Dim rng As Range
Dim adr As String ' 最初に見つかったセルのAddress
Set rng = Worksheets("データ").Columns(1).Find(Range("a1"))
If rng Is Nothing Then
MsgBox "見つかりませんでした。"
Exit Sub
Else
adr = rng.Address
MsgBox rng.Row
End If
Do
Set rng = Worksheets("データ").Columns(1).FindNext(After:=rng)
If rng.Address = adr Then
Exit Do
Else
MsgBox rng.Row
End If
Loop
End Sub
No.2
- 回答日時:
蓄積していくことと行の検索の関係が不明なのですが?
登録したいデータが既に存在しているか?を調べるとしたら、最初に楽なのは使用していない列『仮にD列』としたとき、
D1 =A1&B1 と数式を入れ下にフィルコピー。
この連結させた値を探すってのも昔ですが定番でしたね。FindメソッドででもCountIf関数ででも調べる事は可能でしょうし。
No.1ベストアンサー
- 回答日時:
>ネットで調べたら僕のやりたいことと同じようなコードを発見したので少し変えてみたら
データシートのA列の中からa1の名前と位置するデータの行をすべて取得するものができました。
意味を理解しようと調べれば、やりたい事は簡単だと思いますが、改造したものを書きます。理解しなければ
同じ繰り返しになるので、頑張ってくださいね。
1つ掲示のコードで不具合が出そうな箇所も手を加えておきました。
余分な事もしていますので、しっかり直してください。
日曜の深夜なので、説明は割愛します。
Private Sub CommandButton1_Click()
Dim rng As Range
Dim adr As String ' 最初に見つかったセルのAddress
Dim nKey: nKey = Sheets("入力").Range("A2")
Set rng = Worksheets("データ").Columns(1).Find(Sheets("入力").Range("a1"))
If rng Is Nothing Then
MsgBox "見つかりませんでした。"
Exit Sub
Else
adr = rng.Address
If rng.Offset(, 1) = nKey Then
MsgBox ("名前:" & rng.Value & vbCrLf & _
"№:" & rng.Offset(, 1) & vbCrLf & _
"行番号:" & rng.Row)
Worksheets("データ").Select
rng.Select
End If
End If
Do
Set rng = Worksheets("データ").Columns(1).FindNext(After:=rng)
If rng.Address = adr Then
Exit Do
Else
If rng.Offset(, 1) = nKey Then
MsgBox ("名前:" & rng.Value & vbCrLf & _
"№:" & rng.Offset(, 1) & vbCrLf & _
"行番号:" & rng.Row)
Worksheets("データ").Select
rng.Select
End If
End If
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
コンパイルエラーSubまたは...
-
.NET SqlDataReader のレコー...
-
VBAでページ番号、ページ最終行...
-
GASでスプレッドシートの一番上...
-
スプレッドシート 一括でQRコー...
-
Listviewのデータを上から順番...
-
DataGrdViewに関連付けたデータ...
-
MSFlexGridのデータ表示位置の設定
-
エクセルマクロ小数点桁数
-
コード側からDataGridの列を追...
-
C# データ配列から画像を作成す...
-
PDFメニューバーの右端にある(...
-
クラス内だけでhtmlデータをダ...
-
C# 一覧とデータテーブルを比較...
-
エクセルVBA、数式の入ったセル...
-
VBによる可変長ファイルの読み書き
-
ListViewで条件によって表示を...
-
XMLとは?
-
ExcelVBAを使って、値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
ASP C# データベースから1行取得
-
MSFlexGridのデータ表示位置の設定
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルマクロ小数点桁数
-
DataGridViewで表示に制限をつ...
-
スプレッドシート 一括でQRコー...
-
GridViewを自動的にスクロール...
-
VB DataRepeaterにて条件で表示
-
DBへの重複更新を防ぐ方法について
-
GoogleEarthのKMLファイルでラ...
-
エクセルVBA、数式の入ったセル...
おすすめ情報