質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

455閲覧

二つのシートのキー番号から値を突合させたい

yum28

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/07/12 03:43

編集2021/07/12 06:20

シート1のA列(A5からスタート)、シート2のL列(L3からスタート)にそれぞれkey番号があります。
シート1のA列のkey番号とシート2のL列のkey番号が一致したら、シート1のZ列にシート2のL列で一致した行のAV列の値を入力したいです。

Dim t As Long , k As Long
Dim ws1 As Worksheet ,
ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
For t = 5 to xlw(最後まで)
For k = 3 to xlw(最後まで)

If ws1.Range("A" & t).Value
=ws2.Range("L" & k).Value Then

ws1.Range("z5" & t).Value
= ws2.Range("AV" & k).Value
Exit For
z = z+5
End If
Next

Next

#ws1.Rangeは数値がでていますが
ws2.RangeはRengeメゾットは失敗しました。Worksheetオブジェクトと記載されています。
すみません、どなた様か教えていただきたいです。iPhoneから入力しているためまたミスしていたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neconekocat

2021/07/12 03:57

コードはMarkdownの記法に従って書いてください。 コードの挿入ってボタン押したら出てきます。 あとこのコードですが、自分が書いたものをそのままコピペしてください。 Dim ws1 = Worksheetみたいなデタラメなコードが通るわけ無いですよね。
makox0105

2021/07/12 04:13

xlwの値は何ですか? またBB列じゃなくAV列ですか? wr2.rangeじゃなく、ws2.rangeですよね? 正しいコードを載せてください。
neconekocat

2021/07/12 06:11

スマホから入力してるからまともなコードが書けないというのであれば、PCで書ける環境になってから編集してください。 かなりデタラメなコードですが、少なくともこのコードを(ある程度)正しく書き直した場合、ws2.Rangeのエラーは起きません。 あなたが正しいコードを提示しない限り回答は不可能です。
makox0105

2021/07/12 08:27

上記の方と同様です。エラーは起きないと思います。
guest

回答1

0

ベストアンサー

VBA

1Sub org() 2 Dim t As Long, k As Long 3 Dim ws1 As Worksheet, ws2 As Worksheet 4 Set ws1 = Worksheets("Sheet1") 5 Set ws2 = Worksheets("Sheet2") 6 For t = 5 To ws1.Range("A" & Rows.Count).End(xlUp).Row 7 For k = 3 To ws2.Range("L" & Rows.Count).End(xlUp).Row 8 If ws1.Range("A" & t).Value = ws2.Range("L" & k).Value Then 9 ws1.Range("Z" & t).Value = ws2.Range("AV" & k).Value 10 Exit For 11 End If 12 Next 13 Next 14End Sub

VBA

1Sub Sample() 2 Dim t As Long, k As Long 3 Dim ws1 As Worksheet, ws2 As Worksheet 4 Set ws1 = Worksheets("Sheet1") 5 Set ws2 = Worksheets("Sheet2") 6 Dim dic 'As Scripting.Dictionary 7 Set dic = CreateObject("Scripting.Dictionary") 8 With ws2 9 For k = 3 To .Range("L" & .Rows.Count).End(xlUp).Row 10 dic(.Range("L" & k).Value) = .Range("AV" & k).Value 11 Next 12 End With 13 With ws1 14 For t = 5 To .Range("A" & .Rows.Count).End(xlUp).Row 15 .Range("Z" & t).Value = dic(.Range("A" & t).Value) 16 Next 17 End With 18End Sub

投稿2021/07/12 10:14

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yum28

2021/07/13 01:20

お忙しいところありがとうございます。全然飛ばなかったセルが飛びました。すみません、あと一つ教えて頂きたいのですが、Z5から、8飛ばしで最後の行までこの計算式を飛ばしたいのですが、その場合はどんな式になりますか?
jinoji

2021/07/13 01:22

For t = 5 To .Range("A" & .Rows.Count).End(xlUp).Row Step 8 みたいなことですかね。
yum28

2021/07/13 01:29

早急な対応ありがとうございます。飛びました。感動してます。 一週間できなくて初めて質問しました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問