2017-08-11 3 views
2

これはかなり前から試してきましたが、正解を得ましたが、Application-defined or Object defined errorとなりました。行番号を返すには、vbaの一致式を使用してください。

私は2枚のシートを持っています:シート2とシート3。両方のシートには「url」という列があります。私が欲しいのは、Sheet2のurlの行番号を取得し、URLに印刷されたURL行の位置を取得することです。Sheet3の列C( "Match Row")。

これは私が取り組んでいるデータの例です。 This is the Sheet3 which has url in the column B and Match Row in Column C This is the Sheet2 which has url in the column B

私はこれは私が試したものです

Matchvalue.Formula = "=Match(Worksheets("Sheet3").Cells(i, 2), Worksheets("Sheet2").Range("B:B"), 0) 

この行でエラーが発生します。

Dim i As Integer 

i = 2 

Do While Worksheets("Sheet3").Cells(i, 2) <> "" 

    Worksheets("Sheet3").Cells(i, 14) = 
    WorksheetFunction.Match(Worksheets("Sheet3").Cells(i, 2), 
    Worksheets("Sheet2").Range("B:B"), 0) 
    i = i + 1 

Loop 
+0

あなたのコードは、あなたがエラーの原因となっていると言う行が含まれていません。 (Excelの式は 'Worksheets(" Sheet3 ")などのオブジェクトを参照することはできません)Cells(i、2)' 'Sheet3!B5'のように全く異なる構文を使用します。 – YowE3K

+0

14列3の代わりに、あなたの掲示されたコードはあなたがしたいことをしないのですか? (私があなたの実際のコードではなく、投稿された質問の一部であると仮定した改行を取り除くと、私のために働く) – YowE3K

答えて

0

コードのコメント内の説明を、以下のコードを試してみてください。

Option Explicit 

Sub MatchUrl() 

Dim i As Long 
Dim MatchRng As Range 

With Worksheets("Sheet2") 
    ' set the match range is "Sheet2" 
    Set MatchRng = .Range("B1:B" & .Cells(.Rows.Count, "B").End(xlUp).Row) 
End With 

With Worksheets("Sheet3") 
    For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row 
     ' check if successful match 
     If Not IsError(Application.Match(.Cells(i, 2), MatchRng, 0)) Then 
      .Cells(i, 2) = Application.Match(.Cells(i, 2), MatchRng, 0) 
     Else ' Match failed, raise some kind of error 
      .Cells(i, 2) = "Url not found in Sheet2!" 
     End If 
    Next i 
End With 

End Sub 
+0

ハイシャイラドーは、完璧に動作します。どうもありがとうございます! D –

0

私はので、私は知らないマッチを使用していませんそれの署名だが: おそらく引用符でエスケープする... like

Matchvalue.Formula = "=Match(" & Worksheets("Sheet3").Cells(i, 2) & ";B:B;0)" 

引用符をエスケープするには、引用符を二重にするだけです。例えば

Debug.print "Hey ""You"" how are you ?"

+0

あなたは 'B: B '。 (そして、私は確信していませんが、 '.Formula'プロパティに代入するときに英語の式構文を使用する必要はありませんか?'; ''は ''、 ''にする必要があります。私はExcelの英語版を使用するので、私はチェックの方法がないので、簡単に間違っている可能性があります!) – YowE3K

関連する問題