
我有 2 張 Excel 表格。
一個字段包含日期字段。
例如 A-1 日期 1
第二張表我有一個帶有 ID 的日期範圍。
A-1 開始日期 A2- 結束日期 A3- 日期範圍 ID
我需要在第一張工作表上建立一個新字段,其中包含 Date1 的範圍 ID。
例如,在第二張紙上,我的範圍為 A1-2017 年 5 月 1 日 A2-2017 年 5 月 30 日 A3-7
在第一張紙上 A1-2017 年 5 月 3 日。 所以我想在我的第一張紙上有一個新列,其值為 7。
我怎麼能在Excel中做到這一點?
答案1
正如 @Ron Rosenfeld 已經指出的,如果 Sheet2 中的範圍包含 Sheet1 中的所有日期並且沒有重疊,則簡單的 VLOOKUP 應該可以工作。但是,如果 Sheet2 中的日期範圍不是按升序排列,並且之間有間隙並且可能重疊。嘗試這個解決方案。限制是它應傳回 Sheet1 中的資料位於範圍內的日期範圍的第一個範圍 ID。
在此範例中,Sheet1 在 A1:A10 列中具有日期。 Sheet2 的開始日期位於 A1:A7 中,結束日期位於 B1:B7 中,範圍 ID 位於 C1:C7 中。
在 Sheet1 儲存格 B1 中輸入下列陣列公式。
=IF(ISERROR(INDEX(Sheet2!$C$1:$C$7,MATCH(1,IF(A1>=Sheet2!$A$1:$A$7,IF(A1<=Sheet2!$B$1:$B$7,1,0)),0))),"Not Found",INDEX(Sheet2!$C$1:$C$7,MATCH(1,IF(A1>=Sheet2!$A$1:$A$7,IF(A1<=Sheet2!$B$1:$B$7,1,0)),0)))
之後按 CTRL+SHIFT+ENTER 鍵使其成為陣列公式。現在您應該在網址列中看到用花括號括起來的公式。現在將其向下拖曳到所需的行。現在,B 列應從 Sheet2 中取得對應的範圍 ID,其中 A 列中的日期屬於該範圍。
公式基於檢查巢狀 IF,根據匹配範圍傳回 TRUE、FALSE 數組,並使用外部 INDEX-MATCH 取得符合 1 的第一個位置,並從 Range ID 欄位傳回該位置的值。