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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
niwat2811
Bronze
Posts: 350 Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016
#1
Post
by niwat2811 » Mon Mar 14, 2016 12:06 pm
เงื่อนไขที่ต้องการคือ
ต้องการ match ข้อมูลที่ชีท 1 คอลัมภน์ C โดยถ้าข้อมูลแต่ละแถว
ตรงกับข้อมูลในชีท 2 คอลัมภน์ B ให้นำจำนวนเงินคงเหลือของชีท 1 คอลัมภน์ F
มากระจายตามช่วงเงินในคอลัมภน์ G โดยดูข้อมูลตามช่วงเงินได้จากชีท 2 คอลัมภน์ C
และให้นำเรทการคิดค่าธรรมเนียมตามช่วงเงินที่ชีท 2 คอลัมภน์ D มาไว้ที่ชีท 1 คอลัมภน์ H
แต่ถ้าข้อมูลไม่ match กันก็ให้นำจำนวนเงินของชีท 1 คอลัมภน์ F มาวางไว้ที่คอลัมภน์ G
ไม่ทราบว่าควรใช้สูตรอย่างไรดีครับ
ตัวอย่างคำตอบที่ต้องการอยู่ในชีท 1 คอลัมภน์ P กับ Q ครับ
You do not have the required permissions to view the files attached to this post.
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#2
Post
by DhitiBank » Tue Mar 15, 2016 1:33 am
คิดจนเมื่อยหัวเลยครับ ลองแบบนี้ครับ
1. ที่ Sheet2 เตรียมขั้นบันไดใหม่ เพื่อให้เขียนสูตรอ้างอิงได้ง่ายขึ้นหน่อย
1.1 E1 คีย์
=IF(C1="-",0,RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C1,"=",REPT(" ",20)),"-",REPT(" ",20)),"<",REPT(" ",20)),20)-IF(ISNUMBER(SEARCH("<",C1)),0.0001,0))
Enter -> คัดลอกลงล่าง
1.2 F1 คีย์
=E1
1.3 F2 คีย์
=IF(ISNUMBER(SEARCH(">=",C2)),99999999999999,IF(COUNTIF(B$2:B2,B2)=1,E2,E2-E1))
Enter -> คัดลอกลงล่าง
2. ที่ Sheet1
2.1 G3 คีย์
=IF(COUNTIF(Sheet2!$B$1:$B$24,LOOKUP(CHAR(255),$C$3:$C3))=0,LOOKUP(9.9999999999E+307,$F$3:$F3),
ROUND(MIN(LOOKUP(9.9999999999E+307,$F$3:$F3)-SUM(OFFSET(G$2,LOOKUP(CHAR(255),$C$3:$C3,ROW($C$3:$C3)-ROW($C$3)),,
ROWS($C$3:$C3)-LOOKUP(CHAR(255),$C$3:$C3,ROW($C$3:$C3)-ROW($C$3))))
+SUM(OFFSET(G$2,LOOKUP(CHAR(255),$C$3:$C3,ROW($C$3:$C3)-ROW($C$3)),)),
INDEX(Sheet2!$F$1:$F$24,MATCH(LOOKUP(CHAR(255),$C$3:$C3),Sheet2!$B$1:$B$24,0)+MIN(ROWS($C$3:$C3)-LOOKUP(CHAR(255),$C$3:$C3,ROW($C$3:$C3)-ROW($C$3))-1,LOOKUP(2,1/(Sheet2!$B$1:$B$24=LOOKUP(CHAR(255),$C$3:$C3)),ROW(Sheet2!$B$1:$B$24)-ROW(Sheet2!$B$1)+1)-MATCH(LOOKUP(CHAR(255),$C$3:$C3),Sheet2!$B$1:$B$24,0)))),4))
Enter -> คัดลอกลงล่าง
2.2 H3 คีย์
=IF(G3=0,"",INDEX(Sheet2!$D$1:$D$24,MATCH(LOOKUP(CHAR(255),$C$3:$C3),Sheet2!$B$1:$B$24,0)+MIN(ROWS($C$3:$C3)-LOOKUP(CHAR(255),$C$3:$C3,ROW($C$3:$C3)-ROW($C$3))-1,LOOKUP(2,1/(Sheet2!$B$1:$B$24=LOOKUP(CHAR(255),$C$3:$C3)),ROW(Sheet2!$B$1:$B$24)-ROW(Sheet2!$B$1)+1)-MATCH(LOOKUP(CHAR(255),$C$3:$C3),Sheet2!$B$1:$B$24,0))))
Enter -> คัดลอกลงล่างครับ
สำหรับสูตรในข้อ 2.2 บางรายการจะติด #N/A เนื่องจากไม่พบในฐานข้อมูล Sheet2 นะครับ
You do not have the required permissions to view the files attached to this post.
niwat2811
Bronze
Posts: 350 Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016
#3
Post
by niwat2811 » Fri Mar 25, 2016 9:32 am
ต้องขออภัยคุณ DhitiBank ด้วยครับที่เข้ามาตอบช้า
ได้ลองนำสูตรที่ให้มาไปลองใช้แล้วพบว่าติดปัญหา
ตรงบรรทัดที่ 25 คือยังดึงข้อมูลมาไม่ถูกต้อง ตามไฟล์แนบ
ไม่ทราบว่าต้องแก้ไขตรงไหนเพิ่มอย่างไรครับ
ขอบคุณมากครับ
You do not have the required permissions to view the files attached to this post.
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#4
Post
by DhitiBank » Fri Mar 25, 2016 11:55 am
หากยังไม่มีใครตอบ เดี๋ยวผมดูให้คืนนี้นะครับ ตอนนี้ขับรถครับ
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#5
Post
by DhitiBank » Fri Mar 25, 2016 8:58 pm
สอบถามหน่อยครับ
จากรูปที่ 1 ใน Sheet2 เซลล์ C11 จำนวนเงินเป็น "-" หมายความว่าอย่างไรครับ ผมไม่แน่ใจเลยใส่สูตรให้แปลงเป็นขั้นบันไดแล้วได้ 0 (ดังที่แสดงเซลล์ E11 และ F11) เวลาดึงข้อมูลมา สูตรพบว่า 0 มีค่าน้อยที่สุดเลยแสดง 0 แทนที่จะแสดงจำนวนเงินในเซลล์ G25 ของ Sheet1
Pict1.png
แต่หากผมสมมติจำนวนเงินให้มากเกินจริงใน Sheet2 เซลล์ C11 สูตรจะสามารถแสดงผลได้ถูกต้องครับ ดังแสดงในรูปที่ 2
Pict2.png
ไม่ทราบว่าพอจะแก้ไขที่ขั้นบันไดใน Sheet2 แทนได้ไหมครับ (ที่จริงแก้สูตรก็ได้ แต่ผมลืมแนวคิดไปหมดแล้ว หากต้องปรับสูตรใหม่ ก็ยาว...ครับ
)
You do not have the required permissions to view the files attached to this post.
menem
Silver
Posts: 549 Joined: Mon Jan 26, 2015 11:02 am
#6
Post
by menem » Sat Mar 26, 2016 9:28 am
ลองดูนะครับ ผมใช้วิธีแปลงตารางเป็นแบบขั้นบรรได (เหมือนคิดภาษี)
น่าจะทำให้การคำนวณง่ายขึ้นครับ
** มีบางรายการไม่ตรงกับคำตอบที่ให้ไว้ เนื่องจากไม่พบรายการนั้น ๆ ในตารางเงื่อนไขนะครับ
You do not have the required permissions to view the files attached to this post.
niwat2811
Bronze
Posts: 350 Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016
#7
Post
by niwat2811 » Wed Mar 30, 2016 9:28 am
ขอบคุณทั้งสองท่านมากครับ ได้ลองทำตามคำแนะนำแล้ว สามารถใช้งานได้ถูกต้องครับ