สูตรอย่างนี้ใส่ ISERROR ยังไงค่ะ
IF(ROWS($D$13:D13)>$A$12,"",INDEX(ข้อมูลDR!$B$3:$B$100,SMALL(IF(ข้อมูลDR!$A$3:$A$100=$A$12,ROW(ข้อมูลDR!$B$3:$B$100)-ROW(ข้อมูลDR!$B$3)+1),ROWS($D$13:D13))))
ใส่ไม่ถูกค่ะ ขอบคุณค่ะ
Printable View
สูตรอย่างนี้ใส่ ISERROR ยังไงค่ะ
IF(ROWS($D$13:D13)>$A$12,"",INDEX(ข้อมูลDR!$B$3:$B$100,SMALL(IF(ข้อมูลDR!$A$3:$A$100=$A$12,ROW(ข้อมูลDR!$B$3:$B$100)-ROW(ข้อมูลDR!$B$3)+1),ROWS($D$13:D13))))
ใส่ไม่ถูกค่ะ ขอบคุณค่ะ
ควรยกตัวอย่างที่ใช้สูตรนี้แนบมาดูกันครับ
แต่เท่าที่ดู สูตรที่ยกมานี้มีส่วนของ ROW(ข้อมูลDR!$B$3:$B$100)-ROW(ข้อมูลDR!$B$3)+1 ทำให้ซับซ้อนโดยไม่จำเป็น ซึ่งถ้าเรามีเลขลำดับเรียงไว้จาก 1,2,3, จะทำให้สูตรสั้นลงอีกมาก
หรือใช้สูตร Row(Indirect("1:"&Rows(ข้อมูลDR!$B$3:$B$100))) น่าจะทำงานได้เร็วกว่า ROW(ข้อมูลDR!$B$3:$B$100)-ROW(ข้อมูลDR!$B$3)+1
ดูคำอธิบายสูตร Row Indirect ได้จาก
http://www.excelexperttraining.com/b...es/z000783.php
การซ้อน Index ไว้ในสูตร แม้ทำให้สูตรทำงานลัดได้ แต่จะทำให้เราอดเห็นผลลัพธ์ของ Small IF ว่าคืนค่าเป็นตำแหน่งเลขที่รายการอะไรให้บ้าง และหากต้องการปรับค่า Error สูตรก็จะยาวขึ้นอีกมาก
สูตรที่ผมใช้ Small IF ช่วยคำนวณ จะใช้กับการหาเลขลำดับของรายการที่ซ้ำ กับ Unique ครับ เมื่อหาตำแหน่งรายการได้แล้วจะใช้ If IsError ช่วยปรับค่าเพื่อนำไปใช้ร่วมกับ Index
ดูได้จาก
http://www.excelexperttraining.com/f...tent.php?r=545
http://www.excelexperttraining.com/f...tent.php?r=546
ลองใส่ดูแล้วก็ทำไม่ได้นะค่ะ ตามไฟล์แนบ รบกวนหน่อยนะค่ะ เพราะว่าต้องรีบใช้นะค่ะ ขอบคุณค่ะ
:smile: ไม่เห็นไฟล์แนบครับ
ขออภัยค่ะ แนบใหม่แล้วค่ะ รบกวนหน่อยนะค่ะ
:cool: ยอมรับว่าเห็นสูตรแล้ว ปวดตา เพราะตาลาย ยาวยืดไปไหนครับ ฮ่าๆ
ผมปรับสูตรใหม่ให้แล้วน่ะครับ ไม่ต้องไปดักกับ ISNA หรือ ISERROR ให้สูตรยาวเพิ่มไปอีก
:cool: ลองตามนี้ดูครับ
ที่ D3 คีย์ =IF(ROWS($D$3:D3)>$B$2,"",INDEX(ข้อมูลDR!B$3:B$25,SMALL(IF(ข้อมูลDR!$A$3:$A$259=$A$2,ROW(ข้อมูลDR!$B$3:$B$25)-ROW(ข้อมูลDR!$A$3)+1),ROWS($D$3:D3))))
กด Ctrl+Shift+Enter คัดลอกไปทางขวามือถึงคอลัมน์ E แล้วลากลงมาให้สุดหน้าที่ 1
ที่ D13 คีย์ =IF(ROWS($D$13:D13)>$B$12,"",INDEX(ข้อมูลDR!B$3:B$25,SMALL(IF(ข้อมูลDR!$A$3:$A$259=$A$12,ROW(ข้อมูลDR!$B$3:$B$25)-ROW(ข้อมูลDR!$A$3)+1),ROWS($D$13:D13))))
กด Ctrl+Shift+Enter คัดลอกไปทางขวามือถึงคอลัมน์ E แล้วลากลงมาให้สุดหน้าที่ 2
หรือดูตามไฟล์แนบครับ
ในเรื่องของความเร็วในการคำนวน หากผู้ถามมีข้อมูลไม่มากนัก ก็สามารถปรับใช้สูตรเดิมได้ครับ แต่อาจจะต้องเพิ่มสูตรยาวเพราะการดักพวก Error ต่างๆ สำหรับสูตรที่ผมให้ไปนั้น สามารถใช้งานได้ดีถึงแม้ข้อมูลจะเยอะก็ตาม เพราะไม่ได้คำนวนทุกครั้งที่ข้อมูลมีการเปลี่ยนแปลง เนื่่องจากไม่มีคุณสมบัตืเป็นสูตร Volatile Function ครับ:cool:
ขอบคุณมาก ๆ ค่ะ ลองปรับเองอยู่ตั้งนานก็ยังไม่ได้ เลยต้อง Sum ตัวเลขกับมือเองค่ะ ขอบคุณนะค่ะ
คือ ลองเอาสูตรตัวนีไปใช้กับงานอื่น คือ ลงบัญชีสมุดรายวันทั่วไป และให้มันผ่านแยกประเภทโดยอัตโนมัติค่ะ แต่มันดึงข้อมูลไม่ถูกต้องมาไม่ทราบว่าเป็นเพราะอะไรค่
ขั้นตอนคือ
1 บันทึกรายวันทั่วไป ทั้งด้าน Dr. และ Cr. เช่น วันที่ 1 DR.เงินสด CR.ลูกหนี้ วันที่ 2 DR.ขาย CR.เงินสด
2 และต้องการให้ชื่อบัญชี เงินสด ทั้งด้านเดบิต ในวันที่ 1 และเครดิตในวันที่ 2 จำนวนเงินและวันที่ ผ่านรายการไปยังแยกประเภทโดยใช้สูตรอัตโนมัติ โดยที่เราไม่ต้องพิมพ์เอง และให้ถูกต้องทั้งทางด้าน DR. และCR. ค่ะ
แต่ว่าลองประยุกใช้สูตรแต่ข้อมูลผ่านรายการไปแยกประเภทนั้นไม่ถูกต้อง ไม่แน่ใจว่าต้องทำการ Sort ข้อมูลก่อนหรือเปล่าค่ะ หรือว่าใส่สูตรผิด กรุณาช่วยดูให้หน่อยนะค่ะ ขอบคุณค่ะ
:smile: แก้คำผิดตามที่คุณอรวีย์บอกไว้ก่อนน่ะครับ แล้วอธิบายปัญหาว่าต้องการทำอะไร ดึงข้อมูลจากไหนไปที่ไหนให้ชัดเจนด้วยน่ะครับ :smile:
ควรออกแบบตารางเก็บข้อมูลใหม่ให้ถูกต้องก่อนครับ
นำตัวอย่างนี้ไปดัดแปลง
ProductSummary.xls
กระทู้นี้เก่ามากครับ คงติดตามกันยาก