返回列表 上一主題 發帖

[發問] 請教:如何根據多項條件從資料庫搜尋

[發問] 請教:如何根據多項條件從資料庫搜尋

各位師兄/姐好,

問題:請問該如何根據多項條件從資料庫搜尋
在附件的"C2"的位置輸入"日期"後, (PS:這一欄是否可以做成下拉式選單)
則"B5"的欄位會根據"日期"和該行列的資訊,如"Call*未沖銷"及"9000"
到資料庫去搜尋到正確的數字。 Book1.rar (5.48 KB)

小弟曾嘗試用函數Dget,但是發生錯誤,又不知如何做,請大家不吝指教,謝謝。

回復 1# JackieKM



資料 B24:N44 並非標準資料庫格式,無法使用DGET等資料庫函數
標準資料庫格式需整理為6欄資料,資料庫欄位 : 日期、履約價、Call*未沖銷、Call*未沖銷契約量增減、Put*未沖銷、Put*未沖銷契約量增減

以目前資料格式可以用查詢函數處理,用MATCH查詢日期位置,用OFFSET抓取資料。
因表格設計將原資料分隔,所以公式分為兩個,不然用B5公式右拉下拉就可以完全處理。

B5 =OFFSET($C$27,ROW(A1)-1,MATCH($C$2,$24:$24,)+COLUMN(A1)-4)
右拉一格再全部下拉複製公式

E5 =OFFSET($C$27,ROW(A1)-1,MATCH($C$2,$24:$24,)+COLUMN(C1)-4)
右拉一格再全部下拉複製公式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 JackieKM 於 2014-7-21 00:47 編輯

回復 2# ML089

非常感謝ML089大大的幫忙,函數經測試沒有問題,也很抱歉沒有馬上回覆,
因為我對於眾多的函數仍相當陌生,所以花了很長時間研究,有以下問題,如有時間再請多多幫忙,謝謝。
問題一:請問為什麼ROW(A1)需要-1,COLUMN(A1)需要-4?

再來是我發現原先的表格不理想,如ML089大大講的"非標準資料庫格式",沒辦法做搜尋,
所以我另外重做,如附件 Book.rar (156.04 KB) 但有以下問題

問題二:新表格我有建立巨集,希望做下拉式選單,位置於B3和C3,B3選定後C3才決定,
B3 ok,但C3卻發生錯誤,C3資料驗證的來源為 =INDIRECT($B$3&"交易日期")
後有發現某些巨集名稱多了下引線_,但不知該如何修改?

問題三:根據新的表格,該如何運用搜尋的功能,例如在B6的位置,
依下列條件"交易期別"、"交易日期"、"買/賣權"、"履約價"及"未沖銷契約數",去資料總表找到相對應的數字?

謝謝。

TOP

回復 3# JackieKM
刪除原有的所有定義名稱,重新建立已下四個定義名稱
a
=OFFSET(七月資料總表!$A$2,,,COUNT(七月資料總表!$A:$A),16)
x
=COUNTA(OFFSET(七月日期總表!$A$2,,MATCH(資料查詢!$B$3&資料查詢!$C$2,七月日期總表!$1:$1,0)-1,50,))
交易日期
=OFFSET(七月日期總表!$A$2,,MATCH(資料查詢!$B$3&資料查詢!$C$2,七月日期總表!$1:$1,0)-1,x,)
交易期別
=OFFSET(七月日期總表!$B$1,1,,COUNTA(七月日期總表!$B:$B)-1,)

B3驗證清單來源
=交易期別
C3驗證清單來源
=交易日期
B6公式
=SUMPRODUCT((INDEX(a,,4)=$D6)*(INDEX(a,,5)=B$4)*(INDEX(a,,1)=$C$3)*(INDEX(a,,3)=$B$3)*INDEX(a,,12))
向下複製
E6公式
=SUMPRODUCT((INDEX(a,,4)=$D6)*(INDEX(a,,5)=E$4)*(INDEX(a,,1)=$C$3)*(INDEX(a,,3)=$B$3)*INDEX(a,,12))
向下複製
選擇權 - 七月.zip (209.39 KB)
學海無涯_不恥下問

TOP

回復 4# Hsieh

感謝Hsieh大大的幫忙,函數沒有問題,更新資料庫也可以,真的是太感謝了。

還有個不請之請,就是"未沖銷契約量增減"這一欄是"當天的未沖銷契約量"減去"前一天的",請問該如何寫?謝謝。

TOP

回復 3# JackieKM

問題一:請問為什麼ROW(A1)需要-1,COLUMN(A1)需要-4?

B5 =OFFSET($C$27,ROW(A1)-1,MATCH($C$2,$24:$24,)+COLUMN(A1)-4)

OFFSET($C$27,y列,x欄),y列、x欄初始值為0,所以將變數值初始值校調為0

y列
        ROW(A1) =1
        ROW(A1) - 1 = 0

x欄
        MATCH($C$2,$24:$24,) 查詢 2014/7/11 為 3
        COLUMN(A1) = 1
        MATCH($C$2,$24:$24,) + COLUMN(A1) -4 = 0
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 5# JackieKM
C6=B6-SUMPRODUCT((INDEX(a,,4)=$D6)*(INDEX(a,,5)=B$4)*(INDEX(a,,1)=($C$3-1))*(INDEX(a,,3)=$B$3)*INDEX(a,,12))
F6=E6-SUMPRODUCT((INDEX(a,,4)=$D6)*(INDEX(a,,5)=E$4)*(INDEX(a,,1)=($C$3-1))*(INDEX(a,,3)=$B$3)*INDEX(a,,12))
學海無涯_不恥下問

TOP

回復 6# ML089

感謝ML089大大的解說,我懂了,謝謝。

TOP

回復 7# Hsieh

感謝Hsieh大大的幫忙,表格OK了,謝謝。

TOP

回復 7# Hsieh

Hsieh大大您好,不好意思,小弟又來麻煩您了,
根據大大上次的幫忙,我在另一個表格將所學的運用上去,有錯誤發生但我找不到問題點,想請你幫忙
以下是相關的函數及附件 Temp.rar (84.71 KB)

a
=OFFSET(臺股期貨!$A$2,,,COUNT(臺股期貨!$A:$A),10)         PS:問題點好像是在這

D7
=SUMPRODUCT((INDEX(a,,1)=$C7)*(INDEX(a,,3)=$B7) *(INDEX(a,,4)=$D3)*(INDEX(a,,5)=??)*INDEX(a,,6))
a1:日期     a3:商品名稱(契約名稱)    a4:到期月份(週別)      a5:交易人類別(代碼0)

如果有甚麼錯誤的地方還請指正,麻煩Hsieh大大了,謝謝。

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題