ซ่อมคอมพิวเตอร์นอกสถานที่ บางกะปิ รามคำแหง

วันอาทิตย์ที่ 2 มีนาคม พ.ศ. 2557

การรันตัวเลขลำดับแบบอัตโนมัติ



วันนี้มีคำถามทางอีเมล์ ถามว่า
(จากรูป) ขอคำแนะนำในการจะใส่ลำดับที่ของสัญญา ตั้งแต่คอลัมภ์ A4 จะทำอย่างไรให้รัน โดยไม่ต้องคีย์ เพราะมีจำนวนสัญญา มากกว่าพันรายค่ะ ตอนแรกได้ทดลองทำเองโดยพิมพ์สูตรที่ A4 =IF(B4="","",MAX(A$1:A3)+1) แต่ได้ตัวเลขไม่ถูกต้อง



แนวคิด

ที่จริง ผู้ถามก็มาถูกทางแล้วนะครับ เพราะจากสูตร =IF(B4="","",MAX(A$1:A3)+1) นั้น ก็สามารถรันเลขลำดับแบบอัตโนมัติได้เช่นกัน แต่การเช็คเงื่อนไขจากสูตรข้างต้นนั้น หมายถึงให้ตรวจสอบว่า ถ้าคอลัมน์ B เป็นเซลล์ว่าง ก็ไม่ต้องแสดงตัวเลขลำดับ แต่ถ้าไม่เป็นเซลล์ว่างก็ให้แสดงเลขลำดับ (โดยเอาค่ามากสุดที่อยู่ก่อนหน้า มาบวกเพิ่มอีกหนึ่ง)

ซึ่งหากดูจากไฟล์ตัวอย่าง (ดังรูป) จะเห็นว่า ในคอลัมน์ B นอกจากจะมีตัวเลข ที่เป็นเลขที่สัญญาแล้ว ยังมีบางแถวเป็นข้อความด้วย (คำว่า เลขที่สัญญา) ดังนั้น ถ้าคัดลอกสูตรลงมาทุกแถว สูตรนี้จึงแสดงตัวเลขลำดับในคอลัมน์ A ในทุกแถวที่คอลัมน์ B ไม่เป็นเซลล์ว่าง เช่น A4, A8, A9, A13 และ A14 เป็นต้น

ความต้องการคือ ให้แสดงเลขที่ลำดับ เฉพาะแถวที่คอลัมน์ B เป็นตัวเลข เลขที่สัญญา เท่านั้น ดังนั้น การตรวจสอบเงื่อนไข จึงต้องตรวจสอบเฉพาะแถวที่คอลัมน์ B เป็นตัวเลข เช่น

A4 =IF(ISNUMBER(B4),MAX(A$1:A3)+1,"")

เมื่อคัดลอกสูตรลงมาจะเห็นว่า แสดงผลลัพธ์ได้ถูกต้อง



มีสูตรอื่นๆ อีกมั๊ย?

นอกจากสูตรที่กล่าวถึงข้างต้นแล้ว ยังสามารถใช้สูตรอื่นๆ ซึ่งจะให้ผลลัพธ์เหมือนกันได้อีก เช่น

A4 =IF(ISNUMBER(B4),COUNT(A$1:A3)+1,"")

โดยฟังก์ชัน COUNT จะนับเฉพาะเซลล์ที่เป็นตัวเลข ซึ่งในกรณีนี้จะนับตั้งแต่ A1 ลงมาจนถึงเซลล์ก่อนเซลล์ปัจจุบัน โดยนับเฉพาะเซลล์ที่เป็นตัวเลขว่ามีกี่เซลล์ แล้วบวกค่าเพิ่มอีกหนึ่ง เนื่องจากกรณีนี้เรารันตัวเลขลำดับเรียงต่อเนื่องกัน ดังนั้น การนับจำนวนเซลล์ที่เป็นตัวเลข หรือดูเซลล์ที่มีค่ามากสุด แล้วบวกเพิ่มอีกหนึ่ง จึงได้ผลลัพธ์เท่ากัน


แต่ถ้าเลขที่สัญญาไม่ใช่ตัวเลขทั้งหมด อาจจะมีตัวอักษร หรือมีสัญลักษณ์อื่นแทรกอยู่ ทำให้ฟังก์ชัน ISNUMBER คืนค่าออกมาเป็นเท็จ สองสูตรข้างต้นจึงใช้ไม่ได้ เราอาจจะเลี่ยงไปใช้วิธีอื่น เช่น นับจำนวนตัวอักษรของเลขที่สัญญา เช่น ถ้ารูปแบบเลขที่สัญญาเป็นลักษณะ 3000-2962 (มีจำนวน 9 ตัวอักษร) ก็แก้สูตรเป็น

A4 =IF(LEN(B4)=9,MAX(A$1:A3)+1,"") หรือ
A4 =IF(LEN(B4)=9,COUNT(A$1:A3)+1,"") ก็ได้เช่นกัน


ลองประยุกต์ใช้ดูนะครับ

0 ความคิดเห็น:

แสดงความคิดเห็น