簡體   English   中英

跨多個列的索引匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM