EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)แบบนี้เลยครับที่ต้องการjoo wrote: ลองตามนี้ดูครับที่ C10 คีย์ =INDEX($C$2:$C$5,MATCH(1,IF($A$2:$A$5=$A$10,IF($B$2:$B$5=$B$10,1)),0)) กดแป้น Ctrl+Shift+Enter พร้อมกัน
หรือแบบนี้ =SUMPRODUCT(--($A$2:$A$5=$A$10),--($B$2:$B$5=$B$10),$C$2:$C$5)
ถ้าไม่ใช้ลองแนบไฟล์ตัวอย่างพร้อมระบุเงื่อนไขและคำตอบที่ต้องการมาด้วยครับ
จากสูตร =INDEX($C$2:$C$5,MATCH(1,IF($A$2:$A$5=$A$10,IF($B$2:$B$5=$B$10,1)),0))taewada wrote:รบกวนช่วยอธิบายสูตรเป็นขั้นๆได้ไหมครับ
ใช้แยกชีทได้ครับ หรือใช้อ้างอิงข้อมูลที่อยู่คนละไฟล์ก็ได้ด้วย เพียงแต่ในสูตรที่คุณ joo เขียนjumping wrote:สูตรนี้ใช้แยกSheet ได้ไหมค่ะ หรือข้อมูลต้องอยู่ในSheet เดียวกันค่ะ
และถ้าข้อมูลอยู่คนละSheet ต้องใช้สูตรแบบไหนค่ะ
joo wrote: ลองตามนี้ดูครับที่ C10 คีย์ =INDEX($C$2:$C$5,MATCH(1,IF($A$2:$A$5=$A$10,IF($B$2:$B$5=$B$10,1)),0)) กดแป้น Ctrl+Shift+Enter พร้อมกัน
หรือแบบนี้ =SUMPRODUCT(--($A$2:$A$5=$A$10),--($B$2:$B$5=$B$10),$C$2:$C$5)
ถ้าไม่ใช้ลองแนบไฟล์ตัวอย่างพร้อมระบุเงื่อนไขและคำตอบที่ต้องการมาด้วยครับ
'
นำหน้าก็ได้ครับDhitiBank wrote: ที่สูตรไม่แสดงผล เพราะคำว่า "ปากช่อง" ในตารางด้านบนจะมี "เว้นวรรค" ต่อท้ายคำว่า "ปากช่อง" ทำให้สูตรหาคำว่า "ปากช่อง" (ที่ไม่มีเว้นวรรค) ไม่เจอ ให้ลบเว้นวรรคท้ายคำว่าปากช่องออกไปครับ
แล้วก็ การคีย์ข้อความที่ไม่ใช่ตัวเลข ผมคิดว่าไม่ต้องใส่เครื่องหมาย'
นำหน้าก็ได้ครับ
อันนี้ผมไม่แน่ใจครับ หากสูตรแสดงผลถูกต้องผมคิดว่าไม่น่าจะมีผลกระทบอะไร แต่หากต้องการเอาออก วิธีหนึ่งที่ผมใช้คือ เลือกเซลล์ --> เมนู Home --> Clear --> Clear All แล้วคีย์ใหม่ครับnoonoon wrote:มันติด ' มาเองค่ะ มีผลอะไรกับข้อมูลรึป่าวค่ะ
แต่ลองนำมาปรับกับข้อมูลที่จะใช้ ผลออกมาเป็น #N/A ตามไฟล์แนบ sheet2 ค่ะDhitiBank wrote:อันนี้ผมไม่แน่ใจครับ หากสูตรแสดงผลถูกต้องผมคิดว่าไม่น่าจะมีผลกระทบอะไร แต่หากต้องการเอาออก วิธีหนึ่งที่ผมใช้คือ เลือกเซลล์ --> เมนู Home --> Clear --> Clear All แล้วคีย์ใหม่ครับnoonoon wrote:มันติด ' มาเองค่ะ มีผลอะไรกับข้อมูลรึป่าวค่ะ
=INDEX(Sheet1!$D$2:$D$13895,MATCH(1,IF([color=#FF0000]Sheet1!$A$2:$A$1389[/color]=A1,IF(Sheet1!$B$2:$B$1389=[color=#FF0000]TRIM(B1)[/color],1)),0))
=SUMIFS(Sheet1!$D$2:$D$1389,Sheet1!$A$2:$A$1389,A1,Sheet1!$B$2:$B$1389,TRIM(B1))
DhitiBank wrote:มีปัญหา 2 เรื่องครับ
1. ช่วงอ้างอิงบางช่วงในสูตรไม่ได้ปรับให้สอดคล้องกับข้อมูลจริง
2. ข้อมูลใน Sheet2 คอลัมน์ B มีเว้นวรรคต่อท้ายข้อมูล ยกตัวอย่าง "AM " ไม่เท่ากับ "AM" ครับ
ดังนั้น หากใช้สูตรเดิม ก็จะต้องปรับสูตรเป็น
=INDEX(Sheet1!$D$2:$D$13895,MATCH(1,IF([color=#FF0000]Sheet1!$A$2:$A$1389[/color]=A1,IF(Sheet1!$B$2:$B$1389=[color=#FF0000]TRIM(B1)[/color],1)),0))
จากไฟล์ตัวอย่างต้องใส่สูตรจำนวนมาก หากเปลี่ยนจากสูตรอาร์เรย์เป็น sumifs น่าจะทำให้คำนวณเร็วขึ้นครับ
ที่ E1 ลองคีย์
=SUMIFS(Sheet1!$D$2:$D$1389,Sheet1!$A$2:$A$1389,A1,Sheet1!$B$2:$B$1389,TRIM(B1))
Enter --> คัดลอกลงล่างครับ