snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#1
Post
by March201711 » Mon Sep 03, 2018 9:06 pm
ถ้าเราจะดึงข้อมูล column B (Data A) และ column F (Data B) โดยเอามาไว้ที่ column J (Sum C) ต้องใช้สูตรอะไรคะ
และ ทำไมใช้ Vlookup แล้วข้อมูลที่ดึงมาไม่ตรง
เช่น cell J4 ID#4444 ค่า Fee ตาราง Data B ไม่มี ID นี้ แต่ใช้ Vlookup มันดึงข้อมูลมาให้เฉยเลยค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Mon Sep 03, 2018 10:04 pm
ตัวอย่างสูตรตามด้านล่างครับ
ที่ P9:T9 คีย์หัวคอลัมน์เป็น Ref, ID, Ref, Line, Start ตามลำดับ
ที่ R10 คีย์
=CELL("address",B11)&":"&CELL("address",B32)
Enter
ที่ R11 คีย์
=CELL("address",F11)&":"&CELL("address",F35)
Enter
ที่ S10 คีย์
=COUNTA(INDIRECT(R10))
Enter > Copy ลงด้านล่างถึง S11
ที่ S12 คีย์
=SUM(S10:S11)
Enter
ที่ T10 คีย์
=SUM(S$10:S10)-S10+1
Enter > Copy ลงด้านล่างถึง T11
ที่ P10 คีย์
=IF(ROWS(P$10:P10)>$S$12,"",LOOKUP(ROWS(P$10:P10),$T$10:$T$11,$R$10:$R$11))
Enter > Copy ลงด้านล่างจนเห็นเป็นเซลล์ว่าง
ที่ Q10 คีย์
=INDEX(INDIRECT(P10),COUNTIF($P$10:P10,P10))
Enter > Copy ลงด้านล่าง
ที่ J11 คีย์
=IFERROR(INDEX($Q$10:$Q$56,SMALL(IF(FREQUENCY(MATCH($Q$10:$Q$56,$Q$10:$Q$56,0),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROWS(J$11:J11))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
ที่ K11 คีย์
=IFERRORLOOKUP(CHAR(255),CHOOSE({1,2},VLOOKUP(J11,$B$11:$C$32,2,0),VLOOKUP(J11,$F$11:$G$35,2,0))),"")
Enter > Copy ลงด้านล่าง
ที่ L11 คีย์
=IFERROR(VLOOKUP(J11,$B$11:$D$32,3,0),0)
Enter > Copy ลงด้านล่าง
ที่ M11 คีย์
=IFERROR(VLOOKUP(J11,$F$11:$H$35,3,0),0)
Enter > Copy ลงด้านล่าง
ที่ Vlookup แล้วได้คำตอบไม่ตรงเพราะเป็นการ Lookup แบบใกล้เคียง (ไม่ใส่ส่วนประกอบสุดท้ายของ Vlookup) ในขณะที่คอลัมน์แรกของ Table Array ใน Vlookup ไม่ได้เรียงจากน้อยไปหามากครับ
งานลักษณะนี้ควรนำ ID และ Name มาต่อกันด้วยการ Copy > Paste แล้วค่อย Remove Duplicate ผ่านเมนู Data ส่วนที่เหลือค่อยทำเป็นสูตร อีกวิธีใช้การประยุกต์ใช้ Consolidate และหากสูตรลักษณะนี้ยังทำงานได้ช้าก็ต้องเขียน VBA ครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#3
Post
by March201711 » Mon Sep 03, 2018 10:45 pm
ค่ะอาจารย์
ขอบคุณที่ให้คำแนะนำ จะลองไปปรับใช้ดูก่อนค่ะว่าช้าไปหรือป่าวค่ะ
Supachok
Gold
Posts: 1014 Joined: Wed Jun 18, 2014 11:11 am
Excel Ver: 2013
#4
Post
by Supachok » Wed Sep 05, 2018 10:05 am
E11
=COUNTIF($F$11:$F$36,B11)
จะเห็น Text ที่ไม่มีใน List ที่ 2
จากนั้น sort - และ copy
วิธีนี้คิดว่าคำนวนไม่ช้าและขั้นตอนมีอยู่บ้าง
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#5
Post
by March201711 » Sun Sep 09, 2018 11:57 am
อาจารย์คะ อยากให้ cellสุดท้ายที่หาเป็นสูตรให้หาค่าสุดท้าย เพราะต้องมานั่งแก้ในสูตร ข้อมูลมีเป็นพันๆกว่ารายการเลยค่ะ
ที่ R10 คีย์
=CELL("address",B11)&":"&CELL("address",B32)
Enter
ที่ R11 คีย์
=CELL("address",F11)&":"&CELL("address",F35)
Enter
และ
ที่ J11 คีย์
=IFERROR(INDEX($Q$10:$Q$56,SMALL(IF(FREQUENCY(MATCH($Q$10:$Q$56,$Q$10:$Q$56,0),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROWS(J$11:J11))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
ที่ K11 คีย์
=IFERRORLOOKUP(CHAR(255),CHOOSE({1,2},VLOOKUP(J11,$B$11:$C$32,2,0),VLOOKUP(J11,$F$11:$G$35,2,0))),"")
Enter > Copy ลงด้านล่าง
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#6
Post
by snasui » Sun Sep 09, 2018 12:15 pm
March201711 wrote: Sun Sep 09, 2018 11:57 am
อาจารย์คะ อยากให้ cellสุดท้ายที่หาเป็นสูตรให้หาค่าสุดท้าย เพราะต้องมานั่งแก้ในสูตร ข้อมูลมีเป็นพันๆกว่ารายการเลยค่ะ
ที่ R10 คีย์
=CELL("address",B11)&":"&CELL("address",B32)
Enter
ที่ R11 คีย์
=CELL("address",F11)&":"&CELL("address",F35)
Enter
และ
ตัวอย่างสูตรตามด้านล่างครับ
ที่ R10 คีย์
=CELL("address",B11)&":"&CELL("address",INDEX(B:B,MATCH(9.99999999999999E+307,B:B)))
Enter
ที่ R11 คีย์
=CELL("address",F11)&":"&CELL("address",INDEX(F:F,MATCH(9.99999999999999E+307,F:F)))
Enter
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#7
Post
by March201711 » Sun Sep 09, 2018 12:51 pm
ค่ะ และที่ cell
ที่ J11 คีย์
=IFERROR(INDEX($Q$10:$Q$56,SMALL(IF(FREQUENCY(MATCH($Q$10:$Q$56,$Q$10:$Q$56,0),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROW($Q$10:$Q$56)-ROW($Q$10)+1),ROWS(J$11:J11))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
ที่ K11 คีย์
=IFERRORLOOKUP(CHAR(255),CHOOSE({1,2},VLOOKUP(J11,$B$11:$C$32,2,0),VLOOKUP(J11,$F$11:$G$35,2,0))),"")
Enter > Copy ลงด้านล่าง
ต้องปรับสูตรอย่างไรคะ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Sun Sep 09, 2018 12:55 pm
แนบไฟล์ล่าสุดมาด้วยจะได้ปรับต่อไปจากนั้นครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#9
Post
by March201711 » Sun Sep 09, 2018 1:05 pm
ค่ะ และถ้าจะให้เรียงข้อมูลที่ column J จากน้อยไปมา ต้องปรับสูตรอย่างไรคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#10
Post
by snasui » Sun Sep 09, 2018 1:27 pm
ตัวอย่างการปรับสูตรที่ J11 ครับ
=IFERROR(INDEX($P$10:$P$5000,SMALL(IF(FREQUENCY(IF($P$10:$P$5000<>"",MATCH($P$10:$P$5000,$P$10:$P$5000,0)),ROW($P$10:$P$5000)-ROW($P$10)+1),ROW($P$10:$P$5000)-ROW($P$10)+1),ROWS(J$11:J11))),"")
ส่วนการเรียงให้ดึงข้อมูลนั้นไปแสดงพื้นที่อื่นก่อนแล้วค่อยนำมาเรียงด้วย Small หรือ Large ในคอลัมน์ J ครับ
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#12
Post
by snasui » Sun Sep 09, 2018 2:05 pm
March201711 wrote: Sun Sep 09, 2018 1:44 pm
ค่ะ แล้ว column K ล่ะคะ
คลุมข้อมูลเผื่อไปเท่าที่คิดว่าข้อมูลจะขยายไปถึงได้เลยครับ
ที่จริงแล้วสูตรใด ๆ สามารถทำลักษณะนี้ได้ มีบางกรณีเท่านั้นที่อาจจะต้องปรับเช่นการทำ Unique List เป็นต้น
Bo_ry
Gold
Posts: 1245 Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:
#14
Post
by Bo_ry » Sun Sep 09, 2018 3:00 pm
J11 ลองใส่ตามนี้ ลากลง
=IFERROR(INDEX($P$10:$P$99,MATCH(0,INDEX((COUNTIF($P$10:$P$99,"<"&$P$10:$P$99)-SUMPRODUCT(COUNTIF($J$10:J10,$P$10:$P$99)))/($P$10:$P$99<>""),),0)),"")
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#15
Post
by snasui » Sun Sep 09, 2018 4:09 pm
Bo_ry wrote: Sun Sep 09, 2018 3:00 pm
J11 ลองใส่ตามนี้ ลากลง
=IFERROR(INDEX($P$10:$P$99,MATCH(0,INDEX((COUNTIF($P$10:$P$99,"<"&$P$10:$P$99)-SUMPRODUCT(COUNTIF($J$10:J10,$P$10:$P$99)))/($P$10:$P$99<>""),),0)),"")
สูตรลักษณะ
Match(0,Countif...) นี้จะมีข้อด้อยอยู่ 3 ประการครับ
ใช้พลังประมวลผลสูง
มีปัญหากับตัวเลขที่จัดเก็บเป็น Text
กรณีข้อความมีเครื่องหมาย > หรือ < นำหน้าจะแสดงผลลัพธ์ผิดพลาด
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#16
Post
by March201711 » Sun Sep 09, 2018 4:22 pm
แล้วถ้าใช้สูตร array กับ สูตรลักษณะ Match(0,Countif...) อันไหนดีกว่ากันคะ แบบว่าประมวลได้เร็วไม่หน่วงๆช้าๆน่ะค่ะอาจารย์
snasui
Site Admin
Posts: 31257 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#17
Post
by snasui » Sun Sep 09, 2018 4:34 pm
ลองกับข้อมูลจริงได้เลย จะได้ทราบความแตกต่างครับ
การใช้สูตร Array ผมเคยแจ้งไปแล้วว่าขึ้นอยู่กับสูตรนั้น ๆ ไม่ใช่ว่าเป็นสูตร Array แล้วจะช้าไปทุกสูตรครับ
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#18
Post
by March201711 » Sun Sep 09, 2018 5:33 pm
ลองใช้สูตร Match(0,Countif...) แล้วข้อมูลมาไม่ครบค่ะ
Bo_ry
Gold
Posts: 1245 Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:
#19
Post
by Bo_ry » Sun Sep 09, 2018 7:25 pm
ทำใหม่ที่ column W:AB ค่ะ
Book4.xlsx
You do not have the required permissions to view the files attached to this post.
March201711
Gold
Posts: 1047 Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365
#20
Post
by March201711 » Sun Sep 09, 2018 9:19 pm
ทำแล้วค่ะ แต่มีข้องความ excel ขึ้นเตือนน่ะล่ะ ตามที่แนบ excel ค่ะ และประมวลปลช้าๆหนืดๆค่ะ
You do not have the required permissions to view the files attached to this post.