ฟังก์ชัน Excel TOCOL เพื่อแปลงช่วงเป็นคอลัมน์เดียว

  • แบ่งปันสิ่งนี้
Michael Brown

วิธีง่ายๆ ในการแปลงอาร์เรย์หรือช่วงเป็นคอลัมน์ด้วยฟังก์ชัน TOCOL

ความสามารถในการย้ายข้อมูลจากคอลัมน์เป็นแถวและย้อนกลับมีอยู่ใน Excel มานานแล้ว สักครู่ แต่การแปลงช่วงของเซลล์เป็นคอลัมน์เดียวเป็นงานที่ยุ่งยากในการถอดรหัส ในที่สุดมันก็เปลี่ยนไปแล้ว Microsoft ได้เปิดตัวฟังก์ชันใหม่ที่เรียกว่า TOCOL ซึ่งสามารถแปลงอาร์เรย์เป็นคอลัมน์ได้ในพริบตา ด้านล่างนี้คือรายการงานที่ฟังก์ชันใหม่นี้สามารถแก้ไขได้อย่างง่ายดาย

    ฟังก์ชัน TOCOL ของ Excel

    ฟังก์ชัน TOCOL ใน Excel จะแปลงอาร์เรย์หรือช่วงของเซลล์เป็นเซลล์เดียว คอลัมน์

    ฟังก์ชันรับอาร์กิวเมนต์สามรายการ แต่จำเป็นต้องมีอาร์กิวเมนต์แรกเท่านั้น

    TOCOL(อาร์เรย์, [ละเว้น], [scan_by_column])

    ที่ไหน:

    อาร์เรย์ (จำเป็น) - อาร์เรย์หรือช่วงที่จะแปลงเป็นคอลัมน์

    ละเว้น (ไม่บังคับ) - กำหนดว่าจะละเว้นช่องว่างหรือ/และข้อผิดพลาด สามารถเป็นหนึ่งในค่าเหล่านี้:

    • 0 หรือละเว้น (ค่าเริ่มต้น) - เก็บค่าทั้งหมด
    • 1 - ละเว้นช่องว่าง
    • 2 - ละเว้นข้อผิดพลาด
    • 3 - ละเว้นช่องว่างและข้อผิดพลาด

    Scan_by_column (ไม่บังคับ) - กำหนดว่าจะสแกนอาร์เรย์ในแนวนอนหรือแนวตั้ง:

    • FALSE หรือละเว้น (ค่าเริ่มต้น) - สแกนอาร์เรย์ทีละแถวจากซ้ายไปขวา
    • TRUE - สแกนอาร์เรย์ตามคอลัมน์จากบนลงล่าง

    เคล็ดลับ:

    • หากต้องการแปลงอาร์เรย์เป็นแถวเดียว ให้ใช้ TOROWฟังก์ชัน
    • หากต้องการแปลงแบบคอลัมน์เป็นอาร์เรย์แบบตรงข้าม ให้ใช้ฟังก์ชัน WRAPCOLS เพื่อตัดตามคอลัมน์ หรือใช้ฟังก์ชัน WRAPROWS เพื่อตัดตามแถว
    • หากต้องการย้ายอาร์เรย์จากแนวนอนเป็น แนวตั้งหรือกลับกัน เช่น เปลี่ยนแถวเป็นคอลัมน์ ใช้ฟังก์ชัน TRANSPOSE

    ความพร้อมใช้งานของ TOCOL

    TOCOL เป็นฟังก์ชันใหม่ซึ่งรองรับใน Excel สำหรับ Microsoft 365 (สำหรับ Windows และ Mac) และ Excel สำหรับเว็บ

    สูตร TOCOL พื้นฐานเพื่อแปลงช่วงเป็นคอลัมน์

    สูตร TOCOL ในรูปแบบที่ง่ายที่สุดต้องการเพียงหนึ่งอาร์กิวเมนต์ - อาร์เรย์ . ตัวอย่างเช่น หากต้องการวางอาร์เรย์สองมิติที่ประกอบด้วย 3 คอลัมน์และ 4 แถวลงในคอลัมน์เดียว สูตรคือ:

    =TOCOL(A2:C5)

    สูตรจะถูกป้อนในเซลล์เดียวเท่านั้น (E2 ใน ตัวอย่างนี้) และทะลักเข้าสู่เซลล์ด้านล่างโดยอัตโนมัติ ในแง่ของ Excel ผลลัพธ์เรียกว่าช่วงการรั่วไหล

    วิธีการทำงานของสูตรนี้:

    ในทางเทคนิค ช่วง A2:C5 จะถูกแปลงเป็นอาร์เรย์สองมิติก่อน โปรดสังเกตแถวที่คั่นด้วยเครื่องหมายอัฒภาคและคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาค:

    {"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}

    ฟังก์ชัน TOCOL จะสแกนอาร์เรย์จากซ้ายไปขวาและแปลงเป็นอาร์เรย์แนวตั้งหนึ่งมิติ:

    {"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}

    ผลลัพธ์จะอยู่ในเซลล์ E2 ซึ่งจะขยายไปยังเซลล์ด้านล่าง

    วิธีใช้ฟังก์ชัน TOCOL ใน Excel - ตัวอย่างสูตร

    เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับความเป็นไปได้ของฟังก์ชัน TOCOL และงานใดบ้างที่สามารถครอบคลุมได้ มาดูตัวอย่างสูตรกัน

    แปลงอาร์เรย์เป็นคอลัมน์โดยไม่สนใจช่องว่างและข้อผิดพลาด

    ดังที่คุณอาจสังเกตเห็นในตัวอย่างก่อนหน้านี้ สูตร TOCOL เริ่มต้นจะเก็บค่าทั้งหมดจากอาร์เรย์ต้นทาง รวมถึงเซลล์ว่างและข้อผิดพลาด

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

    =TOCOL(A2:C5, 1)

    หากต้องการ ละเว้นข้อผิดพลาด ให้ตั้งค่าอาร์กิวเมนต์ที่ 2 เป็น 2:

    =TOCOL(A2:C5, 2) <3

    หากต้องการแยกทั้งสอง ช่องว่างและข้อผิดพลาด ให้ใช้ 3 สำหรับอาร์กิวเมนต์ ละเว้น :

    =TOCOL(A2:C5, 3)

    สแกนอาร์เรย์ในแนวนอนหรือแนวตั้ง

    ด้วยอาร์กิวเมนต์ scan_by_column เริ่มต้น (FALSE หรือละเว้น) ฟังก์ชัน TOCOL จะสแกนอาร์เรย์ตามแนวนอนทีละแถว หากต้องการประมวลผลค่าตามคอลัมน์ ให้ตั้งค่าอาร์กิวเมนต์นี้เป็น TRUE หรือ 1 ตัวอย่างเช่น:

    =TOCOL(A2:C5, ,TRUE)

    โปรดสังเกตว่าในทั้งสองกรณี อาร์เรย์ที่ส่งคืนจะมีขนาดเท่ากัน แต่มีการจัดเรียงค่า ในลำดับอื่น

    รวมช่วงหลายช่วงเป็นคอลัมน์เดียว

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

    สมมติว่าช่วงแรกคือ A2:C4 และช่วงที่สองคือ A8:C9 สูตรจะใช้รูปแบบนี้:

    =TOCOL(VSTACK(A2:C4, A8:C9))

    สูตรนี้แสดงลักษณะการทำงานเริ่มต้น - อ่านอาร์เรย์ที่รวมกันในแนวนอนจากด้านซ้าย ไปทางขวาตามที่แสดงในคอลัมน์ E ในภาพด้านล่าง

    หากต้องการอ่านค่าในแนวตั้งจากบนลงล่าง ให้ตั้งค่าอาร์กิวเมนต์ที่ 3 ของ TOCOL เป็น TRUE:

    =TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)

    โปรดทราบว่า ในกรณีนี้ สูตรจะส่งกลับค่าจากคอลัมน์ A ของทั้งสองอาร์เรย์ก่อน จากนั้นจึงส่งกลับจากคอลัมน์ B เป็นต้น เหตุผลคือ TOCOL สแกนอาร์เรย์แบบสแต็กเดียว ไม่ใช่แต่ละช่วงต้นฉบับ

    หากตรรกะทางธุรกิจของคุณต้องการการซ้อนช่วงต้นฉบับในแนวนอนแทนที่จะเป็นแนวตั้ง ให้ใช้ฟังก์ชัน HSTACK แทน VSTACK

    หากต้องการผนวกอาร์เรย์ที่ตามมาแต่ละตัวทางด้านขวาของอาร์เรย์ก่อนหน้า และอ่าน อาร์เรย์ที่รวมกันในแนวนอน สูตรคือ:

    =TOCOL(HSTACK(A2:C4, A8:C10))

    หากต้องการเพิ่มอาร์เรย์ที่ตามมาแต่ละรายการทางด้านขวาของอาร์เรย์ก่อนหน้าและสแกนอาร์เรย์ที่รวมกันในแนวตั้ง สูตรคือ:

    =TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)

    แยกค่าที่ไม่ซ้ำจากช่วงหลายคอลัมน์

    ฟังก์ชัน UNIQUE ของ Excel สามารถค้นหาค่าที่ไม่ซ้ำได้อย่างง่ายดายในคอลัมน์หรือแถวเดียว ตลอดจนส่งคืนแถวที่ไม่ซ้ำ แต่ไม่สามารถแยกค่าที่ไม่ซ้ำจาก อาร์เรย์หลายคอลัมน์ วิธีแก้ไขคือใช้ร่วมกับฟังก์ชัน TOCOL

    เช่น หากต้องการแยกค่า (ที่แตกต่างกัน) ทั้งหมดออกจากช่วงA2:C7 สูตรคือ:

    =UNIQUE(TOCOL(A2:C7))

    นอกจากนี้ คุณสามารถรวมสูตรข้างต้นในฟังก์ชัน SORT เพื่อจัดเรียงอาร์เรย์ที่ส่งคืนตามลำดับตัวอักษร:

    =SORT(UNIQUE(TOCOL(A2:C7)))

    วิธีแปลงช่วงเป็นคอลัมน์ใน Excel 365 - 2010

    ใน Excel เวอร์ชันที่ไม่รองรับฟังก์ชัน TOCOL มีวิธีอื่นๆ อีกสองสามวิธีในการแปลงช่วงของเซลล์เป็นคอลัมน์ วิธีแก้ปัญหาเหล่านี้ค่อนข้างยุ่งยาก แต่ก็ได้ผล

    วิธีอ่านช่วงต่อแถว:

    INDEX( range , QUOTIENT(ROW(A1)-1, COLUMNS( ช่วง ))+1, MOD(ROW(A1)-1, COLUMNS( ช่วง ))+1)

    หากต้องการอ่านช่วงตามคอลัมน์:

    INDEX( ช่วง , MOD(ROW(A1)-1, ROWS( ช่วง ))+1, QUOTIENT(ROW(A1)-1, ROWS( ช่วง ))+1 )

    สำหรับชุดข้อมูลตัวอย่างของเรา สูตรมีดังนี้:

    หากต้องการสแกนช่วง แนวนอนจากซ้ายไปขวา :

    =INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)

    สูตรนี้เทียบเท่ากับฟังก์ชัน TOCOL โดยตั้งค่าอาร์กิวเมนต์ที่ 3 เป็น FALSE หรือละเว้น:

    =TOCOL(A2:C5)

    หากต้องการสแกนช่วง ในแนวตั้งจากบนลงล่าง :

    =INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)

    สูตรนี้เปรียบได้กับฟังก์ชัน TOCOL โดยอาร์กิวเมนต์ตัวที่ 3 ตั้งค่าเป็น TRUE:

    =TOCOL(A2:C5, ,TRUE)

    ซึ่งแตกต่างจาก TOCOL ตรงที่ควรป้อนสูตรทางเลือกในแต่ละสูตร เซลล์ที่คุณต้องการให้ผลลัพธ์ปรากฏ ในกรณีของเรา สูตรจะไปที่เซลล์ E2 (ตามแถว) และ G2 (ตามคอลัมน์) จากนั้นจึงคัดลอกลงไปที่แถวที่ 13

    หากสูตรถูกคัดลอกไปยังแถวมากกว่าที่จำเป็น a#รีฟ! ข้อผิดพลาดจะปรากฏในเซลล์ "พิเศษ" เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น คุณสามารถซ้อนสูตรในฟังก์ชัน IFERROR ดังนี้:

    =IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")

    สังเกตว่าเพื่อให้สูตรคัดลอกได้อย่างถูกต้อง เราจะล็อกช่วงโดยใช้การอ้างอิงเซลล์แบบสัมบูรณ์ ($ $2:$C$5). คุณสามารถใช้ช่วงที่มีชื่อแทนได้

    สูตรเหล่านี้ทำงานอย่างไร

    ด้านล่างนี้คือรายละเอียดโดยละเอียดของสูตรแรกที่จัดเรียงเซลล์ตามแถว:

    =INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)

    แนวคิดคือการใช้ฟังก์ชัน INDEX เพื่อส่งกลับค่าของเซลล์บางเซลล์ตามหมายเลขแถวและคอลัมน์ที่เกี่ยวข้องในช่วง

    หมายเลขแถว คำนวณโดยชุดค่าผสมนี้ :

    QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    QUOTIENT ส่งคืนส่วนจำนวนเต็มของการหาร

    สำหรับ ตัวเศษ ให้คุณใช้ ROW(A1)-1 ซึ่งส่งคืน a หมายเลขซีเรียลจาก 0 ใน E2 (เซลล์แรกที่ป้อนสูตร) ​​ถึง 11 ใน E13 (เซลล์สุดท้ายที่ป้อนสูตร)

    ตัวหาร แสดงค่าโดย COLUMNS($A $2:$C$5)) เป็นค่าคงที่และเท่ากับจำนวนคอลัมน์ในช่วงของคุณ (3 ในกรณีของเรา)

    ตอนนี้ ถ้าคุณตรวจสอบผลลัพธ์ของ QUOTIENT สำหรับ 3 เซลล์แรก (E2:E4) คุณจะเห็นว่ามันมีค่าเท่ากับ 0 (เพราะส่วนจำนวนเต็มของการหารเป็นศูนย์) การเพิ่ม 1 จะให้หมายเลขแถว 1

    สำหรับ 3 เซลล์ถัดไป (E5:E5) QUOTIENT จะส่งกลับ 1 และการดำเนินการ +1 จะส่งกลับหมายเลขแถว 2 ไปเรื่อยๆ

    กล่าวอีกนัยหนึ่ง ส่วนนี้ของสูตรจะสร้างการทำซ้ำลำดับของตัวเลข เช่น 1,1,1,2,2,2,3,3,3,4,4,4,... ตัวเลขแต่ละตัวจะทำซ้ำหลายครั้งเท่าที่มีคอลัมน์อยู่ในช่วงของคุณ

    ถึง คำนวณ หมายเลขคอลัมน์ คุณสร้างลำดับหมายเลขที่เหมาะสมโดยใช้ฟังก์ชัน MOD:

    MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1

    เนื่องจากมี 3 คอลัมน์ในช่วงของเรา (A2:C5) ลำดับต้องเป็น 1,2,3,1,2,3,...

    ฟังก์ชัน MOD ส่งกลับเศษที่เหลือหลังจากการหาร

    ใน E2, MOD(ROW(A1)-1, COLUMNS ($A$2:$C$5))+1)

    กลายเป็น

    MOD(1-1, 3)+1)

    และคืนค่า 1

    ใน E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)

    กลายเป็น

    MOD(2-1, 3) +1)

    และส่งคืน 2.

    เมื่อสร้างหมายเลขแถวและคอลัมน์แล้ว INDEX จะไม่มีปัญหาในการเรียกค่าที่ต้องการ

    ใน E2, INDEX($A$2 :$C$5, 1, 1) ส่งคืนค่าจากแถวที่ 1 และคอลัมน์ที่ 1 ของช่วงที่อ้างอิง เช่น จากเซลล์ A2

    ใน E3, INDEX($A$2:$C$5, 1 , 2) ส่งกลับค่าจากแถวที่ 1 และคอลัมน์ที่ 2 เช่น จากเซลล์ B2

    และอื่น ๆ

    สูตรที่สองที่สแกนช่วงด้วย c olumn ทำงานในลักษณะเดียวกัน ข้อแตกต่างคือใช้ MOD เพื่อรับหมายเลขแถวและ QUOTIENT เพื่อรับหมายเลขคอลัมน์

    ฟังก์ชัน TOCOL ไม่ทำงาน

    หากฟังก์ชัน TOCOL แสดงข้อผิดพลาด เป็นไปได้มากว่า เป็นหนึ่งในเหตุผลเหล่านี้:

    TOCOL ไม่ได้รับการสนับสนุนใน Excel ของคุณ

    เมื่อคุณได้รับ #NAME? ข้อผิดพลาด การสะกดชื่อฟังก์ชันที่ถูกต้องเป็นสิ่งแรกที่ต้องทำตรวจสอบ. ถ้าชื่อถูกต้องแต่ข้อผิดพลาดยังคงอยู่ แสดงว่าฟังก์ชันนี้ไม่พร้อมใช้งานใน Excel เวอร์ชันของคุณ ในกรณีนี้ ให้ลองใช้ TOCOL ทางเลือก

    อาร์เรย์ใหญ่เกินไป

    ข้อผิดพลาด #NUM ระบุว่าอาร์เรย์ไม่สามารถใส่ในคอลัมน์ได้ กรณีทั่วไปคือเมื่อคุณอ้างถึงทั้งคอลัมน์หรือทั้งแถว

    มีเซลล์ว่างไม่เพียงพอ

    เมื่อเกิดข้อผิดพลาด #SPILL ให้ตรวจสอบว่าคอลัมน์ที่ป้อนสูตร มีเซลล์ว่างเพียงพอที่จะเติมผลลัพธ์ หากเซลล์ว่างเปล่า ตรวจสอบให้แน่ใจว่าไม่มีช่องว่างและอักขระอื่นๆ ที่ไม่ได้พิมพ์อยู่ในเซลล์ สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีแก้ไขข้อผิดพลาด #SPILL ใน Excel

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

    สมุดงานแบบฝึกหัด

    ฟังก์ชัน TOCOL ของ Excel - ตัวอย่างสูตร (ไฟล์ .xlsx)

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้