前回の質問の続きになります。
Sheet1A列にある文字列データとSheet2B列の文字列データを比較し、
Sheet2A列に合致率を%でそれぞれ出していきます。
最も%が高い文字列データで、合致率70%以上であればSheet2C列の対応する別言語のデータをSheet1のB列に引っ張ってくるようにしたいと思います。
最初、%を出した後、Sortで降順にして、一番上にくるものに対して70%以上かを確認しようとしたのですが、処理が遅くなる、かつフリーズしてしまうので、Vlookupを使うことにしました。
しかし、存在するはずのデータをVlookupで拾うことができません。
範囲指定が間違っているのかもしれません。お力添え頂ければ幸いです。
(VlookupにもTable1やTable2を使いたかったのですが、うまく使いこなせず、Cellsで記述してます...。)
出てきたエラーは画像の通りです↓
Variant型って何でも入るわけではないのでしょうか?
Sub 検索() Dim ws1 As Worksheet, ws2 As Worksheet Dim rng1 As Range, rng2 As Range Dim Table1 As Variant, Table2 As Variant Dim Endrow As Integer, Finalrow As Integer Dim i As Long, k As Double, n As Long Dim cnt As Integer, str As String Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet2") With ws1 Endrow = .Cells(.Rows.Count, 1).End(xlUp).Row 'ws1最終セル Set rng1 = .Range(.Cells(2, 1), .Cells(Endrow, 1)) 'ws1のデータ範囲を配列化 Table1 = rng1.Value 'ws1のデータ範囲を配列化 End With With ws2 .Columns(1).Insert Shift:=xlShiftToRight .Columns(1).Style = "Percent" Finalrow = .Cells(.Rows.Count, 2).End(xlUp).Row Set rng2 = .Range(.Cells(3, 1), .Cells(Finalrow, 2)) Table2 = rng2.Value 'ws2のデータを配列化 End With Dim kinji As Double With Application.WorksheetFunction ws2.Cells(1, 1).Value = .Max(rng2) kinji = ws2.Cells(1, 1).Value On Error Resume Next If kinji >= 0.7 Then ws1.Cells(1, 1).Value = .VLookup(Cells(1, 1).Value, rng2, 3, False).Value End If End With '配列化したデータをシートに戻す rng1.Value = Table1 rng2.Value = Table2 End Sub
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。