[英]Index match across multiple columns
我正在嘗試與 B 列(日期)中的索引進行索引匹配,匹配是從單獨的工作表中找到工作訂單號(例如示例 1、示例 2)並匹配下面顯示的選項卡屏幕。
在我看來,它看起來像 =INDEX(B:B,MATCH("A1",E2:BP200,0)),但是它不會查看所有范圍以找到匹配項。
我有一個在技術上有效的公式,它是 "=@IFNA(IFS(ISNUMBER(MATCH([@Batch],'Production Plan':E,E,0)):INDEX('Production Plan',B,B:MATCH ([@Batch],'Production Plan'.EE0))"...對每一列重復。但是這使得計算速度非常慢。
任何幫助將不勝感激。
一種解決方案是使用“range.find”創建 VBA function,其中“range”是您的 E:BP 區域。
因此,您可以在下面創建 function,以將找到第一個匹配項的行號返回到您的訂單號。 function 的編寫方式,它將返回整個工作表中的行號(例如,如果您查找“示例 1”,它應該告訴您“5”)。 如果出現錯誤或找不到您的搜索詞,它還設置為返回 -1,因此您可能希望進行更好的錯誤處理。
所以我在這里建議使用 INDEX(B:B,rowmatch_exact("A1",E1:BP200,"columns")) 或 INDEX(B:B,rowmatch_exact("A1",E1:BP200,"rows")) .
Function rowmatch_exact(sought As Variant, range As range, searchdirection As String) As Integer
On Error GoTo ErrorDone
If searchdirection = "columns" Then
rowmatch_exact = range.Find(what:=sought, searchorder:=xlByColumns, LookIn:=xlValues, lookat:=xlWhole).Row
ElseIf searchdirection = "rows" Then
rowmatch_exact = range.Find(what:=sought, searchorder:=xlByRows, LookIn:=xlValues, lookat:=xlWhole).Row
Else
GoTo ErrorDone
End If
GoTo Done:
ErrorDone:
rowmatch_exact = -1
Done:
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.