お世話になっています。
「××シートのセルに文字列を記入したとき、●●という別シートの中のデータを一列チェックして一致していたら、書き込んだセルの隣のセルに××という文字を書き込む」という処理を考えています。
●●というシートには、A列とB列にランダムな単語が並んでいます。
例えば、
A B
スズキ 神奈川
サトウ 千葉
タナカ 東京
という感じです。
××シートでは、
A B
スズキ
と書き込んだら
A B
スズキ 神奈川
と自動入力してほしいのです。
今のところ、
Dim sName As String
sName = Target.Value
For i = 1 To Sheets("●●").Range("A1").End (xlDown).Row
If sTitle = Sheets("●●").Cells(i, 1).Value Then
※ Offset(0, 1).Value = Sheets("●●").Cells(Resize(1, 0)).Value
Exit For
Else
Target.Interior.ColorIndex = xlNone
End If
Next i
という処理を考えていますが、※というところが自信ありません。
あと、エラーが出てコードを修正してコンパイルをかけると、修正する前のコードに戻ってしまい、同じエラーメッセージが出てきます。
修正後に上書き保存をしたり、一度ブックを閉じてまた開いて・・・としても駄目でした。
このせいで作業がだいぶ遅れるのですが、修正前に戻らないようにする方法はないでしょうか?
No.5
- 回答日時:
#4 です。
●●シートには、氏名と出身地が、A:B 列にあって、
××シートに対しては、
>50人分の人名がシートいっぱいにランダムに書き込まれ
なら、
If Target.Column <> 1 Then Exit Sub 'A列(1列)以外は除外
を外せばよいのでは?
No.4ベストアンサー
- 回答日時:
こんにちは。
イベント・ドリブン型だと思いますが、質問で出されただけではよく分からない部分がありました。なお、それは、ループでは探しません。
'××シートのモジュールに入れてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant
If Target.Column <> 1 Then Exit Sub 'A列(1列)以外は除外
If Target.Value = "" Then Exit Sub
If Target.Count > 1 Then Exit Sub
i = Application.Match(Target.Value, Worksheets("●●").Range("A:A"), 0)
Application.EnableEvents = False
If Not IsError(i) Then
Target.Offset(, 1).Value = _
Worksheets("●●").Range("A:A").Cells(i).Offset(, 1).Value
End If
Application.EnableEvents = True
End Sub
No.3
- 回答日時:
他の方も書かれていますが、マクロよりVLOOKUP関数の方が簡単そうですね。
それでもマクロがよいのですか?> Offset(0, 1).Value = Sheets("●●").Cells(Resize(1, 0)).Value
は
Target.Offset(, 1).Value = Sheets("●●").Cells(i, 2).Value
でしょう
でもFor~Next文で処理すると遅くなると思いますので、Findメソッドを使う方が実用的だと思います。こんな感じですが詳しくはヘルプを見てください
Dim trg As Range
Set trg = Sheets("●●").Columns(1).Find(What:=sName, _
Lookin:=xlValues, Lookat:=xlWhole)
If trg Is Nothing Then
Msgbox "該当なし"
Else
Target.Offset(, 1).Value = trg.Value
End If
No.2
- 回答日時:
因みに、B1セルを選択して、セルの右下のカドを下方向に必要な行までドラッグして「セルのコピー」ってやれば、
B1:=VLOOKUP(A1,●●!A:B,2,0)
B2:=VLOOKUP(A2,●●!A:B,2,0)
B3:=VLOOKUP(A3,●●!A:B,2,0)
B4:=VLOOKUP(A4,●●!A:B,2,0)
B5:=VLOOKUP(A5,●●!A:B,2,0)
B6:=VLOOKUP(A6,●●!A:B,2,0)
って状態になるので、そのまま、A1、A2、A3、A4、A5…と入力しましょう。B列に勝手にデータが表示されてく筈です。
No.1
- 回答日時:
マクロなんか不要。
A1に「スズキ」と入れたら
B1に「=VLOOKUP(A1,●●!A:B,2,0)」って入れましょう。
そしたらB1に「神奈川」ってでます。
で「B1の中身を、式でなく、値にしたい」って場合は、
B1セルを選択して「編集」「コピー」
B1セルを選択したまま「編集」「形式を選択して貼り付け」「貼り付け - 値」を選択して「OK」
ってやれば、式の結果の「値」がB1セルの中身になります。
この回答への補足
書きかたが悪くて申し訳ないのですが、●●シートと××シートのデータの並びが一致するとは限りません。
●●シートが
A B
スズキ 神奈川
サトウ 千葉
タナカ 東京
であったとしても、
××シートに
A B
サトウ 千葉
スズキ 神奈川
タナカ 東京
と記入される可能性があります。
質問では3人分しかデータがありませんが、実際は50人分以上あります。
50人分の人名がシートいっぱいにランダムに書き込まれ、その隣のセルにかならずその人の出身地を表示させたいイメージです。
A B C D E F
キムラ 埼玉 イシダ 山梨 ヤマダ 東京
スズキ 神奈川 サトウ 千葉 オオタ 奈良
タナカ 東京 ムトウ 大阪 マツダ 千葉
: : :
ひとり書き込むごとに別のシートを参照するのは面倒なので、最初に一覧表をつくり、マクロが勝手に参照してくれないかな?と思いました。
その場合も、VLOOKUP関数で出来ますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
複数シートの同じセル内容を1シ...
-
Excelシートの保護時にデータの...
-
Aというブックの1というシート...
-
エクセルのルビがついたセルを...
-
エクセルの文字
-
別シートのセルを絶対参照にする
-
エクセルのフッタやヘッダーに...
-
シート参照で変数を使いたい(EX...
-
EXCELマクロで、シート間でのコ...
-
エクセルで20万行あるシート...
-
VBAで変数に関数式の結果をセッ...
-
VBAで、セル(Range)のオブジ...
-
excelでハイパーリンクになって...
-
マクロ セルに入力されたシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
INDIRECTを使わず excelで複数...
-
ExcelでTODAY関数を更新させな...
-
式の説明をお願いします。
-
excelでハイパーリンクになって...
-
エクセルのルビがついたセルを...
-
Excelでスクロールすると文字が...
-
エクセル ハイパーリンクで画像...
おすすめ情報