
我遇到了一些問題,如下所述:我有一個工作表,其中包含具有不同井名稱的 A 列。在第二列和第三列中,有地質層的頂部和底部深度以及層的名稱。範例:Well_XYZ --- 40.02 --- 40.55 --- Layer_NAME
在另一個工作表中,我列出了在這些不同鑽孔處採集的樣本列表,如 A 列中的另一個工作表中所述,具有特定的樣本深度。例:樣品-XYZ --- 40.34
現在,我想知道,在檢查每個鑽孔深度間隔的樣本深度時,我可以使用哪個公式(用 EXCEL 單元格編寫)將 Layer_NAME 添加到樣本 ID 表中。我嘗試了幾種方法(使用 INDEX/MATCH、VLOOKUP),但它們都無法正常工作(或根據我的程式設計 R“邏輯”,“缺少參數”不接受公式)。
因為我還不想將這些事情外包給 R,而是提高我的 Excel 知識(它使用與 Python 或 R 不同的「方案」和方法),如果您能幫助我解決這個問題,我將非常高興並帶我進入「卓越思維」的世界。 :)
預先非常感謝您!
答案1
在網路上發布一個實際的 XL 檔案來查看會很有幫助,但我嘗試使用以下數據:
哦,我沒想到會這樣。 SU將我貼上的表格變成了圖像。好的,我們就用它吧。
然後,你的另一張紙就像:
公式為:
=LOOKUP(B2,Sheet1!B:B, Sheet1!D:D)
我從這裡得到這個:https://exceljet.net/formula/lookup-value- Between-two-numbers
但這有一些大問題!首先,由於 Well 是第一個工作表中的第一個列名稱,因此我們必須假設一個工作表中可以有多個井。這本身並不是問題。問題是頂部列中的資料需要排序(升序)。因此,如果您還有另一口井,並且您的資料如下所示:
那麼你就會有重疊的範圍(40.34 分成 2 個範圍),並且你可能會得到錯誤的結果(你將得到最後一個匹配項)。如果您可以修改範例頁面以將孔名稱保留為單獨的列,則您可以使用它來「過濾」第一個工作表,然後對結果執行上面的查找。這要複雜得多,但絕對可行,請參閱這裡和這裡。
答案2
我認為您的問題中缺少一些詳細信息,但我認為您必須在樣品表上提供井名。因此,擴展另一個答案,您可以使用XLOOKUP
井深度的過濾器。
=XLOOKUP(H2,FILTER($B$2:$B$5,$A$2:$A$5=$G2),FILTER($D$2:$D$5,$A$2:$A$5=$G2),"",-1,1)
為簡單起見,我將樣本資料放在同一張表上。
第一個FILTER
只是傳回 B 列中的值,其中 A 列與目前行(位於 G 列中)的孔名稱相符。這只是一個包含兩個項目的陣列{40.02,40.55}
。這些是XLOOKUP
將要搜尋的值。
第二個FILTER
是傳回 D 列中的值,其中 A 列與目前行(同樣是 G 列)的孔名稱相符。這是兩個值{XYZ_1,XYZ_2}
。這些現在對應於上面列出的兩個數值。如果我們與第一個查找值匹配,我們將返回第一個圖層名稱,如果我們與第二個查找值匹配,我們將返回第二個圖層名稱。
第四個參數是XLOOKUP
如果找不到匹配項則傳回的內容。在我們的例子中,是一個空字串。
第五個參數是這個問題的重要參數。-1
用於“完全匹配或下一個較小的項目”。當我們嘗試將樣本中的任何值與此列表進行匹配時,我們將搜尋查找數組並找到不大於我們正在搜尋的值的最接近的匹配項。最後一個參數告訴函數要搜尋的方式。可以省略,因為預設為 1。
因此,我們在上面的兩個數字的數組中搜尋40.34
。由於我們將得到不大於該值的最接近的匹配項,因此我們將得到40.02
,它是第一個數組項。因此,我們將從包含圖層名稱的第二個陣列中傳回第一個陣列項目 - XYZ_1
。
總而言之,過濾器幫助我們避免不同井可能具有相似深度的問題,並且近似查找幫助我們從過濾列表中找到“最接近”的匹配。