2017-06-21 4 views
0

私は複数のブックに追加できるようにVBAとして保存しようとしているインデックス一致機能があります。私はそれがコード化されている方法は、私に同じ答えを与え続け、別のキーワードを見つけるために次のセルにループしません。私はそれがN76にあるものを見て、それが動作するO76に答えを入れてほしいが、N77のキーワードは異なっていても、O76と同じ答えをN77に与える。VBAインデックス一致ループしません、同じ回答を返します

サブ契約()

Dim Covenant_1 As Integer 
Dim Dashboard As Worksheet 
Dim Covenant_Sheet As Worksheet 
Dim Cov_Date As Range 
Dim Cov_Dates As Range 
Dim Cov_Type As Variant 
Dim DB_Cov As Variant 
Dim Cov_Type2 As Variant 




Set Dashboard = Sheets("Dashboard") 
Set Covenant_Sheet = Sheets("Covenants") 
Set Cov_Date = Dashboard.Range("N74") 
Set Cov_Dates = Covenant_Sheet.Range("B4:AB4") 
Set Cov_Type = Covenant_Sheet.Range("B6:AB13") 
Set DB_Cov = Dashboard.Range("L76:L80") 
Set Cov_Type2 = Covenant_Sheet.Range("B6:B13") 



For Each Cell In Dashboard.Range("N76:N80") 
Cell.Value = Application.Index(Cov_Type, Application.Match(DB_Cov, Cov_Type2, 0), Application.Match(Cov_Date, Cov_Dates, 0)) 


Next 

End Subの

+0

このサイトを試してみて、モデルとしての例を使用します。https://www.deskbright.com/excel/using-index-match/ – Jsleshem

+0

私はExcelで正しいインデックス/マッチ式を有し、私がいましたVBAに入れようとしているので、私はコピー/ペーストフォーマットetxcのプロセスを踏まずに、他のワークブックにマクロを追加することができます。 – kwmoore1218

+0

また、コード内で計算が完了していることを確認してください。あなたのワークブックが – Jsleshem

答えて

0

私は、私は非常によく私の質問を説明したとは思いませんが、以下の答えがあります。ループを実行するためにx変数を追加する必要がありました。他にもいくつかの追加がありますが、以下ではインデックス/マッチループを実行する必要があります。

Sub Covenant() 

Dim Covenant_1 As Integer 
Dim Dashboard As Worksheet 
Dim Covenant_Sheet As Worksheet 
Dim Cov_Date As Range 
Dim Cov_Dates As Range 
Dim Cov_Type As Variant 
Dim DB_Cov As Variant 
Dim Cov_Type2 As Variant 
Dim Cov_Next As Range 



Set Dashboard = Sheets("Dashboard") 
Set Covenant_Sheet = Sheets("Covenants") 
Set Cov_Date = Dashboard.Range("M74") 
Set Cov_Dates = Covenant_Sheet.Range("B4:AB4") 
Set Cov_Type = Covenant_Sheet.Range("B6:AB13") 
Set DB_Cov = Dashboard.Range("K75") 
Set Cov_Type2 = Covenant_Sheet.Range("B6:B13") 
Set Cov_Next = Dashboard.Range("P74") 

For x = 1 To 5 
    For y = 1 To 5 
Cells(x + 75, 13) = Application.IfError(Application.Index(Cov_Type, Application.Match(DB_Cov.Offset(x, 0), Cov_Type2, 0), Application.Match(Cov_Date, Cov_Dates, 0)), "") 

    Cells(y + 75, 16) = Application.IfError(Application.Index(Cov_Type, Application.Match(DB_Cov.Offset(y, 0), Cov_Type2, 0), Application.Match(Cov_Next, Cov_Dates, 0)), "") 
    Next y 
Next x 
End Sub 
関連する問題