2016-10-04 11 views
1

こんにちは、私はマクロをExcelに新しいです。私はvlookup用のマクロを作成して、多くのセルに適用できるようにしたかったが、うまくいきませんでした。vlookupのマクロで式vbaを計算する

Sub haha() 

Dim wb As Workbook 
Dim ws, ws1 As Worksheet 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

ws1.Select 

Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

End sub 

現在のシートの値を別のシートの範囲にルックアップして一意の値を返したいと考えました。助けてください! :)

+1

vlookupの2つの範囲の後に '.Address'を挿入します。 –

+0

ありがとうございました! – koky

答えて

1

ただ、これらの3行置き換える:セルがあるとしてsheetaddressが、この場合には、必要とされていないws1.Range("C6")一部で

ws1.Range("E1").Formula = "=VLOOKUP(C6," & ws.Range("C7:D10").Address(External:=1) & ",2,FALSE)" 

:これで

wb.Activate 
ws1.Select 
Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

を数式が同じになるシートにws1.Range("C6")は常にC6を返します。

ws.Range("c7:d10")については、別のシートを参照しているため「外部参照」が必要です。ファイルRange.Address PropertyExternal参照にはファイル名が含まれていますが、数式が同じブックに入ると、ファイル名は削除されます。

+0

こんにちはEEM、この選択肢もうまくいきます!1私は皆さんから学ぶことがたくさんあります! :)ありがとう! – koky

+0

'.Address(External:= 1)'を使用する場合は、 '.Worksheet.Name'部分を追加する必要はありませんので、アドレス関数にそれが含まれることに注意してください。 – EEM

+0

ありがとうございました!ただの簡単な質問です。私は教科書からマクロとvbaを学びました。しかし、実生活で応募しても、私はいくつかの問題に遭遇します。このフォーラムで他の人を助けることができるように、マクロスキルをどのように改善しますか?お勧めするウェブサイト、ビデオ、書籍。 – koky

2

これをチェックしてください。

Sub haha() 

Dim wb As Workbook 
Dim ws As Worksheet, ws1 As Worksheet 
Dim rng As Range 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

Set rng = ws.Range("c7:d10") 
ws1.Range("E1").Formula = "=VLOOKUP(" & ws1.Range("C6").Address & "," & rng.Worksheet.Name & "!" & rng.Address & ",2,FALSE)" 

End Sub 
+0

こんにちは、それは完璧に動作します!ちょうど質問 - なぜ私たちは.lookheet.Nameと.Addressをvlookupで使用するのですか?どうもありがとう! :) – koky

+0

lookuparrayでは、それが属するシート名を指定する必要があるためです。 –

+0

ありがとう!本当に助けに感謝! – koky