สารบัญ
แม้ว่า Microsoft จะไม่ได้จัดเตรียมสูตรหรือไวยากรณ์แบบตรงเพื่อ แยกเฉพาะตัวเลข จากเซลล์ Excel แต่เราสามารถรวม สูตร Excel ที่หลากหลายเข้ากับ สร้างฟังก์ชันเดียวที่สามารถใช้สำหรับแยกตัวเลขหรือตัวเลขจากเซลล์ Excel เท่านั้น ในบทความนี้ เราจะพยายามแสดงและอธิบายรายละเอียดว่าเราจะดึงเฉพาะตัวเลขจากเซลล์ที่มีสูตรที่เหมาะสมภายใต้เกณฑ์ไม่กี่ข้อได้อย่างไร
ดาวน์โหลดแบบฝึกหัดแบบฝึกหัด
ดาวน์โหลด หนังสือแบบฝึกหัดฟรีที่เราใช้ในการเตรียมบทความนี้ คุณสามารถป้อนค่าข้อความพร้อมตัวเลขในเซลล์ที่เลือก และค้นหาผลลัพธ์ได้ทันทีผ่านสูตรที่ฝังไว้
การแยกตัวเลขจาก Cell.xlsm
7 วิธีที่มีประสิทธิภาพในการแยกเฉพาะตัวเลขออกจากเซลล์ Excel
จะมีโค้ด VBA หนึ่งโค้ด คุณลักษณะ Excel หนึ่งรายการ และสูตรที่ใช้ได้จริงห้าสูตรเพื่อช่วยคุณแยกตัวเลขออกจากเซลล์ เช่นเดียวกับภาพด้านล่าง เรามีรหัสบางส่วนที่ประกอบด้วยตัวเลขและตัวอักษรที่มีตัวเลขอยู่ข้างหน้า เราต้องแยกตัวเลขหรือตัวเลขเหล่านั้นเท่านั้น
1. การดึงตัวเลขออกจากจุดเริ่มต้นของข้อความ
ในวิธีแรกนี้ เราจะรวม ซ้าย , ผลรวม , เลน และ ฟังก์ชัน SUBSTITUTE เพื่อดึงตัวเลขออกจากจุดเริ่มต้นของสตริงข้อความ อันดับแรก เราจะพิมพ์สูตรนี้ลงในเซลล์และส่วนก่อนหน้านี้ ค่าผลลัพธ์จะเป็น - {0,1,1,0,0,0,0,0,0,1}.
➤ SUM(LEN(B5)-LEN (SUBSTITUTE(B5, {“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”}, “”) ))
- ด้วยความช่วยเหลือของฟังก์ชัน SUM ค่าภายในอาร์เรย์ที่พบในส่วนสุดท้ายจะรวมกันได้สูงสุด 3 ( 0+1+1+0+0+0+0+0+0+1).
- ดังนั้น ตามส่วนแรกของสูตร A>0 (3>0) . ตอนนี้ เราจะไปยังส่วนถัดไปของรายละเอียด
รายละเอียดของส่วน B = MID(0&B5, LARGE(INDEX(ISNUMBER(–MID(B5,ROW( INDIRECT(“$1:$”&LEN(B5))),1))* ROW(INDIRECT(“$1:$”&LEN(B5))),0), ROW(INDIRECT(“$1:$” &LEN(B5))))+1,1)
➤ INDIRECT(“$1:$” &LEN(B5))
- ฟังก์ชัน INDIRECT ที่นี่จะเก็บค่าสตริงเป็นการอ้างอิงไปยังอาร์เรย์ ภายในวงเล็บ คำสั่ง ampersand (&) จะรวมจำนวนอักขระที่พบในเซลล์ B5 ด้วยไวยากรณ์ของช่วงของเซลล์ หมายความว่าตั้งแต่ 1 ถึงจำนวนอักขระที่กำหนด อักขระแต่ละตัวจะถูกจัดเก็บเป็นการอ้างอิงอาร์เรย์
➤ ROW(INDIRECT(“$1:$”&LEN(B5)) )
- ตอนนี้ ฟังก์ชัน ROW จะดึงตัวเลขทั้งหมดออกจากอาร์เรย์และค่าผลลัพธ์สำหรับเซลล์ B5 จะเป็น- {1;2;3;4;5;6;7;8;9}.
➤ MID(B5,ROW( INDIRECT(“$1:$”&LEN(B5))),1)
- ในส่วนนี้ของสูตรฟังก์ชัน MID จะแสดงอักขระทั้งหมดจากเซลล์ B5 ตามตำแหน่งทั้งหมดที่พบเป็นตัวเลขในส่วนก่อนหน้า ดังนั้นค่าที่แยกออกมาจะพบหลังจากส่วนนี้ - {“1″;”9″;” “;”D”;”D”;”X”;”2″;”M”;”N”}.
➤ ISNUMBER(–MID(B5,ROW(INDIRECT (“$1:$”&LEN(B5))),1))
- เนื่องจาก ISNUMBER เป็นฟังก์ชันตรรกะ 'จะพิจารณาแยกกันว่าค่าที่พบในส่วนก่อนหน้านี้เป็นสตริงตัวเลขหรือไม่ ถ้าใช่ จะแสดงเป็น TRUE มิฉะนั้นจะแสดงเป็น FALSE
- ดังนั้น ในกรณีของเรา ผลลัพธ์จะเป็น- { TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}.
➤ INDEX(ISNUMBER(–MID(B5,ROW(INDIRECT("$1:$" &LEN(B5))),1))*ROW(INDIRECT(“$1:$”&LEN(B5))),0)
- หากคุณสังเกตภายใน เหนือฟังก์ชัน มีการใช้ยัติภังค์คู่ที่เรียกว่า Double Unary ใช้เพื่อแปลงค่าตรรกะทั้งหมดเป็นสตริงตัวเลข - 1(TRUE) หรือ 0(FALSE) ตอนนี้ ฟังก์ชัน INDEX จะส่งกลับผลลัพธ์นี้เป็น - {1;1;0;0;0;0;1;0;0}
- หลังจาก ค่าผลลัพธ์จะถูกคูณด้วยค่าที่ได้จากฟังก์ชัน ROW ภายในอาร์เรย์ และผลลัพธ์จะเป็น - {1;2;0;0;0;0; 7;0;0}.
➤ LARGE(INDEX(ISNUMBER(–MID(B5,ROW(INDIRECT(“$1:$”&LEN(B5))),1 ))*ROW(INDIRECT(“$1:$”&LEN(B5))),0),ROW(INDIRECT(“$1:$”&LEN(B5))))
- ฟังก์ชัน LARGE จะจัดเรียงที่ใหญ่ที่สุดใหม่ ค่าจากอาร์เรย์ตามตำแหน่งตามตัวเลขที่พบในฟังก์ชัน ROW & ค่าผลลัพธ์ของเราสำหรับส่วนนี้ของสูตรจะเป็น- {7;2;1;0;0;0;0;0;0}.
➤ MID(0&B5 , LARGE(INDEX(ISNUMBER(–MID(B5,ROW(INDIRECT(“$1:$”&LEN(B5))),1))*ROW(INDIRECT(“$1:$”&LEN(B5)) ),0), ROW(INDIRECT(“$1:$”&LEN(B5))))+1,1)
- ตอนนี้ ส่วนนี้ของฟังก์ชันจะเชื่อมกัน 0 กับข้อความในเซลล์ B5 จากนั้นจะเพิ่ม 1 ทีละรายการด้วยตัวเลขทั้งหมดที่พบในส่วนสุดท้าย และแสดงอักขระจากเซลล์ B5 ตามตำแหน่งตัวเลขที่กำหนด
- ดังนั้น ผลลัพธ์ของเราจากส่วนนี้จะเป็น- {“2″;”9″;”1″;”0″;”0″;”0″;”0″;”0″;”0” }.
รายละเอียดของส่วน C = (10^ROW(INDIRECT(“$1:$”&LEN(B5)))/10),”)
- ส่วนนี้จะกำหนดกำลังของ 10 & เก็บไว้ในอาร์เรย์ เลขยกกำลังเป็นตัวเลขที่พบจากฟังก์ชัน ROW ก่อนหน้านี้
- ส่วนนี้ของสูตรจะคืนค่าเป็น - {1;10;100 ;1000;10000;100000;1000000;10000000;100000000}.
การคูณของ B n และ C n
- ตอนนี้ ค่าผลลัพธ์จากการแจกแจงหลักสองรายการล่าสุดของ B และ C จะคูณภายในอาร์เรย์ จากนั้นผลคูณที่พบจากการคูณจะเป็น- {2;90;100;0;0;0;0;0;0}.
- และสุดท้าย SUMPRODUCT ฟังก์ชันจะรวมค่าเหล่านี้ที่พบในอาร์เรย์ ดังนั้น ผลลัพธ์สุดท้ายของเราจะเป็น 192 (2+90+100+0+0+0+0+0+0) ซึ่งเป็นตัวเลขที่แยกออกมาจากเซลล์ B5 .
อ่านเพิ่มเติม: วิธีแยกข้อความและตัวเลขใน Excel (4 วิธีง่ายๆ)
5. การแยกตัวเลขห้าหลักออกจากสตริง
เราจะใช้สูตรอื่นเพื่อแยกตัวเลขห้าหลักจากส่วนใดๆ ของสตริงใน Excel เราจะใช้ฟังก์ชัน CONCAT และ SEQUENCE เป็นครั้งแรกในส่วนนี้ นอกจากนี้ เราได้เปลี่ยนชุดข้อมูลของเราเล็กน้อยสำหรับวิธีนี้
ขั้นตอน:
- ขั้นแรก เลือกช่วงเซลล์ C5:C12 .
- ประการที่สอง พิมพ์สูตรต่อไปนี้
=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),""))
- สุดท้าย กด Ctrl+Enter .
🔎 การแยกสูตร
- LEN(B5)
- เอาต์พุต: 11 .
- ฟังก์ชันนี้ส่งคืนความยาวของสตริง
- SEQUENCE(11)
- เอาต์พุต: {1;2;3;4;5; 6;7;8;9;10;11} .
- ฟังก์ชันนี้ส่งคืนตัวเลขสิบเอ็ดตัวแรก
- MID(B5,{1;2 ;3;4;5;6;7;8;9;10;11},1)
- เอาต์พุต: {“1″;”9″;” “;”D”;”D”;”X”;”2″;”M”;”N”;”3″;”3″} .
- ใช้ส่วนนี้รับอักขระแต่ละตัวจากสตริง
- 0+{“1″;”9″;” “;”D”;”D”;”X”;”2″;”M”;”N”;”3″;”3″}
- เอาต์พุต: {1;9; #VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3;3} .
- เมื่อเราเพิ่มศูนย์ด้วยสตริง มันจะ ส่งคืนข้อผิดพลาด
- IFERROR({1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3 ;3},””)
- เอาต์พุต: {1;9;””;””;””;””;2;””;””;3;3} .
- เราจะเว้นว่างไว้สำหรับค่าความผิดพลาดทั้งหมด
- CONCAT({1;9;””;””;””;””;2;” ”;””;3;3})
- เอาต์พุต: 19233 .
- สุดท้าย เรากำลังเพิ่มค่าทั้งหมดเพื่อแยกตัวเลขห้าหลักเท่านั้น
6. การใช้ Flash Fill เพื่อแยกตัวเลขภายในช่วง
การใช้ the Flash คุณลักษณะการเติม ทำได้ง่ายและสะดวกกว่าวิธีอื่นๆ ที่กล่าวถึงข้างต้น เราจะดึงตัวเลขจากตำแหน่งใดๆ ในสตริงข้อความ ในการดำเนินการวิธีนี้อย่างถูกต้อง เราต้องช่วย Excel ค้นหารูปแบบของค่าเซลล์ในคอลัมน์หรือแถวโดยการแยกค่าสองค่าแรกเท่านั้น
ขั้นตอน:
- เริ่มต้นด้วยการพิมพ์ตัวเลขด้วยตนเองในเซลล์ C5
- จากนั้น เริ่มพิมพ์ตัวเลขจากเซลล์ B6 ไปยังเซลล์ C6 และ Excel จะจดจำรูปแบบโดยอัตโนมัติ
- สุดท้าย กด Enter .
หมายเหตุ: วิธีนี้มีบางอย่างข้อเสีย ซึ่งเป็นเหตุผลว่าทำไมจึงไม่แนะนำในทุกกรณีเมื่อคุณต้องการแยกตัวเลขออกจากสตริงข้อความ การเติมแบบรวดเร็ว มักจะเป็นไปตามรูปแบบจากเซลล์ในคอลัมน์หรือช่วง ดังนั้น การแยกหรือการคำนวณ 2 หรือ 3 ครั้งแรกต้องทำด้วยตนเองเพื่อช่วยให้ Excel ดูดซับรูปแบบทั่วไปของค่าผลลัพธ์ แต่บางครั้ง มันไม่เป็นไปตามรูปแบบที่เราต้องการ ดังนั้น มันจะเป็นไปตามรูปแบบของมันเองและให้ผลลัพธ์ที่ไม่ตรงกัน
ตัวอย่างเช่น ถ้าเราต้องแยกเลขศูนย์สองตัว (00) ออกจาก ข้อมูลที่กำหนดจะแสดงเพียงหนึ่งศูนย์ไม่ใช่สอง จากนั้น ถ้าคุณต้องการแยกตัวเลขจากจุดเริ่มต้นหรือตำแหน่งสุดท้ายในเซลล์ ก็จะแยกค่าข้อความพร้อมกับตัวเลขด้วย
อ่านเพิ่มเติม: วิธี เพื่อแยกตัวเลขหลังข้อความเฉพาะใน Excel (2 วิธีที่เหมาะสม)
7. การใช้รหัส VBA เพื่อแยกเฉพาะตัวเลขจากเซลล์ Excel
หากคุณสนใจที่จะใช้ <1 มาโคร Excel VBA เพื่อแยกเฉพาะตัวเลขออกจากเซลล์ จากนั้นให้ทำตามขั้นตอนด้านล่าง เราจะแสดงวิธีพิมพ์โค้ดในหน้าต่าง โมดูล VBA รหัสนี้จะขอให้ผู้ใช้ระบุช่วงเซลล์อินพุตและเอาต์พุต
ขั้นตอน:
- ประการแรก กด ALT+F11 เพื่อเปิดหน้าต่าง VBA
- จากนั้น จากแท็บ แทรก เลือก คำสั่ง โมดูล โมดูลใหม่หน้าต่างจะปรากฏขึ้นในตำแหน่งที่คุณจะพิมพ์รหัส
- ประการที่สาม วางรหัสต่อไปนี้ภายในโมดูลของคุณหลังจากคัดลอก
9622
- หลังจากนั้น ให้กด F5 เพื่อดำเนินการโค้ด กล่องโต้ตอบชื่อ “ Input Data Selection ” จะปรากฏขึ้น
- จากนั้น เลือกเซลล์ข้อความทั้งหมด (เช่น B5:B12 ) และ กด ตกลง .
- หลังจากนั้น กล่องโต้ตอบอื่นชื่อ “ การเลือกเซลล์เอาต์พุต ” จะปรากฏขึ้นในตำแหน่งที่คุณต้องเลือกเซลล์หรือช่วงของเซลล์ที่ต้องการเพื่อดูข้อมูลหรือค่าเอาต์พุต
- สุดท้าย เลือกช่วงเซลล์ C5:C12 และกด Enter .
- ดังนั้น คุณจะเห็นตัวเลขที่แยกออกมาจาก ข้อความทั้งหมดในครั้งเดียว ดังนั้น เราจะจบวิธีง่ายๆ 7 วิธีในการแยกตัวเลขจากเซลล์ Excel เท่านั้น
🔎 การแบ่งโค้ด VBA
➤ การประกาศพารามิเตอร์
4309
- ในตอนแรก เราจะประกาศทั้งหมดในส่วนนี้ พารามิเตอร์ของเราเป็นจำนวนเต็ม ค่าสตริง หรือช่วงของเซลล์ จากนั้นเราจะตั้งชื่อกล่องโต้ตอบของเราด้วย “การเลือกข้อมูลอินพุต” และ “การเลือกเซลล์เอาต์พุต”
➤ การกำหนดประเภทของอินพุต & ผลลัพธ์สำหรับกล่องโต้ตอบ
1747
- ตอนนี้ เรากำลังกำหนดพารามิเตอร์และประเภทของพารามิเตอร์สำหรับกล่องโต้ตอบ ที่นี่ การเพิ่ม Type:=8 หมายความว่าข้อมูลอินพุตและเอาต์พุตจะประกอบด้วยเซลล์อ้างอิงหรือช่วงของเซลล์
- เรายังกำหนดว่าหากไม่พบข้อมูลอินพุต รูทีนย่อยจะหยุดทำงาน เมื่อกล่าวถึงมาโครนี้ รูทีนย่อยจะไม่แยกย่อยเนื่องจากข้อมูลที่ขาดหายไป แต่จะหยุดทำงานแทน
➤ การรวมฟังก์ชันภายในโค้ดลูปสำหรับ การวนซ้ำ
9834
- สุดท้ายนี้เป็นส่วนที่สำคัญที่สุดที่เราใช้ฟังก์ชันหรือสูตรที่เราจำเป็นต้องกำหนดให้กับข้อความเพื่อค้นหาค่าผลลัพธ์จากสตริง .
- ข้อดีหลักประการหนึ่งของการเขียนโค้ดฟังก์ชันสำหรับ Excel คือไม่จำเป็นต้องพิมพ์สูตรขนาดใหญ่เหมือนที่เราต้องทำในวิธีก่อนหน้านี้ เนื่องจาก VBA มีคำสั่งในตัวเพื่อใช้การวนซ้ำ For หรือ while โดยที่การวนซ้ำสำหรับแต่ละรายละเอียดในสตริงข้อความสามารถดำเนินการได้โดยไม่ยุ่งยาก
อ่านเพิ่มเติม: วิธีแยกตัวเลขออกจากข้อความใน Excel VBA (3 วิธีการ)
สรุป
เราได้แสดงวิธีง่ายๆ 7 วิธีในการ แยกเฉพาะตัวเลข จากเซลล์ Excel การแยกเฉพาะตัวเลขออกจากสตริงข้อความนั้นไม่ง่ายอย่างที่คิด เพราะต้องใช้หลายฟังก์ชันร่วมกัน ซึ่งทำให้สูตรสุดท้ายหรือไวยากรณ์มีความซับซ้อน แต่เราหวังว่าวิธีที่เราพยายามแสดงสูตรโดยการแบ่งฟังก์ชันภายในจะช่วยให้คุณเข้าใจไวยากรณ์ได้อย่างสบายใจและความสะดวก
หากคุณพบฟังก์ชันหรือสูตรอื่นๆ ที่เราควรเพิ่มที่นี่ โปรดแจ้งให้เราทราบผ่านความคิดเห็นอันมีค่าของคุณ หรือคุณสามารถดูบทความที่ให้ข้อมูลเพิ่มเติมและน่าสนใจของเราเกี่ยวกับฟังก์ชัน Excel บนเว็บไซต์นี้
จากนั้น ใช้ Fill Handle เราจะคัดลอกสูตรนั้นไปยังเซลล์ที่เหลือขั้นตอน:
- ประการแรก พิมพ์สูตรในเซลล์ C5 .
=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))
- อย่างที่สอง กด Enter แล้วคุณจะได้รหัสแรกเป็นเลข 34
- ประการที่สาม ใช้ Fill Handle จากนั้นเติมเซลล์อื่นๆ ทั้งหมดในคอลัมน์ C .
🔎 รายละเอียดสูตร
➤ SUBSTITUTE(B5,{“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″}, ””)
- ที่นี่ ฟังก์ชัน SUBSTITUTE จะหาตัวเลข (0-9) ตามลำดับ และหากพบ ก็จะแทนที่ ตัวเลขนั้นในเซลล์ B5 ด้วยอักขระว่างทุกครั้ง ดังนั้น ฟังก์ชันจะส่งกลับเป็น - {“34DTXRF”,”34DTXRF”,”34DTXRF”,”4DTXRF”,”3DTXRF”,”34DTXRF”,”34DTXRF”,”34DTXRF”,”34DTXRF”,”34DTXRF”}
➤ LEN(SUBSTITUTE(B5,{“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7 ″,”8″,”9″},”))
- ฟังก์ชัน LEN กำหนดจำนวนอักขระในสตริง . ดังนั้น ในที่นี้ ฟังก์ชัน LEN จะนับอักขระทั้งหมดที่พบในข้อความทีละตัวผ่านฟังก์ชัน SUBSTITUTE ค่าผลลัพธ์จะอยู่ที่นี่ในกรณีของเรา – {7,7,7,6,6,7,7,7,7,7,7}.
➤ LEN(B5)- LEN(SUBSTITUTE(B5,{“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″},”” )))
- ตอนนี้ ส่วนนี้คือการลบออกจากจำนวนอักขระในเซลล์ B5 กับจำนวนอักขระอื่นๆ ทั้งหมดที่พบในส่วนก่อนหน้าของสูตร ดังนั้น ค่าผลลัพธ์จะเป็น – {0,0,0,1,1,0,0,0,0,0}.
➤ SUM(LEN(B5) -LEN(SUBSTITUTE(B5,{“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″},” ”)))
- ฟังก์ชัน SUM จะรวมค่าที่ลบทั้งหมดที่พบ & ดังนั้นผลลัพธ์จะอยู่ที่นี่ 2 (0+0+0+1+1+0+0+0+0+0)
➤ = ซ้าย(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″, ”8″,”9″},”))))
- และตอนนี้เป็นส่วนสุดท้ายที่ฟังก์ชัน ซ้าย ส่งกลับค่าด้วยจำนวนอักขระที่แน่นอนจากด้านซ้ายที่พบในส่วนก่อนหน้าของสูตร เนื่องจากเราได้ค่าผลรวมเป็น 2 ฟังก์ชัน LEFT ที่นี่จะส่งกลับเฉพาะ 34 จากข้อความ 34DTXRF .
➥ ที่เกี่ยวข้อง: วิธีแยกตัวเลขใน Excel โดยใช้สูตร (5 วิธี)
2. แยกตัวเลขออกจาก ด้านขวาของข้อความ
ในส่วนนี้ เราจะแยกตัวเลขหรือตัวเลขจากด้านขวาของสตริงข้อความ เราจะใช้ฟังก์ชัน ขวา , นาที และ ค้นหา ที่นี่
ขั้นตอน:
- เริ่มต้นด้วย ในชุดข้อมูลของเราสิ่งที่เราต้องพิมพ์ในเซลล์ C5 คือ-
=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&"0123456789")) +1)
- หลังจากนั้น กด Enter แล้วใช้ Fill Handle เพื่อเติมส่วนที่เหลือของเซลล์โดยอัตโนมัติ
🔎 รายละเอียดสูตร
➤ B5&”0123456789″
- ที่นี่ เราเชื่อมค่าในเซลล์ B5 กับ 0123456789 โดยใช้ เครื่องหมายและ (&) ระหว่าง และเราจะได้ค่าผลลัพธ์เป็น DTXRF340123456789
➤ SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)
- ตอนนี้ ฟังก์ชัน SEARCH จะค้นหาตัวเลขทั้งหมด (0-9) ทีละตัวใน ค่าผลลัพธ์ที่ได้รับจากส่วนก่อนหน้า และจะส่งคืนตำแหน่งของตัวเลข 10 หลักเหล่านั้นในอักขระของ DTXRF340123456789 ดังนั้นค่าผลลัพธ์ของเราจะเป็น - {8,9,10,6,7,13,14,15,16,17}.
➤ MIN(SEARCH({0 ,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))
- The MIN ฟังก์ชัน ใช้เพื่อค้นหาตัวเลขหรือตัวเลขต่ำสุดในอาร์เรย์ ดังนั้นค่าต่ำสุดหรือต่ำสุดจะเป็น - 6 จากอาร์เรย์ {8,9,10,6,7,13,14,15,16,17} ที่พบในส่วนก่อนหน้าของสูตร .
➤ LEN(B5) – นาที(ค้นหา({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″ )) +1)
- ตอนนี้ B5 จะพบจำนวนอักขระใน LEN ฟังก์ชัน จากนั้นจะลบค่า 6 (พบในส่วนสุดท้าย) แล้วส่งกลับผลลัพธ์โดยบวก 1 ในกรณีของเราค่าผลลัพธ์จะเป็น 2 (7-6+1) .
➤ RIGHT(B5,LEN(B5) – MIN(SEARCH({0,1, 2,3,4,5,6,7,8,9}, B5&”0123456789″)) +1)
- The ขวา ฟังก์ชันจะส่งกลับจำนวนอักขระที่ระบุจากด้านสุดท้ายหรือด้านขวาของสตริง จากผลลัพธ์ที่พบผ่านกระบวนการลบในส่วนที่แล้ว ฟังก์ชัน ขวา จะแสดงอักขระ 2 ตัวสุดท้ายจากเซลล์ B5 และนั่นจะเป็น 34 .
อ่านเพิ่มเติม: วิธีแยกตัวเลขในเซลล์เดียวใน Excel (5 วิธี)
3. การแยกตัวเลขออกจากส่วนใดๆ ของสตริงข้อความ
ตอนนี้ ต่อไปนี้เป็นวิธีแก้ปัญหาแบบกว้างๆ สำหรับทุกกรณี วิธีนี้จะดึงตัวเลขหรือหลักจากตำแหน่งใดๆ ในสตริงข้อความ นอกจากนี้ เราจะใช้ TEXTJOIN , IFERROR , INDIRECT , <1 ฟังก์ชัน MID และ ROW ในวิธีนี้
ขั้นตอน:
- ประการแรก พิมพ์สูตรในเซลล์ปลายทางของคุณดังนี้-
=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)*1),""))
- จากนั้น หากคุณ ' ใช้ Excel 2016 หรือเวอร์ชันที่สูงกว่า แล้วกด Enter หรือกด Ctrl+Shift+Enter เพื่อ รับผลลัพธ์สำหรับสูตรอาร์เรย์นี้
- หลังจากขั้นตอนนี้ ให้ป้อนเซลล์อื่นโดยอัตโนมัติโดยใช้ Fill Handle เท่านี้ก็เสร็จเรียบร้อย
🔎 รายละเอียดสูตร
➤ INDIRECT(“1:”&LEN(B5))
- ฟังก์ชัน INDIRECT ใช้เพื่อจัดเก็บอาร์เรย์ของ ค่าของเซลล์เป็นข้อความอ้างอิง คำสั่ง ampersand (&) เชื่อมความยาวของอักขระของเซลล์ B5 ด้วยไวยากรณ์ของช่วงที่ไม่สมบูรณ์ (1:)
- ดังนั้น ในที่นี้ ฟังก์ชัน INDIRECT จะจัดเก็บตัวเลขทั้งหมดระหว่าง 1 ถึงความยาวของอักขระในเซลล์ B5 เป็นข้อความอ้างอิง
➤ ROW(INDIRECT(“1:”&LEN(B5)))
- The <ฟังก์ชัน 1> ROW มักจะบอกหมายเลขแถวของเซลล์ แต่ที่นี่ในฟังก์ชัน INDIRECT เนื่องจากไม่มีการกล่าวถึงเซลล์อ้างอิง ในกรณีนี้ ฟังก์ชัน ROW จะดึงข้อมูลทั้งหมด ค่าหรือตัวเลขจากข้อความอ้างอิงที่จัดเก็บไว้ในฟังก์ชัน INDIRECT
- ตอนนี้ สำหรับเซลล์ที่ 1 B5 ค่าผลลัพธ์ผ่านฟังก์ชัน ROW และ INDIRECT เหล่านี้จะเป็น - {1;2;3;4;5;6; 7;8;9}.
➤ (MID(B5,ROW(INDIRECT(“1:”&LEN(B5))),1)) <5 ฟังก์ชัน
- ฟังก์ชัน MID จะให้คุณกำหนดอักขระจากตรงกลางของสตริงข้อความ โดยระบุตำแหน่งเริ่มต้น & ความยาว
- ดังนั้น สำหรับตำแหน่งทั้งหมด 9 ตำแหน่งที่พบในส่วนก่อนหน้านี้ ฟังก์ชัน MID จะแสดงอักขระทั้งหมดทีละตัวสำหรับแต่ละตำแหน่ง & ดังนั้นจะคืนค่าเป็น - {“1″;”9″;”“;”D”;”D”;”X”;”2″;”M”;”N”}.
➤ IFERROR((MID(B5,ROW(INDIRECT (“1:”&LEN(B5))),1)*1),””)
- ตอนนี้ IFERROR เป็นฟังก์ชันตรรกะที่จะตรวจสอบว่าสตริงเป็นตัวเลขหรืออย่างอื่น หากไม่ได้ระบุสตริงที่มีตัวเลขหรือตัวเลข ก็จะคืนค่าด้วยคำสั่งข้อความที่กำหนดไว้
- ในกรณีของเรา ค่าทั้งหมดที่พบในส่วนสุดท้ายจะถูกคูณด้วย 1 และ เมื่อผลลัพธ์ถูกส่งกลับเป็นข้อผิดพลาดของค่าสำหรับตัวอักษรหรือค่าข้อความที่ไม่สามารถคูณได้ ฟังก์ชัน IFERROR จะแปลงข้อผิดพลาดเป็นสตริงว่าง ดังนั้น ค่าผลลัพธ์ของเราจะเป็น - {1;9;””;””;””;”;”;2;””;””}.
➤ =TEXTJOIN (“”,TRUE,IFERROR((MID(B5,ROW(INDIRECT(“1:”&LEN(B5))),1)*1),”))
- และตอนนี้ส่วนสุดท้ายจะดำเนินการผ่านฟังก์ชัน TEXTJOIN ฟังก์ชันนี้ใช้เพื่อเชื่อมต่อหรือรวมสองสตริงด้วยตัวคั่นที่ระบุ
- ดังนั้น ค่าผลลัพธ์ที่เราพบในส่วนก่อนหน้าจะถูกรวมเข้าด้วยกันควบคู่ไปกับ TEXTJOIN ฟังก์ชัน ดังนั้นเราจะได้ตัวเลข 192
อ่านเพิ่มเติม: วิธีแยกตัวเลขหลายตัวออกจากสตริงใน Excel (6 วิธี)
4. การซ้อนหลายฟังก์ชันเพื่อดึงเฉพาะตัวเลขออกมา
ตอนนี้ เราจะแสดงสูตรอื่นเพื่อแยกเฉพาะตัวเลขจากตำแหน่งใดๆ จาก Excelเซลล์ แม้ว่ามันอาจจะดูค่อนข้างซับซ้อน แต่เราจะแจกแจงสูตรทั้งหมดและพยายามอธิบายฟังก์ชันที่กะทัดรัดทั้งหมดให้เข้าใจง่าย นอกจากนี้ เราจะใช้ IF , LARGE , INDEX , <1 ฟังก์ชัน SUMPRODUCT และ ISNUMBER ในสูตรนี้
- เริ่มต้นโดยพิมพ์สูตรนี้ในเซลล์ C5 . คุณต้องแทนที่การอ้างอิงเซลล์ตามเซลล์ของคุณเองในสเปรดชีตเท่านั้น จากนั้นฝังสูตรนี้ คุณจะได้ผลลัพธ์ที่คาดหวังทันที และสูตรนี้ใช้ได้อย่างสมบูรณ์แบบใน Excel ทุกรุ่น
=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")
- หลังจากนั้น คุณต้องกด Enter หลังจากพิมพ์สูตรทั้งหมดเสร็จแล้วเท่านั้น
🔎 การแจกแจงสูตร
ก่อนที่จะเริ่มการแจกแจงข้อมูลขนาดใหญ่นี้ & สูตรกระชับเราสามารถแยกออกเป็นส่วนๆ เช่น -
=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ……….B n C n ),””)
ไวยากรณ์นี้หมายความว่าถ้า A มากกว่า 0 ดังนั้นผลิตภัณฑ์ทั้งหมดของ B n และ C n จะรวมกันเป็นผลลัพธ์สุดท้าย และถ้า A ไม่เกิน 0 ผลลัพธ์จะกลับเป็นเซลล์ว่างหรือเซลล์ว่าง
- A =SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″, ”9”}, “”
- B = MID(0&B5, LARGE(INDEX(ISNUMBER(–MID(B5,ROW(INDIRECT(“$1 :$”&LEN(B5))),1))* ROW(INDIRECT(“$1:$”&LEN(B5))),0), ROW(INDIRECT(“$1:$”&LEN( B5))))+1,1)
- C = 10^ROW(INDIRECT(“$1:$”&LEN(B5)))/ 10),””
รายละเอียดของส่วน A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {“0″,”1″,”2″ ,”3″,”4″,”5″,”6″,”7″,”8″,”9”}, “”
➤ SUBSTITUTE(B5, { “0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”}, “”)
- ฟังก์ชัน SUBSTITUTE จะค้นหาหลักทั้งหมด (0-9) ทีละหลักในข้อความ 19 DDX2MN ในแต่ละครั้ง และจะแทนที่ค่าเหล่านั้น หลักที่มีสตริงว่างในตำแหน่งของตัวเลข
- ดังนั้นค่าผลลัพธ์ในอาร์เรย์จะเป็น - {“19 DDX2MN”,”9 DDX2MN”,”19 DDXMN”,”19 DDX2MN”,” 19 DDX2MN”,”19 DDX2MN”,”19 DDX2MN”,”19 DDX2MN”,”19 DDX2MN”,”1 DDX2MN”}.
➤ LEN(SUBSTITUTE(B5, { “0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”}, “”))
- เดอะ ฟังก์ชัน LEN จะนับจำนวนอักขระในค่าสตริงทั้งหมดที่ได้รับจากส่วนก่อนหน้า ดังนั้น ฟังก์ชันนี้จะคืนค่าเป็น - {9,8,8,9,9,9,9,9,9,8}.
➤ LEN(B5)-LEN( SUBSTITUTE(B5, {“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”}, “”))
- ในส่วนนี้ของสูตร อักขระจำนวนหนึ่งในเซลล์ B5 จะลบตัวเลขทั้งหมดที่พบใน