สารบัญ
วิธีที่รวดเร็วในการเปลี่ยนช่วงของเซลล์เป็นแถวเดียวด้วยความช่วยเหลือของฟังก์ชัน TOROW
Microsoft Excel 365 ได้แนะนำฟังก์ชันใหม่หลายอย่าง เพื่อดำเนินการปรับแต่งต่าง ๆ ด้วยอาร์เรย์ ด้วย TOROW คุณสามารถทำการแปลงแบบช่วงต่อแถวได้ในเวลาไม่นาน ต่อไปนี้คือรายการงานที่ฟังก์ชันใหม่นี้สามารถทำได้:
ฟังก์ชัน TOROW ของ Excel
ฟังก์ชัน TOROW ใน Excel ใช้เพื่อแปลงอาร์เรย์หรือช่วงของเซลล์ให้เป็น หนึ่งแถว
ฟังก์ชันรับอาร์กิวเมนต์ทั้งหมดสามอาร์กิวเมนต์ ซึ่งต้องใช้อาร์กิวเมนต์แรกเท่านั้น
TOROW(อาร์เรย์, [ละเว้น], [scan_by_column])โดยที่:
อาร์เรย์ (จำเป็น) - อาร์เรย์หรือช่วงที่จะแปลงเป็นแถวเดียว
ละเว้น (ไม่บังคับ) - กำหนดว่าจะละเว้นช่องว่างหรือ/และ ข้อผิดพลาด สามารถใช้หนึ่งในค่าเหล่านี้:
- 0 หรือละเว้น (ค่าเริ่มต้น) - เก็บค่าทั้งหมด
- 1 - ละเว้นช่องว่าง
- 2 - ละเว้นข้อผิดพลาด
- 3 - ละเว้นช่องว่างและข้อผิดพลาด
Scan_by_column (ไม่บังคับ) - กำหนดวิธีการสแกนอาร์เรย์:
- FALSE หรือละเว้น (ค่าเริ่มต้น) - สแกนอาร์เรย์ในแนวนอนทีละแถว
- จริง - สแกนอาร์เรย์ในแนวตั้งทีละคอลัมน์
เคล็ดลับ:
- ในการแปลงอาร์เรย์ ลงในคอลัมน์เดียว ให้ใช้ฟังก์ชัน TOCOL
- หากต้องการเตรียมการแปลงแถวเป็นอาร์เรย์แบบย้อนกลับ ให้ใช้ฟังก์ชัน WRAPCOLS เพื่อรวมเป็นคอลัมน์หรือใช้ฟังก์ชัน WRAPROWS เพื่อรวมอาร์เรย์เป็นแถว
- หากต้องการเปลี่ยนแถวเป็นคอลัมน์ ให้ใช้ฟังก์ชัน TRANSPOSE
ความพร้อมใช้งานของ TOROW
TOROW เป็นฟังก์ชันใหม่ซึ่งรองรับเฉพาะใน Excel สำหรับ Microsoft 365 (สำหรับ Windows และ Mac) และ Excel สำหรับเว็บ
สูตร TOROW พื้นฐานใน Excel
เมื่อต้องการทำการแปลงจากช่วงต่อแถวอย่างง่าย ให้ใช้สูตร TOROW ในรูปแบบพื้นฐาน สำหรับสิ่งนี้ คุณต้องกำหนดอาร์กิวเมนต์แรกเท่านั้น ( อาร์เรย์ )
ตัวอย่างเช่น เมื่อต้องการเปลี่ยนอาร์เรย์สองมิติที่ประกอบด้วย 3 คอลัมน์และ 3 แถวเป็นแถวเดียว สูตรคือ:
=TOROW(A3:C6)
คุณป้อนสูตรลงในเซลล์เพียงเซลล์เดียว (กรณีของเราคือ A10) และสูตรจะใส่ลงในเซลล์จำนวนมากโดยอัตโนมัติตามต้องการเพื่อเก็บผลลัพธ์ทั้งหมด ในแง่ Excel ช่วงเอาต์พุตที่ล้อมรอบด้วยขอบสีน้ำเงินบาง ๆ เรียกว่าช่วงการรั่วไหล
วิธีการทำงานของสูตรนี้:
ขั้นแรก ช่วงเซลล์ที่ให้มาจะเปลี่ยนเป็นอาร์เรย์สองมิติ โปรดสังเกตคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคและแถวที่คั่นด้วยเครื่องหมายอัฒภาค:
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
จากนั้น ฟังก์ชัน TOROW จะอ่านอาร์เรย์จากซ้ายไปขวาและแปลงเป็นอาร์เรย์แนวนอนหนึ่งมิติ:
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
ผลลัพธ์ไปที่เซลล์ A10 ซึ่งจะขยายไปยังเซลล์ข้างเคียงทางด้านขวา
แปลงช่วงเป็นแถวโดยไม่สนใจช่องว่างและข้อผิดพลาด
ตามค่าเริ่มต้น ฟังก์ชัน TOROW จะเก็บค่าทั้งหมดจากอาร์เรย์ต้นทาง รวมถึงเซลล์ว่างและข้อผิดพลาด ในเอาต์พุต ค่าศูนย์จะปรากฏแทนที่เซลล์ว่าง ซึ่งอาจทำให้เกิดความสับสน
หากต้องการ ยกเว้นช่องว่าง ให้ตั้งค่าอาร์กิวเมนต์ ละเว้น เป็น 1:
=TOROW(A3:C5, 1)
หากต้องการ ละเว้นข้อผิดพลาด ให้ตั้งค่าอาร์กิวเมนต์ ละเว้น เป็น 2:
=TOROW(A3:C5, 2)
หากต้องการข้าม ทั้ง ช่องว่างและข้อผิดพลาด ใช้ 3 สำหรับอาร์กิวเมนต์ ละเว้น :
=TOROW(A3:C5, 3)
ภาพด้านล่างแสดงสถานการณ์จำลองทั้งสามสถานการณ์: <18
อ่านอาร์เรย์ในแนวนอนหรือแนวตั้ง
ด้วยลักษณะการทำงานเริ่มต้น ฟังก์ชัน TOROW จะประมวลผลอาร์เรย์ตามแนวนอนจากซ้ายไปขวา หากต้องการสแกนค่าตามคอลัมน์จากบนลงล่าง ให้ตั้งค่าอาร์กิวเมนต์ที่ 3 ( scan_by_column ) เป็น TRUE หรือ 1
ตัวอย่างเช่น หากต้องการอ่านช่วงต้นฉบับทีละแถว สูตรใน E3 คือ:
=TOROW(A3:C5)
หากต้องการสแกนช่วงตามคอลัมน์ สูตรใน E8 คือ:
=TOROW(A3:C5, ,TRUE)
ในทั้งสองกรณี อาร์เรย์ผลลัพธ์คือ ขนาดเท่ากัน แต่เรียงค่าต่างกัน
รวมช่วงหลายช่วงเป็นแถวเดียว
ในการรวมช่วงที่ไม่ติดกันหลายช่วงเป็นแถวเดียว ขั้นแรก คุณต้องรวมช่วงในแนวนอนหรือแนวตั้งเป็นอาร์เรย์เดียวโดยใช้ HSTACK หรือ VSTACK ตามลำดับ จากนั้นใช้ฟังก์ชัน TOROW เพื่อแปลงอาร์เรย์ที่รวมกันเป็นแถว
ขึ้นอยู่กับตรรกะทางธุรกิจของคุณ สูตรใดสูตรหนึ่งต่อไปนี้จะทำงานได้
เรียงซ้อนอาร์เรย์ในแนวนอนและแปลงตาม แถว
กับแถวแรกช่วงใน A3:C4 และช่วงที่สองใน A8:C9 สูตรด้านล่างจะซ้อนสองช่วงในแนวนอนเป็นอาร์เรย์เดียว จากนั้นแปลงเป็นแถวที่อ่านค่าจากซ้ายไปขวา ผลลัพธ์อยู่ใน E3 ในภาพด้านล่าง
=TOROW(HSTACK(A3:C4, A8:C9))
เรียงซ้อนอาร์เรย์ในแนวนอนและแปลงตามคอลัมน์
หากต้องการอ่านอาร์เรย์เรียงซ้อนในแนวตั้งจากบนลงล่าง คุณตั้งค่าอาร์กิวเมนต์ที่ 3 ของ TOROW เป็น TRUE ตามที่แสดงใน E5 ในภาพด้านล่าง:
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
เรียงอาร์เรย์ในแนวตั้งและแปลงตามแถว
เพื่อผนวกแต่ละอาร์เรย์ อาร์เรย์ที่ตามมาที่ด้านล่างของอาร์เรย์ก่อนหน้า และอ่านอาร์เรย์ที่รวมกันในแนวนอน สูตรใน E12 คือ:
=TOROW(VSTACK(A3:C4, A8:C9))
อาร์เรย์แบบเรียงซ้อนในแนวตั้งและแปลงตามคอลัมน์
หากต้องการเพิ่มแต่ละอาร์เรย์ที่ตามมาที่ด้านล่างของอาร์เรย์ก่อนหน้าและสแกนอาร์เรย์ที่รวมกันในแนวตั้ง สูตรคือ:
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
เพื่อให้เข้าใจตรรกะได้ดีขึ้น ให้สังเกตลำดับค่าต่างๆ ใน อาร์เรย์ผลลัพธ์:
แยกค่าที่ไม่ซ้ำจากช่วงลงในแถว
เริ่มต้นด้วย Microsoft Excel 2016 เรามีฟังก์ชันที่ยอดเยี่ยมชื่อ UNIQUE ซึ่งสามารถรับค่าที่ไม่ซ้ำจากคอลัมน์เดียวได้อย่างง่ายดาย หรือแถว. อย่างไรก็ตาม ไม่สามารถจัดการอาร์เรย์แบบหลายคอลัมน์ได้ เพื่อเอาชนะข้อจำกัดนี้ ให้ใช้ฟังก์ชัน UNIQUE และ TOROW ร่วมกัน
ตัวอย่างเช่น หากต้องการแยกค่าที่แตกต่างกัน (แตกต่างกัน) ทั้งหมดจากช่วง A2:C7 และวางผลลัพธ์ไว้ในแถวเดียวสูตรคือ:
=UNIQUE(TOROW(A2:C7), TRUE)
เนื่องจาก TOROW ส่งคืนอาร์เรย์แนวนอนหนึ่งมิติ เราจึงตั้งค่าอาร์กิวเมนต์ที่ 2 ( by_col ) ของ UNIQUE เป็น TRUE เพื่อเปรียบเทียบคอลัมน์กับแต่ละคอลัมน์ อื่นๆ
ในกรณีที่คุณต้องการให้ผลลัพธ์เรียงตามลำดับตัวอักษร ให้รวมสูตรข้างต้นในฟังก์ชัน SORT:
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
เช่นเดียวกับ UNIQUE by_col อาร์กิวเมนต์ ของ SORT ถูกตั้งค่าเป็น TRUE
ทางเลือกของ TOROW สำหรับ Excel 365 - 2010
ใน Excel เวอร์ชันที่ไม่มีฟังก์ชัน TOROW คุณสามารถแปลงช่วงเป็นแถวเดียวโดยใช้ฟังก์ชันต่างๆ สองสามฟังก์ชันที่ทำงานร่วมกัน รุ่นเก่า วิธีแก้ปัญหาเหล่านี้ซับซ้อนกว่า แต่ก็ได้ผล
ในการสแกนช่วงในแนวนอน สูตรทั่วไปคือ:
INDEX( ช่วง , QUOTIENT(COLUMN (A1)-1, COLUMNS( range ))+1, MOD(COLUMN(A1)-1, COLUMNS( range ))+1)หากต้องการสแกนช่วงในแนวตั้ง สูตรทั่วไปคือ :
INDEX( range , MOD(COLUMN(A1)-1, COLUMNS( range ))+1, QUOTIENT(COLUMN (A1)-1, COLUMNS(<15)>ช่วง ))+1)สำหรับชุดข้อมูลตัวอย่างของเราใน A3:C5 สูตรจะมีรูปแบบดังนี้:
หากต้องการสแกนช่วงตามแถว:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
สูตรนี้เป็นทางเลือกแทนฟังก์ชัน TOROW โดยอาร์กิวเมนต์ที่ 3 ตั้งค่าเป็น FALSE หรือละไว้:
=TOROW(A3:C5)
หากต้องการสแกนช่วงโดย คอลัมน์:
=INDEX($A$3:$C$5, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
สูตรนี้เทียบเท่ากับฟังก์ชัน TOROW โดยอาร์กิวเมนต์ตัวที่ 3 ตั้งค่าเป็นTRUE:
=TOROW(A3:C5, ,TRUE)
โปรดทราบว่าไม่เหมือนกับฟังก์ชัน TOROW ของอาร์เรย์ไดนามิก คือควรป้อนสูตรดั้งเดิมเหล่านี้ในแต่ละเซลล์ที่คุณต้องการให้ผลลัพธ์ปรากฏ ในกรณีของเรา สูตรแรก (ตามแถว) ไปที่ E3 และคัดลอกผ่าน M3 สูตรที่สอง (ตามคอลัมน์) อยู่ใน E8 และลากผ่าน M8
เพื่อให้สูตรคัดลอกได้อย่างถูกต้อง เราจะล็อกช่วงโดยใช้การอ้างอิงแบบสัมบูรณ์ ($A$3:$C$5) ช่วงที่ตั้งชื่อก็มีประโยชน์เช่นกัน
หากคุณคัดลอกสูตรไปยังเซลล์มากกว่าที่ต้องการ #REF! ข้อผิดพลาดจะปรากฏในเซลล์ "พิเศษ" ในการแก้ไขปัญหานี้ ให้ใส่สูตรของคุณในฟังก์ชัน IFERROR ดังนี้:
=IFERROR(INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1), "")
สูตรเหล่านี้ทำงานอย่างไร
ด้านล่างนี้คือรายละเอียดโดยละเอียด ของสูตรแรกที่จัดเรียงค่าตามแถว:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1)
ที่หัวใจของสูตร เราใช้ฟังก์ชัน INDEX เพื่อรับค่าของเซลล์ตามตำแหน่งสัมพัทธ์ใน ช่วง
หมายเลขแถว คำนวณโดยสูตรนี้:
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
แนวคิดคือการสร้างลำดับตัวเลขซ้ำๆ เช่น 1,1 ,1,2,2,2,3,3,3, … โดยที่แต่ละหมายเลขจะทำซ้ำหลาย ๆ ครั้งตามที่มีคอลัมน์อยู่ในช่วงแหล่งที่มา และนี่คือวิธีที่เราทำ:
QUOTIENT ส่งคืนส่วนจำนวนเต็มของการหาร
สำหรับ ตัวเศษ เราใช้ COLUMN(A1)-1 ซึ่งส่งคืนค่าอนุกรม ตัวเลขจาก 0 ในเซลล์แรกที่ป้อนสูตรเป็น n (จำนวนค่าทั้งหมดในช่วงลบ 1) ในเซลล์สุดท้ายที่ป้อนสูตร ในตัวอย่างนี้ เรามี 0 ใน E2 และ 8 ใน M3
สำหรับ ตัวหาร เราใช้ COLUMNS($A$3:$C$5)) ซึ่งจะส่งคืนค่าคงที่เท่ากับจำนวนคอลัมน์ในช่วงของคุณ (3 ในกรณีของเรา)
ด้วยเหตุนี้ ฟังก์ชัน QUOTIENT จึงส่งกลับ 0 ใน 3 เซลล์แรก (E3:G3) ซึ่งเรา บวก 1 ดังนั้นหมายเลขแถวคือ 1
สำหรับ 3 เซลล์ถัดไป (H3:J3) QUOTIENT จะส่งกลับ 1 และ +1 จะให้หมายเลขแถว 2 ไปเรื่อยๆ
ในการคำนวณ หมายเลขคอลัมน์ คุณต้องสร้างลำดับหมายเลขที่เหมาะสมโดยใช้ฟังก์ชัน MOD:
MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5))+1
เนื่องจากมี 3 คอลัมน์ในช่วงของเรา ลำดับจึงต้องมีลักษณะดังนี้ : 1,2,3,1,2,3,…
ฟังก์ชัน MOD ส่งกลับเศษที่เหลือหลังจากการหาร
ใน E3, MOD(COLUMN(A1)-1, COLUMNS($ A$3:$C$5))+
กลายเป็น
MOD(1-1, 3)+1)
และคืนค่า 1.
ใน F3, MOD(COLUMN(B1)-1, COLUMNS($A$3:$C$5))+
กลายเป็น
MOD(2-1, 3)+1)
และส่งคืน 2
เมื่อสร้างหมายเลขแถวและคอลัมน์แล้ว INDEX จะดึงค่าที่จุดตัดของแถวและคอลัมน์นั้นได้อย่างง่ายดาย
ใน E3 INDEX($A$3 :$C$5, 1, 1) คืนค่าจากแถวที่ 1 และคอลัมน์ที่ 1 ของช่วงที่อ้างอิง เช่น จากเซลล์ A3
ใน F3 INDEX($A$3:$C$5, 1, 2) จะส่งกลับค่าจากแถวที่ 1 และคอลัมน์ที่ 2 เช่น จากเซลล์ B3
และอื่น ๆ
สูตรที่สองที่สแกนช่วงตามคอลัมน์ ทำงานในวิธีที่คล้ายกัน ข้อแตกต่างคือเราใช้ MOD เพื่อคำนวณหมายเลขแถวและ QUOTIENT เพื่อคำนวณหมายเลขคอลัมน์
ฟังก์ชัน TOROW ไม่ทำงาน
หากฟังก์ชัน TOROW เกิดข้อผิดพลาด แสดงว่า น่าจะเป็นหนึ่งในสาเหตุต่อไปนี้:
#NAME? ข้อผิดพลาด
ด้วยฟังก์ชัน Excel ส่วนใหญ่ #NAME? ข้อผิดพลาดเป็นตัวบ่งชี้ที่ชัดเจนว่าชื่อของฟังก์ชันสะกดผิด เมื่อใช้ TOROW อาจหมายความว่าไม่มีฟังก์ชันนี้ใน Excel ของคุณ หาก Excel ของคุณเป็นเวอร์ชันอื่นที่ไม่ใช่ 365 ให้ลองใช้ทางเลือก TOROW
ข้อผิดพลาด #NUM
ข้อผิดพลาด #NUM ระบุว่าอาร์เรย์ที่ส่งคืนไม่สามารถใส่ในแถวได้ ส่วนใหญ่มักเกิดขึ้นเมื่อคุณอ้างอิงทั้งคอลัมน์และ/หรือแถวแทนที่จะเป็นช่วงที่เล็กกว่า
ข้อผิดพลาด #SPILL
ในกรณีส่วนใหญ่ ข้อผิดพลาด #SPILL แสดงว่าแถวที่ คุณป้อนสูตรแล้วไม่มีเซลล์ว่างมากพอที่จะใส่ผลลัพธ์ลงในสูตร หากเซลล์ข้างเคียงว่างเปล่า ตรวจสอบให้แน่ใจว่าไม่มีช่องว่างหรืออักขระอื่นๆ ที่ไม่พิมพ์อยู่ในเซลล์นั้น สำหรับข้อมูลเพิ่มเติม โปรดดูที่ข้อผิดพลาด #SPILL หมายความว่าอย่างไรใน Excel
นั่นคือวิธีที่คุณใช้ฟังก์ชัน TOROW ใน Excel เพื่อแปลงอาร์เรย์หรือช่วง 2 มิติให้เป็นแถวเดียว ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
สมุดงานแบบฝึกหัดสำหรับการดาวน์โหลด
ฟังก์ชัน Excel TOROW - ตัวอย่างสูตร (ไฟล์ .xlsx)