前提・実現したいこと
現在、VBAでマスタデータから検索した値を抽出させるコードを作成しております。
INDEXとMATCHを使用したワークシート関数を、WorksheetFunctionで同じように入力をしていますがうまく作動しません。
下記のような関数を使用しています。
=index(マスタ!C:C,match("JPY"&"取引先名",index(マスタ!A:A&マスタ!B:B,0),0))
INDEX関数を用いてマスタシートのA列の通貨、B列の取引先名から一致しているものを検索し、C列のコードを抽出する式です。
関数の式に関して、同取引先に対しても案件毎に行追加して管理しており、重複が発生するためsumproduct関数は使用できませんでした。
普段は関数を使用して更新しているのですが、計算式が多くファイルが重くなり始めたのでVBAを使用してファイルの軽量化を図り今回ご質問させていただきます。
発生している問題・エラーメッセージ
実行時エラー'13': 型が一致しません。
該当のソースコード
Sub マスタ抽出() With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With Dim master As worksheet, tenki as worksheet set master = ThisWorkbook.Worksheets("マスタ") set tenki = ThisWorkbook.Worksheets("転記用シート") Dim end end = tenki.Cells(Rows.Count, 1).end(Xlup).Row Dim i As Long For i = 1 To end tenki.Cells(i, 2) =worksheetfunction.Index(master.columns("C"),worksheetfunction.Match("JPY"&tenki.Cells(i,1),worksheetfunction.Index(master.columns("A")& master.columns("B") ,0),0)) Next With Application .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic End With End Sub
試したこと
マスタのC列のコードには数値だけでなく文字列も含まれています('0000のように桁数を固定しているため頭に0がくるものがある)。iの変数をVariantにしてみても型が一致しませんでした。
補足情報(FW/ツールのバージョンなど)
Excel 2013を使用しています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 08:15