Page 1 of 1

การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 2:08 pm
by visarut
จากเอกสารแนบ ที่ตำแหน่ง D3, Sheet Master_sch ตอนทำ 2 เงื่อนไข ได้คำตอบ แต่พอทำ Match 3 เงื่อนไข แต่ค่าไม่แสดงคำตอบ ขอคำชี้แนะด้วยครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 2:18 pm
by snasui
:D ช่วยอธิบายเงื่อนไขทั้งหมดมาด้วยครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 2:38 pm
by visarut
snasui wrote::D ช่วยอธิบายเงื่อนไขทั้งหมดมาด้วยครับ
ขออภัยครับอาจารย์
เงื่อนไขคือ ต้องการให้ช่อง D2 ถึง D291 แสดงคำตอบที่ตรงกับ Sheet prod_cal โดย ดูข้อมูลจากตำแหน่ง $A1,$B$1,$B2 ของ Sheet Master_sch

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 3:03 pm
by snasui
:D ที่ D2 ปรับสูตรเป็นด้านล่างครับ

=INDEX(prod_cal!$A$1:$Q$1000,MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0),MATCH(B$1,prod_cal!$A$1:$AZ$1,0))

Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง

!
Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 3:50 pm
by visarut
snasui wrote::D ที่ D2 ปรับสูตรเป็นด้านล่างครับ

=INDEX(prod_cal!$A$1:$Q$1000,MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0),MATCH(B$1,prod_cal!$A$1:$AZ$1,0))

Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง

!
Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง

ผมลองใส่สูตรตามที่อาจารย์ให้มาปรากฎว่า ค่าที่ได้ไม่ตรง(อาจเป็นเพราะ sheet prod_cal มีแถว day อยู่หรือเปล่าครับ) ค่าที่ได้ตามเอกสารแนบครับ
รบกวนสอบถามความหมายของสูตรด้านบนเพิ่มเติม ต้องอ่านความหมายอย่างไรครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 4:10 pm
by snasui
:D ปรับสูตรเป็นตามด้านล่างครับ

=INDEX(prod_cal!$A$2:$AZ$1000,MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0),MATCH(B$1,prod_cal!$A$1:$AZ$1,0))

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 4:19 pm
by visarut
ขอบพระคุณครับอาจารย์ รบกวนอาจารย์ช่วยชี้แนะความหมายของสูตรเพื่อเป็นความรู้ครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 4:28 pm
by snasui
:D ไม่เข้าใจสูตรไหนให้ถามเป็นสูตร ๆ ไปครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 5:14 pm
by visarut
snasui wrote::D ไม่เข้าใจสูตรไหนให้ถามเป็นสูตร ๆ ไปครับ
สูตรนี้ครับอาจารย์
MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0),MATCH(B$1,prod_cal!$A$1:$AZ$1,0))

1. ทำไมถึงมี 1 หลัง Match อ่านความหมายได้ว่าอย่างไรครับ
2. ทำไมจึงเลือกใช้ คำสั่ง if หลังเลข 1
3. สูตรที่ผมใส่มาตอนแรกโดยการใช้ Match 3 ครั้ง ไม่สามารถใช้ในการสร้างสูตรได้หรือครับ หรือผมเขียนสูตรผิดครับอาจารย์

Re: การใช้ Match 3 เงื่อนไข

Posted: Wed Feb 12, 2014 6:58 pm
by snasui
:D ตอบข้อ 1, 2 เป็นการ Match แบบ 2 เงื่อนไขครับ

จากสูตร

MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0)

หมายถึงให้หาค่า 1 ว่าอยู่ในลำดับที่เท่าไรของ IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

จากสูตร

IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

หมายถึง หาก prod_cal!$A$2:$A$1000=$A2 เป็นจรีงให้แสดงผลลัพธ์ของ IF(prod_cal!$B$2:$B$1000=$B2,1)

จากสูตร

IF(prod_cal!$B$2:$B$1000=$B2,1)

หมายถึง หาก prod_cal!$B$2:$B$1000=$B2 เป็นจรีงให้แสดงเลข 1 ถ้าไม่เป็นจริงให้แสดงค่า False

สูตรพวกนี้เป็นสูตร Array ที่ผมอธิบายจะต้องแทนค่าสูตรจากด้านหลังไปด้านหน้า หรือจากคำอธิบายนี้ให้แทนค่าจากล่างขึ้นบน

การแกะสูตรให้คลุมส่วนทีสนใจแล้วกดแป้น F9 เพื่อดูผลลัพธ์ หรือ คลิกที่เซลล์ที่มีสูตร > เข้าเมนู Evaluate Formula > แล้วคลิก Evaluate ไปเรื่อย ๆ ตามต้องการจะเห็นการแสดลผลลัพธ์ของส่วนประกอบสูตร

ตอบข้อ 3 Index มีส่วนประกอบสำหรับการอ้างอิงถึงบรรทัดและคอลัมน์อย่างละ 1 ค่าเท่านั้น การใส่เข้าไป 3 ค่าจึงให้ค่าทีผิดพลาด

ฟังก์ชั่น Index มีไวยากรณ์คือ

=Index(Range,x,y)

หมายถึงใน Range ให้นำบรรทัดที่ x คอลัมน์ที่ y มาแสดง

เราไม่สามารถเขียนให้แสดงผลลัพธ์ของบรรทัดและคอลัมน์ด้วยการใช้

=Index(Range,x,y,z)

เพราะ z เป็นส่วนเกินของการทำงานลักษณะที่ถามมานี้

Re: การใช้ Match 3 เงื่อนไข

Posted: Thu Feb 13, 2014 1:15 pm
by visarut
snasui wrote::D ตอบข้อ 1, 2 เป็นการ Match แบบ 2 เงื่อนไขครับ

จากสูตร

MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0)

หมายถึงให้หาค่า 1 ว่าอยู่ในลำดับที่เท่าไรของ IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

จากสูตร

IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

หมายถึง หาก prod_cal!$A$2:$A$1000=$A2 เป็นจรีงให้แสดงผลลัพธ์ของ IF(prod_cal!$B$2:$B$1000=$B2,1)

จากสูตร

IF(prod_cal!$B$2:$B$1000=$B2,1)

หมายถึง หาก prod_cal!$B$2:$B$1000=$B2 เป็นจรีงให้แสดงเลข 1 ถ้าไม่เป็นจริงให้แสดงค่า False

สูตรพวกนี้เป็นสุตร Array ที่ผมอธิบายจะต้องแทนค่าสูตรจากด้านหลังไปด้านหน้า หรือจากคำอธิบายนี้ให้แทนค่าจากล่างขึ้นบน

การแกะสูตรให้คลุมส่วนทีสนใจแล้วกดแป้น F9 เพื่อดูผลลัพธ์ หรือ คลิกที่เซลล์ที่มีสูตร > เข้าเมนู Evaluate Formula > แล้วคลิก Evaluate ไปเรื่อย ๆ ตามต้องการจะเห็นการแสดลผลลัพธ์ของส่วนประกอบสูตร

ตอบข้อ 3 Index มีส่วนประกอบสำหรับการอ้างอิงถึงบรรทัดและคอลัมน์อย่างละ 1 ค่าเท่านั้น การใส่เข้าไป 3 ค่าจึงให้ค่าทีผิดพลาด

ฟังก์ชั่น Index มีไวยากรณ์คือ

=Index(Range,x,y)

หมายถึงใน Range ให้นำบรรทัดที่ x คอลัมน์ที่ y มาแสดง

เราไม่สามารถเขียนให้แสดงผลลัพธ์ของบรรทัดและคอลัมน์ด้วยการใช้

=Index(Range,x,y,z)

เพราะ z เป็นส่วนเกินของการทำงานลักษณะที่ถามมานี้
ขอบพระคุณอย่างสูงครับอาจารย์สำหรับความรู้ใหม่ อธิบายได้ชัดเจนมากครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Sun May 17, 2015 8:07 pm
by visarut
visarut wrote:
snasui wrote::D ตอบข้อ 1, 2 เป็นการ Match แบบ 2 เงื่อนไขครับ

จากสูตร

MATCH(1,IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1)),0)

หมายถึงให้หาค่า 1 ว่าอยู่ในลำดับที่เท่าไรของ IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

จากสูตร

IF(prod_cal!$A$2:$A$1000=$A2,IF(prod_cal!$B$2:$B$1000=$B2,1))

หมายถึง หาก prod_cal!$A$2:$A$1000=$A2 เป็นจรีงให้แสดงผลลัพธ์ของ IF(prod_cal!$B$2:$B$1000=$B2,1)

จากสูตร

IF(prod_cal!$B$2:$B$1000=$B2,1)

หมายถึง หาก prod_cal!$B$2:$B$1000=$B2 เป็นจรีงให้แสดงเลข 1 ถ้าไม่เป็นจริงให้แสดงค่า False

สูตรพวกนี้เป็นสุตร Array ที่ผมอธิบายจะต้องแทนค่าสูตรจากด้านหลังไปด้านหน้า หรือจากคำอธิบายนี้ให้แทนค่าจากล่างขึ้นบน

การแกะสูตรให้คลุมส่วนทีสนใจแล้วกดแป้น F9 เพื่อดูผลลัพธ์ หรือ คลิกที่เซลล์ที่มีสูตร > เข้าเมนู Evaluate Formula > แล้วคลิก Evaluate ไปเรื่อย ๆ ตามต้องการจะเห็นการแสดลผลลัพธ์ของส่วนประกอบสูตร

ตอบข้อ 3 Index มีส่วนประกอบสำหรับการอ้างอิงถึงบรรทัดและคอลัมน์อย่างละ 1 ค่าเท่านั้น การใส่เข้าไป 3 ค่าจึงให้ค่าทีผิดพลาด

ฟังก์ชั่น Index มีไวยากรณ์คือ

=Index(Range,x,y)

หมายถึงใน Range ให้นำบรรทัดที่ x คอลัมน์ที่ y มาแสดง

เราไม่สามารถเขียนให้แสดงผลลัพธ์ของบรรทัดและคอลัมน์ด้วยการใช้

=Index(Range,x,y,z)

เพราะ z เป็นส่วนเกินของการทำงานลักษณะที่ถามมานี้
ขอบพระคุณอย่างสูงครับอาจารย์สำหรับความรู้ใหม่ อธิบายได้ชัดเจนมากครับ

ผมลองประยุกต์ใช้ Match 4 เงื่อนไข

พบปัญหาคือ จากสูตรไม่แสดงคำตอบตามที่ต้องการ รบกวนขอคำแนะนำด้วยครับ
ผมต้องการให้ชีท cal ตำแหน่ง AE2 แสดงค่า จากชีท Table โดยอ้างอิงข้อมูลจากชีท cal ตำแหน่ง M2,AB2,AC2 และ AD2

ขอบคุณครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Sun May 17, 2015 8:23 pm
by snasui
:D ที่ชีท Cal เซลล์ AC2 ต้องเป็น กรุงเทพฯ ไม่ใช่ กรุงเทพมหานคร สูตรจึงจะให้คำตอบได้ถูกต้อง

ค่าที่ต่างกันเช่นนี้จะต้องมีการแก้ไขให้เหมือนกันเสียก่อน ไม่เช่นนั้นก็ Match กันไม่ได้ นอกจากนี้การเขียนสูตรใน Excel ให้หลีกเลี่ยงการอ้างทั้งคอลัมน์ มีข้อมูลแค่ไหนให้อ้างถึงแค่นั้นหรือเผื่อไว้เท่าที่เห็นว่าข้อมูลสามารถขยายไปถึง

เมื่อเปลี่ยนค่าในเซลล์ AC2 แล้วปรับสูตรใน AE2 เป็นด้านล่าง สังเกตช่วงเซลล์ด้วยว่าปรับจากของเดิมเป็นอย่างไรครับ

=INDEX(table!$A$2:$AZ$1000,MATCH(1,IF(table!$C$2:$C$1000=$M2,IF(table!$D$2:$D$1000=$AB2,IF(table!$E$2:$E$1000=$AC2,1))),0),MATCH(AD$2,LEFT(table!$A$1:$AZ$1,4)+0))

ช่วงที่ระบายสีแดงไว้ในสูตรเป็นการตัดค่าด้านหน้าของช่วง table!$A$1:$AZ$1 มา 4 อักขระ จากนั้นบวกด้วย 0 เพื่อให้กลับไปเป็น Number ที่ต้องทำเช่นนี้เพื่อให้ Match กันได้ ตัวเลขต้อง Match กับตัวเลข, Text ต้อง Match กับ Text ค่าที่เหมือนกันเท่านั้นจึงจะ Match กันได้ ไม่ใช่เอาค่าเดี่ยวไป Match กับช่วงเหมือนที่เขียนมา ช่วงที่เขียนแบบนั้นเป็น Text ไม่สามารถ Match กันได้ครับ

Re: การใช้ Match 3 เงื่อนไข

Posted: Sun May 17, 2015 9:12 pm
by visarut
snasui wrote::D ที่ชีท Cal เซลล์ AC2 ต้องเป็น กรุงเทพฯ ไม่ใช่ กรุงเทพมหานคร สูตรจึงจะให้คำตอบได้ถูกต้อง

ค่าที่ต่างกันเช่นนี้จะต้องมีการแก้ไขให้เหมือนกันเสียก่อน ไม่เช่นนั้นก็ Match กันไม่ได้ นอกจากนี้การเขียนสูตรใน Excel ให้หลีกเลี่ยงการอ้างทั้งคอลัมน์ มีข้อมูลแค่ไหนให้อ้างถึงแค่นั้นหรือเผื่อไว้เท่าที่เห็นว่าข้อมูลสามารถขยายไปถึง

เมื่อเปลี่ยนค่าในเซลล์ AC2 แล้วปรับสูตรใน AE2 เป็นด้านล่าง สังเกตช่วงเซลล์ด้วยว่าปรับจากของเดิมเป็นอย่างไรครับ

=INDEX(table!$A$2:$AZ$1000,MATCH(1,IF(table!$C$2:$C$1000=$M2,IF(table!$D$2:$D$1000=$AB2,IF(table!$E$2:$E$1000=$AC2,1))),0),MATCH(AD$2,LEFT(table!$A$1:$AZ$1,4)+0))

ช่วงที่ระบายสีแดงไว้ในสูตรเป็นการตัดค่าด้านหน้าของช่วง table!$A$1:$AZ$1 มา 4 อักขระ จากนั้นบวกด้วย 0 เพื่อให้กลับไปเป็น Number ที่ต้องทำเช่นนี้เพื่อให้ Match กันได้ ตัวเลขต้อง Match กับตัวเลข, Text ต้อง Match กับ Text ค่าที่เหมือนกันเท่านั้นจึงจะ Match กันได้ ไม่ใช่เอาค่าเดี่ยวไป Match กับช่วงเหมือนที่เขียนมา ช่วงที่เขียนแบบนั้นเป็น Text ไม่สามารถ Match กันได้ครับ
ขอบคุณครับอาจารย์ สำหรับข้อชี้แนะ