:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

Lookup ข้อมูล

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#81

Post by joo »

ขอบคุณครับสำหรับคำแนะนำเข้าไปอ่านดูแล้วได้ความรู้เพิ่มมาอีกเยอะเลยครับ
อาจารย์ครับที่ D7 เงื่อนไขที่ว่าใส่รหัสอย่างเดียวก็ได้หรือเลือกจากรายการก็ได้ตรงนี้ผมทำได้แล้วครับ แต่ที่สงสัยคือว่า ถ้าเราเลือกจากรายการพอคลิกเลือกข้อมูลแล้ว รายการที่เลือกก็จะมาปรากฏที่ D7 เช่นแบบนี้ 10101 - JATU แต่ถ้าเลือกแล้วจะให้แสดงแค่ 10101 แบบนี้ได้ไหมครับ :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#82

Post by snasui »

:D ทำได้ด้วย VBA ครับ ปรับปรุงจาก Code เดิม เป็นตามด้านล่างครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$D$11" Then
    Call ChangeCellValue
End If
If Target.Address = "$D$7" Then
    Target = Left(Target, 5)
End If
Application.EnableEvents = True
End Sub
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#83

Post by joo »

ขอบคุณครับ ทดสอบแล้วได้ตามเงื่อนไขที่ต้องการแล้วครับ... :lol:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#84

Post by joo »

อาจารย์ครับ…ผมต้องการล็อคทุกซีทไว้ให้ดูได้อย่างเดียว เช่น ที่ซีท"บันทึกการลา" ถูกล็อคเซลล์ไว้ไม่ให้มีการแก้ไข พอเราคีย์ข้อมูลที่ซีท Main เสร็จแล้วกดบันทึก มันจะขึ้น bug ที่บรรทัดนี้ครับ
rTarget.PasteSpecial xlPasteValues หรือ ที่ Sheet2 ซึ่งเป็นตาราง Pivotable มีการป้องกันซีทไว้ พอกดบันทึกที่ซีท Main ก็จะขึ้น Bug ที่บรรทัดนี้ครับ Sheets("Sheet2").PivotTables("PivotTable1").PivotCache.Refresh
สรุปว่าถ้าซีทต่างๆถูกป้องกันไว้เมื่อมีการเปลี่ยนแปลงข้อมูลจะไม่สามารถทำได้ตรงนี้จะปรับแก้ Code อย่างไรเงื่อนไข เมื่อมีการเพิ่มข้อมูลให้ซีทยกเลิกการป้องกันเพื่อรับข้อมูลแล้วจึงค่อยกลับมาล็อคเหมือนเดิม
และที่ D11 พบว่าถ้าเลือกการลาประเภทอื่นนอกจากพักร้อน แล้วคีย์วันที่ในD12,D13 เป็น พ.ศ.สามารถบันทึกข้อมูลได้ตรงนี้แก้ยังไงดีครับ :P
ผมลองแล้วไม่ได้เลยครับอาจารย์ช่วยดู Code ให้หน่อยครับ :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#85

Post by snasui »

:D หลักการ Lock และปลด Lock ควรจะทำการ Lock Worksheet ต่าง ๆ ด้วย Code ครับ และเมื่อคลิก Run Macro ให้เริ่มด้วยการปลด Lock ชีทต่าง ๆ ทั้งหมดก่อน เมื่อ Macro ทำงานเรียบร้อยก่อนจบด้วย End Sub ค่อย Lock ไว้เช่นเดิม

กรณีที่ Worksheet ที่ใช้เก็บข้อมูลมีการเปลี่ยนแปลงแล้วต้องการให้มีการ Refresh PivotTable ก็ต้องยกเลิกการป้องกัน Worksheet ทีมี PivotTable ไว้ก่อนด้วย ไม่เช่นนั้นก็จะเกิด Error ครับ

กรณีมีเซลล์ให้เลือกได้ด้วย Validation หากมีเซลล์อื่นอ้างอิงเซลล์นี้ด้วยสูตรหรือด้วย Code จะต้องทำการปลดเซลล์ปลายทางนั้นด้วย หากทำการ Lock ไว้จะเกิด Error ครับ

ส่วน Code ด้านล่างทำงานไม่ถูกต้องนะครับ

Code: Select all

If Year(Range("D12,D13")) < Year(Date) - 10 Or Year(Range("D12,D13")) > Year(Date) + 1 Then
ผมเขียนเป็นตัวอย่างไว้แล้วที่นี่ http://www.snasui.com/viewtopic.php?p=3626#p3626
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#86

Post by joo »

อาจารย์ครับ...โค้ด Macro ที่ผมทำไว้ควรผูกไว้กับเหตุการณ์ไหนครับ ตัวอย่างโค้ดในไฟล์แนบก่อนหน้านี้ช่วยดูให้หน่อยครับรหัสปลดล็อคซีท 123 สำหรับโค้ดเช็ควันที่ใช้ได้ครับแต่เงื่อไขมันเปลี่ยนไปจากเดิมจึงทำให้แจ้งเตือนไม่ได้ช่วยดูในไฟล์แนบอีกทีครับ :mrgreen:
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#87

Post by snasui »

:D เนื่องจากผมไม่มีเวลาตรวจดูทุกชีทว่ามีสูตรเกี่ยวข้องกันไปมาอย่างไร การ Protect ชีทไว้จะมีผลกับกรณีที่มีสูตร Link กันไปมาครับ รวมทั้งการทำ Validation ด้วย ผมจะบอกหลักการสำหรับการ Unprotect ที่ผมคิดว่าน่าจะเป็น แล้วค่อยปรับกันไปเรื่อย ๆ ครับ

สิ่งที่คุณ Joo น่าจะทราบดีกว่าผมคือมีเซลล์ไหน ชีทไหนเชื่อมโยงกันบ้าง หากชีทต้นทางเปลี่ยนแล้วชีทปลายทางกระทบ หรือเซลล์ใดที่เชื่อมโยงกันบ้าง เมื่อเซลล์ต้นทางเปลี่ยนแล้วเซลล์ปลายทางกระทบ เช่นนี้จะต้องทำการ Unprotect ไปด้วยกันครับ

การ Unprotect ทีละหลาย ๆ ชีทก็แค่เพิ่ม Code ในการ Unprotect ทุกชีทที่ถูกกระทบกับการเปลี่ยนแปลงในสิ่งที่ต้องการทำปัจจุบันเข้าไปครับ

เช่นกำลังจะเปลี่ยนเซลล์ D5 ในชีท Main แต่เมื่อเปลี่ยนแล้วกระทบกับชีทข้อมูลบุคคล บันทึกการลา เราสามารถที่จะใช้ Code ในการ Unprotect ทุกชีทที่กล่าวมาเมื่อทำการเลือกเซลล์ D5 เมื่อเลือกแล้ว ดำเนินการต่าง ๆ จนครบตามต้องการแล้วก็ค่อย Protect ไว้ใหม่ครับ

สำหรับภาพด้านล่างเป็นการคำนวณแบบวน ควรแก้ไขเพื่อไม่ให้คำนวณวนครับ
You do not have the required permissions to view the files attached to this post.
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#88

Post by joo »

การปลดล็อคและล็อคซีทเพื่อเพิ่มข้อมูลทำได้แล้วครับ... :D ที่ ModUle1ผมใส่รหัสแบบนี้ครับ
....
If Sheets("Main").Range("E23") = False Then
Sheets("ºÑ¹·Ö¡¡ÒÃÅÒ").Select
ActiveSheet.Unprotect
rSource.Copy
rTarget.PasteSpecial xlPasteValues
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
MsgBox "ºÑ¹·Ö¡àÃÕºÃéÍÂáÅéÇ"
Sheets("Main").Range("D6:E6, D11:E13").ClearContents
Sheets("Sheet2").Select
ActiveSheet.Unprotect
Sheets("Sheet2").PivotTables("PivotTable1").PivotCache.Refresh
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Main").Select
Sheets("Sheet1").PivotTables("PivotTable4").PivotCache.Refresh
Else
MsgBox "ÃÒ¡Ò÷Õè·èÒ¹¡ÓÅѧºÑ¹·Ö¡ÁÕã¹ÃкºáÅéÇ"
Exit Sub
End If
End Sub
แต่ถ้าซีทที่ป้องกันไว้ใส่รหัสล็อคด้วย เช่น 123 เวลาทำการปลดล็อคและล็อคกลับที่เดิมอยากให้ระบบใส่รหัส 123 ให้อัตโนมัติ ขอคำแนะนำต้องใส่โค้ดยังไงครับ
ที่ N27 สูตรอ้างอิงแบบวงกลมผมแก้แบบนี้ไม่ทาบว่าถูกต้องหรือไม่โดยเข้าไปตั้งการคำนวณซ้ำให้เป็น1
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#89

Post by snasui »

:lol: วิธีแก้การคำนวณวนไม่ใช่ไปแก้ค่าใน Options > Calculation ครับ จะต้องแก้สูตรไม่ให้วน นอกจากตั้งใจจะให้วนถึงจะแก้โดยเข้าไปกำหนดค่าที่ Options > Calculation ครับ

สำหรับ Code การ Protect และ Unprotect แบบมี Password ดูตัวอย่างที่ผมตอบไว้ที่นี่ครับ http://topicstock-tech.pantip.com/tech/ ... 910.html#6 :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#90

Post by joo »

ขอบคุณครับที่แนะนำ พอได้แนวทางผมนำมาประยุกต์ปรับปรุงนิดหน่อนตอนนี้สามารถใช้งานได้ตามที่ต้องการแล้วครับ :lol:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#91

Post by joo »

อาจารย์ครับ...มีปัญหามารบกวนขอคำชี้แนะอีกแล้วครับคือว่า ที่ซีท “Main” ตรง D12,D13 ถ้าหากเราลาแบบเต็มวัน เช่นที่เซลล์ D12 คีย์วันที่ 20/01/2011 และที่ D13 คีย์วันที่ 20/01/2011 ที่เซลล์ D14 ก็จะแสดงเป็นเลข 1 แล้วถ้าหากว่าลาเพียงครึ่งวัน เช่นลาในวันที่ 21/01/2011 ตั้งแต่เวลา 12.30 ถึง 16.30 อยากให้ที่เซลล์D14 แสดงเป็น 0.5 แบบนี้ครับต้องทำยังไงครับ :P
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#92

Post by snasui »

:mrgreen: โปรแกรมสำหรับการลางานปกติจะเพิ่มช่องให้เลือกว่าครึ่งวันหรือเต็มวันสำหรับกรณีที่เป็นการลาพักร้อนเพื่อจะได้ใช้เป็นเงื่อนไขให้คิดครึ่งวันครับ ส่วนลาป่วยอาจจะคิดกันเป็นรายชั่วโมง

การกรอกวันที่ ตามด้วยเวลา เช่น 22/01/2011 15:25 สามารถที่จะคิดเวลาเป็นวัน เป็นครึ่งวันได้ไม่ยาก แต่คงต้องระบุเพิ่มว่า กี่ชั่วโมงถือเป็นครึ่งวัน กี่ชั่วโมงถือเป็นเต็มวันครับ :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#93

Post by joo »

เงื่อนไขแบบนี้ครับ...
ระยะเวลา 8 ชั่วโมง เป็นเต็มวัน
ระยะเวลา 4 ชั่วโมง คือครึ่งวัน
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#94

Post by snasui »

:D
joo wrote:อาจารย์ครับ...มีปัญหามารบกวนขอคำชี้แนะอีกแล้วครับคือว่า ที่ซีท “Main” ตรง D12,D13 ถ้าหากเราลาแบบเต็มวัน เช่นที่เซลล์ D12 คีย์วันที่ 20/01/2011 และที่ D13 คีย์วันที่ 20/01/2011 ที่เซลล์ D14 ก็จะแสดงเป็นเลข 1 แล้วถ้าหากว่าลาเพียงครึ่งวัน เช่นลาในวันที่ 21/01/2011 ตั้งแต่เวลา 12.30 ถึง 16.30 อยากให้ที่เซลล์D14 แสดงเป็น 0.5 แบบนี้ครับต้องทำยังไงครับ :P
joo wrote:เงื่อนไขแบบนี้ครับ...
ระยะเวลา 8 ชั่วโมง เป็นเต็มวัน
ระยะเวลา 4 ชั่วโมง คือครึ่งวัน
:D ถ้าหากมีการกรอกวันที่ตามด้วยเวลา ลองตามนี้ครับเซลล์ D14 คีย์

=Hour(D13-D12)/8

Enter :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#95

Post by joo »

- ที่ซีท Main ทดลองดูที่เซลล์อื่นแล้วมันแสดงค่าได้จริงอยู่ แต่ว่าที่ D14 มันมีเงื่อนไขคำนวณวันแบบไม่นับวันเสาร์อาทิตย์อยู่ลองคีย์แบบใส่เวลาต่อท้ายที่ D12,D13 มันก็คำนวณไม่ได้ ยิ่งถ้าคลิกเลือกที่ปฏิทินแล้วจะกำหนดเวลาอย่างไรครับ :mrgreen:
- ที่ซีท Report1 ช่วง I17:I35 ค่าที่ลิงค์มาแสดงไม่ตรงรบกวนอาจารย์ช่วยดูสูตรให้หน่อยครับ :mrgreen:
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#96

Post by snasui »

:D ทีละคำถามก่อนนะครับ ปัจจุบันค่าที่คีย์มาแล้วนั้น

D12 คือ 21/6/2010 8:00:00
D13 คือ 22/6/2010 16:00:00

ต้องการได้คำตอบที่ D14 เป็นค่าใด ด้วยวิธีคิดอย่างไรครับ จะได้คำนวณเปรียบเทียบได้ :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#97

Post by joo »

ปกติค่าที่ D12,D13 จะคีย์วันที่แบบนี้ 20/01/2011 หรือเรียกจากปฏิทิน ที่ D14 ก็จะแสดงจำนวนวันให้เลย เช่นที่ D12 คีย์ 20/01/2011,D13 คีย์ 20/01/2011 ค่าที่แสดงใน D14 คือ 1 วัน(8 ชั่วโมง๗
ที่นี้ถ้าเงื่อนไขต้องการลาครึ่งวัน(ชั่วโมง)ที่ D12 ก็จะคีย์เป็น 21/01/2011, D13 คีย์ 21/01/2011 ที่ D14 ต้องการให้แสดง 0.5 วัน ผมลองทำแบบนี้ใส่เงื่อนไขไว้ถ้า D15 = ครึ่งวัน ก็ให้แสดง D14 = 0.5 ถ้าไม่ใช้ก็ให้แสดงค่าการคำนวณตามปกติ
ที่ D14 คีย์ =IF(D12="","",IF(D13="","",IF(D15="ครึ่งวัน",0.5,SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(D12&":"&D13)),2)<6))))) ค่าที่แสดงออกมาให้ก็พอใช้ได้ครับ :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#98

Post by joo »

อาจารย์ครับ...ช่วยดูสูตรที่ Report1ให้ด้วยนะครับ ที่เซลล์ I17:I35 ค่าที่ลิงค์มาไม่ตรงครับมันจะลิงค์มาเฉพาะปี2553 แต่ค่าของปีอื่นๆ มันจะมองไม่เห็นครับ สูตรที่ผมทำไว้แบบนี้ครับ =IF(C17="","",VLOOKUP(C17,Report!$C$7:$H$1440,4,0))ต้องปรับแก้อย่างไรดีครับ :P
User avatar
snasui
Site Admin
Site Admin
Posts: 30920
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: Lookup ข้อมูล

#99

Post by snasui »

:D เนื่องจาก Vlookup ที่ใช้นั้นสามารถดึงข้อมูลมาเพียงเงื่อนไขเดียวโดยไม่ได้ดูเงื่อนไขที่เป็นปี จึงทำให้ค่าที่ได้ไม่ถูกต้อง จะต้องปรับให้เป็นสูตรที่ดึงได้หลายเงื่อนไข เช่น Index, Match ซึ่งใช้แบบ Array หรือ Lookup แบบที่ผมทำตัวอย่างมา นอกจากนี้ได้เพิ่มคอลัมน์ช่วยเพื่อแสดงปีให้กับข้อมูลที่ได้จากการ PivotTable ด้วย โดยมีวิธีการดังนี้

1. ที่ชีท Report เซลล์ I7 คีย์สูตรเพื่อ List ค่าปีมาแสดง

=LOOKUP(9.99999999999999E+307,B$7:B7)

2. ที่ชีท Report1 เซลล์ I6 คีย์สูตรเพื่อหาจำนวนวันลาตามแต่ละปี

=IF(C6="","",LOOKUP(2,1/(($B6=Report!$I$7:$I$36)*($C6=Report!$C$7:$C$36)),Report!$F$7:$F$36))

ดูไฟล์แนบประกอบครับ
You do not have the required permissions to view the files attached to this post.
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: Lookup ข้อมูล

#100

Post by joo »

อาจารย์ครับ...ช่วยอธิบาย 3 สูตรนี้ให้หน่อยครับมันทำงานยังไงครับจะได้นำไปประยุกต์ใช้ต่อได้ถูก
1. =LOOKUP(9.99999999999999E+307,B$7:B7)
2. =IF(C6="","",LOOKUP(2,1/(($B6=Report!$I$7:$I$36)*($C6=Report!$C$7:$C$36)),Report!$F$7:$F$36))
3.=INDEX(Report1!$D$6:$D$30,MATCH(1,IF(Report1!$C$6:$C$30=C23,IF(Report1!$B$6:$B$30=B23,1)),0))
แล้วการใช้สูตรที่ดึงข้อมูลได้หลายเงื่อนไข เช่น Index, Match ซึ่งใช้แบบ Array หรือ Lookup มันแตกต่างกันอย่างไรตัวไหนทำงานได้เร็วและประหยัดทรัพยากรกว่ากันเมื่อข้อมูลมีปริมารเพิ่มมากขึ้น :D
ขอบคุณครับ
Post Reply