プロが教えるわが家の防犯対策術!

株価の表があり、項目は日付、初値、高値、安値、終値、出来高のA列からF列になっています。
もう一つデータの入ってない表があり、そちらにデータの入っている元の表から日付で検索して合致
するデータを持ってきたいのです。(呼び出し側の表の最後のデータから、日付を取り出して検索しています)
項目日付の書式は日付型になっています。
自分なりに調べて次のようにしました。

Sub sinkabuka()
Dim ken As Variant
Dim motorow As Integer
Dim sinrow As Integer
Dim han As Object
Dim a As Variant

motorow = Worksheets(2).Range("a65536").End(xlUp).row
sinrow = Worksheets(1).Range("a65536").End(xlUp).row
If sinrow = 1 Then
Exit Sub
End If
ken = Worksheets(1).Range("a" & sinrow).Value2
Worksheets(2).Activate
Worksheets(2).Select
Set han = Range("a2:f" & motorow)
a = Application.WorksheetFunction.Match(ken, han, 0) <ーエラーになります

match関数でアドレスをとれるようになったら、合致したデータの次のデータをとるようにしたいと
おもっています。
試しにvlookup関数を使ったらデータを返してくれました。
excel2010 windows7です。
アドバイスをお願いします。 

A 回答 (3件)

WorksheetFunctionでMatch関数を使用すると、


検索した範囲内で一致する項目がなかったら実行時エラーになるみたいですね。

なのでWorksheetFunction部分を削除して
Application.Matchと直したら実行時エラーにならなくなります。

詳細は以下のページを見てください。
http://park7.wakwak.com/~efc21/cgi-bin/exqaloung …
    • good
    • 0

VLOOKUPとMATCH関数では少し相違します。


MATCHの範囲は単一列、行としないと検索できませんので範囲を変更して下さい。
私見ですが、FINDメソッドの方が簡単と思いますが如何でしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
2日も悩んでいたのに一瞬で、できてしまった。
複数列だとだめなんですね。
データ型がだめなのかと思っていました。
ありがとうございます。
findメソッドも勉強いたします。

お礼日時:2012/03/29 22:16

こんにちわ


検索範囲が複数列だからエラーになったのかな?

Set han = Range("a2:f" & motorow)
 ↓
Set han = Range("a2:a" & motorow)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
2日も悩んでいたのに一瞬で、できてしまった。
複数列だとだめなんですね。
データ型がだめなのかと思っていました。
ありがとうございます。

お礼日時:2012/03/29 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!