Board logo

標題: [發問] 請問如何從多個關聯工作表中取得所需資料? [打印本頁]

作者: 97forum    時間: 2015-9-4 11:00     標題: 請問如何從多個關聯工作表中取得所需資料?

本帖最後由 97forum 於 2015-9-4 11:08 編輯

[attach]21901[/attach]

請教各位先進前輩:
       各表說明(同活頁簿、不同工作表,表A、B、C資料來源為SQL取得):
主表:最終所要的資料表(列印用)
表A:客戶各項基本資料
表B:客戶送貨地址代碼表(僅有代碼)
表C:客戶地址代碼地址明細表(代碼對應地址)
需求說明:
根據主表中之客戶代碼查詢出表A中的基本資料 ,查詢出表B之送貨地址代碼進而(查詢)帶出表C的詳細地址。
目前小弟邏輯卡在不知如何能在主表中一次查詢出來表C的地址明細(必須根據表B的代碼查詢正確送貨地址),
以上懇請各位先進前輩指導!
[attach]21900[/attach]
作者: starry1314    時間: 2015-9-5 00:49

回復 1# 97forum

看看
輸入客戶代碼後 帶出其他欄對應資料?
    [attach]21909[/attach]
作者: lpk187    時間: 2015-9-5 01:28

回復 2# starry1314

以資料庫關聯來說,要精確找表C表是不可能的任務。
關聯必須是唯一性的。以C表來說,找得到"K001(客戶代碼), 001(地址代碼)",但"K001(客戶代碼), 002(地址代碼)"呢?(向下查找),反過來後又換"001(地址代碼),但K001(客戶代碼)"找不到了
所以主表必須要要加上地址代碼才行
作者: 准提部林    時間: 2015-9-5 10:58

如果〔表B〕同一〔客戶代碼〕有一個以上的〔送貨地址〕,
主表無〔送貨地址〕索引是無法查!

若〔表B.客戶代碼〕具唯一性:
D3:=LOOKUP(,0/(A3=J$3:J$16)/(VLOOKUP(A3,F$13:G$19,2,)=K$3:K$16),L$3:L$16)
 
作者: starry1314    時間: 2015-9-5 11:30

回復 3# lpk187

感謝指導~想說主表只有三欄,就直接讓他找對應資料了..考慮不周 :'(
作者: ML089    時間: 2015-9-5 19:34

資料庫資料分割得太細,浪費查詢的時間,
客戶基本資料應該包含 名稱、電話、地址 .....
需要這樣查來查去的實在浪費時間
作者: 97forum    時間: 2015-9-7 08:35

資料庫資料分割得太細,浪費查詢的時間,
客戶基本資料應該包含 名稱、電話、地址 .....
需要這樣查來查去 ...
ML089 發表於 2015-9-5 19:34

ML089 前輩,因為這是SQL的資料庫撈出來的資料,所以才會有這種關聯的問題。因為客戶中需要的資料多,所以可能才如此分表。
作者: 97forum    時間: 2015-9-7 08:51

如果〔表B〕同一〔客戶代碼〕有一個以上的〔送貨地址〕,
主表無〔送貨地址〕索引是無法查!

若〔表B ...
准提部林 發表於 2015-9-5 10:58


准提部林先進前輩:謝謝您的回覆,結果是我所需求的資料,只是後輩邏輯無法理解且貫通對於在公式上的用意,不知是否方便可以解說讓後輩明白?
作者: 准提部林    時間: 2015-9-7 11:24

本帖最後由 准提部林 於 2015-9-7 11:26 編輯

回復 8# 97forum

這是〔雙條件〕找查:
條件1:客戶代碼=J欄,(A3=J$3:J$16)
條件2:送貨地址=K欄,但〔送貨地址〕須從〔表B〕抓出,故須先配一次 VLOOKUP(A3,F$13:G$19,2,) 以抓出相對應值,
    然後再與K欄比對:(VLOOKUP(A3,F$13:G$19,2,)=K$3:K$16)

以上兩公式合併:=(A3=J$3:J$16)/(VLOOKUP(A3,F$13:G$19,2,)=K$3:K$16),
會產生含〔0,1.錯誤值〕的陣列,
例如:{0;1;0;0;0;0;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}

透過:0/(A3=J$3:J$16)/(VLOOKUP(A3,F$13:G$19,2,)=K$3:K$16) 轉化,只會出現〔0.錯誤值〕陣列,
轉化結果:{#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}

 
=LOOKUP(0,0/(A3=J$3:J$16)/(VLOOKUP(A3,F$13:G$19,2,)=K$3:K$16),L$3:L$16)

LOOKUP即可找出0的位置,並取出與其相對應位置L欄的內容,
註:LOOKUP第一參數,使用0,1或更大值,其效果相用∼
 
作者: 97forum    時間: 2015-9-8 08:35

回復  97forum

這是〔雙條件〕找查:
條件1:客戶代碼=J欄,(A3=J$3:J$16)
條件2:送貨地址=K欄 ...
准提部林 發表於 2015-9-7 11:24

感謝准提部林先進前輩的說明,讓我更進一步了解可如此運用。再次感謝您的幫忙!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)