Page 1 of 1

สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 12:51 pm
by kritsada_ie
จากไฟล์ที่แนบผมต้องการชีท Employee Work Report ดึงข้อมูลมาจากชีท Employee Work โดยมีเงื่อนไขอยู่ที่ชื่อของ Cell B1 ที่ชีท Employee Work Report ต้องเหมือนกับค่าใน Column A ชีท Employee Work และช่วงเวลาอยู่ระหว่าง Cell F1 และ G1 ผมลองหาดูโค้ดแล้วแต่ผมไม่ค่อยจะรู้เรื่องเลยเอามาประยุกต์ไม่ค่อยได้ครับ

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 1:13 pm
by bank9597
:D ลองตามนี้
ที่ A5 ชีท Employee Work Report คีย์
=IF(ROWS($A$5:A5)>COUNTIF('Employee Work'!$A$5:$A$100,$B$1),"",INDEX('Employee Work'!B$5:B$100,SMALL(IF('Employee Work'!$A$5:$A$100=$B$1,ROW('Employee Work'!$B$5:$B$100)-ROW('Employee Work'!$B$5)+1),ROWS($A$5:A5))))

กด Ctrl+Shift+Enter คัดลอกไปทางขวามือ แล้วคัดลอกลงล่างพร้อมกัน

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 1:27 pm
by kritsada_ie
ขอบคุณ คุณ bank9597 มากครับ แต่มีเรื่องรบกวนอีกนิดคือรู้สึกว่ามันยังไม่ได้กรองในเรื่องของวันที่อ่ะครับ คือผมต้องการให้มันเลือกมาเฉพาะในระหว่างวันที่ผมใส่ไว้ใน Cell F1 ถึง G1 อ่ะครับ

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 1:37 pm
by bank9597
:tt: ขออภัยครับ ผมยังอ่านโจทย์ไม่หมด

การจะทำแบบดังกล่าว อาจจะต้องมีการเพิ่มเซลล์ช่วยอีก หรือใช้สูตรที่ยากมากครับ ต้องขอดูก่อนครับ :D

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 1:48 pm
by kritsada_ie
ขอบคุณล่วงหน้าครับ... :)

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 2:52 pm
by bank9597
:D พยายามคิดสูตรรวบรัดในสูตรเดียว แต่มันยากเกินไปครับ ลองดูตามนี้
ที่ชีท Employee Work เซลล์ I5 คีย์ =IF(A5='Employee Work Report'!$B$1,IF(B5>='Employee Work Report'!$F$1,IF(B5<='Employee Work Report'!$G$1,TRUE,FALSE))) คัดลอกลงมาจนสุดแถว

ที่ชีท Employee Work Report เซลล์ A5 คีย์ =IF(ROWS($A$5:A5)>COUNTIF('Employee Work'!$I$5:$I$100,TRUE),"",INDEX('Employee Work'!B$5:B$100,SMALL(IF('Employee Work'!$I$5:$I$100=TRUE,ROW('Employee Work'!$B$5:$B$100)-ROW('Employee Work'!$B$5)+1),ROWS($A$5:A5))))

กด Ctrl+Shift+Enter คัดลอกไปทางขวามือ แล้วลงล่างพร้อมกันครับ

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Fri May 11, 2012 4:19 pm
by kritsada_ie
ขอบคุณมากๆครับ ...ได้แล้วครับ :P :P

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Sat May 12, 2012 6:32 am
by snasui
:D สามารถลดสูตรที่ชีท Employee Work โดยที่ชีท Employee Work Report เขียนสูตรตามด้านล่างครับ
  1. เซลล์ H1 คีย์
    =SUMPRODUCT(--(B1='Employee Work'!A5:A37),--(F1<='Employee Work'!B5:B37),--(G1>='Employee Work'!B5:B37))
    Enter
  2. เซลล์ A5 คีย์สูตรเพื่อแสดงรายการ
    =IF(ROWS(A$5:A5)>$H$1,"",INDEX('Employee Work'!$B$5:$B$37,SMALL(IF($B$1='Employee Work'!A5:A37,IF($F$1<='Employee Work'!B5:B37,IF($G$1>='Employee Work'!B5:B37,ROW('Employee Work'!$A$5:$A$37)-ROW('Employee Work'!$A$5)+1))),ROWS(A$5:A5))))
    Enter > Copy ไปด้านขวาและลงด้านล่าง
Note: ปรับช่วงข้อมูลในสูตรให้ตรงตามช่วงข้อมูลจริง

รบกวนช่วยดูสูตรให้หน่อยครับ

Posted: Sat May 12, 2012 9:39 am
by kritsada_ie
ที่เอกสารหน้า รับ-จ่าย Report ผมต้องการดึงข้อมูลจากหน้า รับ-จ่าย มาโดยมีเงื่อนอยู่ที่สาขา (Q6) และวันที่ (Q3 & S3) แต่ผมเขียนสูตรแล้วมันมาแต่บรรทัดบนอย่างเดียว บรรทัดต่อๆไปมันไม่ขึ้น ไม่ทราบว่าเป็นเพราะอะไรครับ

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Sat May 12, 2012 11:05 am
by snasui
:lol: ที่ไม่ได้ผลลัพธ์ตามต้องการเนื่องการกดแป้นให้รับสูตรไม่ถูกต้องครับ

การกดแป้นให้รับสูตรจะต้องกด 3 แป้น คือ Ctrl+Shift+Enter หากกดแป้นถูกต้องจะเห็นเครื่องหมายปีกกาคร่อมสูตร ปีกกานี้จะคีย์เข้าไปเองไม่ได้ นอกจากนี้การเลือกช่วงข้อมูลในสูตรไม่ควรเลือกเผื่อไว้จนเกินความจำเป็น ให้เลือกเท่าที่มีข้อมูลเพื่อให้คำนวณเร็วขึ้น

Re: สอบถามเรื่องการดึงข้อมูลครับ

Posted: Sat May 12, 2012 11:20 am
by bank9597
:D ผมดูไฟล์แล้ว ยึดตามแบบที่ผมตอบไว้ในกระทู้ล่าสุดด้านบน ซึ่งยังต้องอาศัยคอลัมน์เข้าช่วย ถ้าไม่อยากเพิ่มคอลัมน์ช่วย ก็สามารถใช้สูตรของอาจารย์รวบรัดขั้นตอนดังนี้

ที่ ชีท รับ-จ่าย Report เซลล์ N1 คีย์ =SUMPRODUCT(--(Q6='รับ-จ่าย'!$L$2:$L$100),--(Q3<='รับ-จ่าย'!$B$2:$B$100),--(S3>='รับ-จ่าย'!$B$2:$B$100))

เซลล์ B2 คีย์=IF(ROWS(B$2:B2)>$N$1,"",INDEX('รับ-จ่าย'!B$2:B$100,SMALL(IF($Q$6='รับ-จ่าย'!$L$2:$L$100,IF($Q$3<='รับ-จ่าย'!$B$2:$B$100,IF($S$3>='รับ-จ่าย'!$B$2:$B$100,ROW('รับ-จ่าย'!$L$2:$L$100)-ROW('รับ-จ่าย'!$L$2)+1))),ROWS(B$2:B2))))

กด Ctrl+Shift+Enter ลากไปทางขวามือแล้วลงล่างพร้อมกัน

Note : สูตรลักษณะนี้เมื่อใช้ดึงข้อมูลจำนวนมาก ทำให้การคำควณช้าเนื่องจากเป็นสูตรอาร์เรย์