: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

ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#1

Post by niwat2811 »

เงื่อนไขที่ต้องการคือ
ต้องการ 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.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#2

Post by DhitiBank »

:sg: คิดจนเมื่อยหัวเลยครับ ลองแบบนี้ครับ

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
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#3

Post by niwat2811 »

ต้องขออภัยคุณ DhitiBank ด้วยครับที่เข้ามาตอบช้า
ได้ลองนำสูตรที่ให้มาไปลองใช้แล้วพบว่าติดปัญหา
ตรงบรรทัดที่ 25 คือยังดึงข้อมูลมาไม่ถูกต้อง ตามไฟล์แนบ
ไม่ทราบว่าต้องแก้ไขตรงไหนเพิ่มอย่างไรครับ
ขอบคุณมากครับ
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#4

Post by DhitiBank »

หากยังไม่มีใครตอบ เดี๋ยวผมดูให้คืนนี้นะครับ ตอนนี้ขับรถครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#5

Post by DhitiBank »

สอบถามหน่อยครับ
จากรูปที่ 1 ใน Sheet2 เซลล์ C11 จำนวนเงินเป็น "-" หมายความว่าอย่างไรครับ ผมไม่แน่ใจเลยใส่สูตรให้แปลงเป็นขั้นบันไดแล้วได้ 0 (ดังที่แสดงเซลล์ E11 และ F11) เวลาดึงข้อมูลมา สูตรพบว่า 0 มีค่าน้อยที่สุดเลยแสดง 0 แทนที่จะแสดงจำนวนเงินในเซลล์ G25 ของ Sheet1
Pict1.png

แต่หากผมสมมติจำนวนเงินให้มากเกินจริงใน Sheet2 เซลล์ C11 สูตรจะสามารถแสดงผลได้ถูกต้องครับ ดังแสดงในรูปที่ 2
Pict2.png
ไม่ทราบว่าพอจะแก้ไขที่ขั้นบันไดใน Sheet2 แทนได้ไหมครับ (ที่จริงแก้สูตรก็ได้ แต่ผมลืมแนวคิดไปหมดแล้ว หากต้องปรับสูตรใหม่ ก็ยาว...ครับ :shock: )
You do not have the required permissions to view the files attached to this post.
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#6

Post by menem »

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

** มีบางรายการไม่ตรงกับคำตอบที่ให้ไว้ เนื่องจากไม่พบรายการนั้น ๆ ในตารางเงื่อนไขนะครับ
You do not have the required permissions to view the files attached to this post.
niwat2811
Bronze
Bronze
Posts: 350
Joined: Thu Jan 06, 2011 12:51 pm
Excel Ver: 2016

Re: ต้องการ Match ข้อมูลระหว่าง 2 ชีท และกระจายข้อมูลตามช่วงเงิน

#7

Post by niwat2811 »

ขอบคุณทั้งสองท่านมากครับ ได้ลองทำตามคำแนะนำแล้ว สามารถใช้งานได้ถูกต้องครับ
Post Reply