これは基本的には修正されたINDEX/MATCH
の式であるが、別のブックの変数やヘッダーに依存するだけでなく、2つのパラメーター。私は間違って行くよどこ作業していないINDEX-MATCHを修正するには
Option Compare Text
Function DATAFILL(ID_number, source_headerRow) As Variant
ID_header_name = Cells.Item(1, ID_number.column).Value
Dim wb As String, ws As String
Dim ID_src As Range
'check if source_headerRow is an external workbook
If source_headerRow Like "'" Then
src = Split(source_headerRow.address(External:=True), "!")(0)
wb = Replace(Split(src, "]")(0),"[","")
ws = Split(src, "]")(1)
id_col = Application.WorksheetFunction.Match(ID_header_name, source, 0)
Set ID_src = Workbooks(wb).Worksheets(ws).Range(Cells(1, id_col))
Else
Set ID_src = Range(Cells(1, Application.WorksheetFunction.Match(ID_header_name, source_headerRow, 0)))
End If
headername = "Shift" 'placeholder
Set addr = Workbooks(wb).Range("A:Z")
DATAFILL = Application.WorksheetFunction.Index(addr, Application.WorksheetFunction.Match(ID_number, ID_src), Application.WorksheetFunction.Match(headername, source_headerRow, 0))
End Function
私はVBAに非常に新しいですので、私は正確に突き止めることができない... はどんなに私は何をすべきか、私は#VALUE!
エラーを取得していません。
また、VBA /マクロを使用しないでINDEX/MATCH
ユーザーを友好的にする方法はありますか?
にする必要があります['OFFSET'](https://support.office.com/en-us/article/OFFSET-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66)が役立ちます。 –
は、配列=((A:A = criteria1)*(B:B = criteria2)*(C:C))を使用して行うことができます。 –
'source =' src = Split(source.address(External:= True)、 "!")(0) ')がどこにあるのかわかりません。これが問題だろうか? – aucuparia