แยกสตริงข้อความด้วยตัวคั่นเป็นหลายแถว - 3 เคล็ดลับด่วน
โดยปกติ คุณสามารถใช้คุณลักษณะข้อความเป็นคอลัมน์เพื่อแบ่งเนื้อหาของเซลล์ออกเป็นหลายคอลัมน์โดยใช้ตัวคั่นเฉพาะ เช่น เครื่องหมายจุลภาค จุด เครื่องหมายอัฒภาค ทับ ฯลฯ แต่บางครั้ง คุณอาจต้องแบ่งเนื้อหาของเซลล์ที่คั่นออกเป็นหลายแถว และทำซ้ำข้อมูลจากคอลัมน์อื่นตามภาพด้านล่างที่แสดง คุณมีวิธีที่ดีในการจัดการกับงานนี้ใน Excel หรือไม่? บทช่วยสอนนี้จะแนะนำวิธีการที่มีประสิทธิภาพในการทำงานนี้ให้สำเร็จใน Excel
ในส่วนนี้ ฉันจะแนะนำรหัส VBA สองรหัสเพื่อช่วยแยกเนื้อหาของเซลล์ซึ่งคั่นด้วยตัวคั่น
หากต้องการแยกสตริงข้อความซึ่งคั่นด้วยตัวคั่นปกติ เช่น เครื่องหมายจุลภาค ช่องว่าง เครื่องหมายอัฒภาค เครื่องหมายทับ ฯลฯ โค้ดต่อไปนี้สามารถช่วยคุณได้ โปรดทำตามขั้นตอนด้านล่าง:
หมายเหตุ: รหัสนี้ ไม่ สนับสนุน แก้คุณควรสำรองข้อมูลก่อนที่จะใช้รหัสนี้
ขั้นตอนที่ 1: เปิดตัวแก้ไขโมดูล VBA และคัดลอกโค้ด
1. เปิดใช้งานแผ่นที่คุณต้องการใช้ จากนั้นกด Alt + F11 คีย์เพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง
2. ในหน้าต่างที่เปิดขึ้น ให้คลิก สิ่งที่ใส่เข้าไป > โมดูล เพื่อสร้างโมดูลเปล่าใหม่
3. จากนั้นคัดลอกและวางโค้ดด้านล่างลงในโมดูลว่าง
รหัส VBA: แยกข้อความตามตัวคั่นเฉพาะ (เครื่องหมายจุลภาค จุด เว้นวรรค ฯลฯ)
Sub SplitTextIntoRows()
'UpdatebyExtendoffice
Dim xSRg, xIptRg, xCrRg, xRg As Range
Dim xSplitChar As String
Dim xArr As Variant
Dim xFNum, xFFNum, xRow, xColumn, xNum As Integer
Dim xWSh As Worksheet
Set xSRg = Application.InputBox("Select a range:", "Kutools for Excel", , , , , , 8)
If xSRg Is Nothing Then Exit Sub
xSplitChar = Application.InputBox("Type delimiter:", "Kutools for Excel", , , , , , 2)
If xSplitChar = "" Then Exit Sub
Application.ScreenUpdating = False
xRow = xSRg.Row
xColumn = xSRg.Column
Set xWSh = xSRg.Worksheet
For xFNum = xSRg.Rows.Count To 1 Step -1
Set xRg = xWSh.Cells.Item(xRow + xFNum - 1, xColumn)
xArr = Split(xRg, xSplitChar)
xIndex = UBound(xArr)
For xFFNum = LBound(xArr) To UBound(xArr)
xRg.EntireRow.Copy
xRg.Offset(1, 0).EntireRow.Insert Shift:=xlShiftDown
xRg.Worksheet.Cells(xRow + xFNum, xColumn) = xArr(xIndex)
xIndex = xIndex - 1
Next
xRg.EntireRow.Delete
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
ขั้นตอนที่ 2: รันโค้ดเพื่อรับผลลัพธ์
1. หลังจากวางรหัสแล้ว กรุณากด F5 คีย์เพื่อเรียกใช้รหัสนี้ จากนั้นกล่องพรอมต์จะปรากฏขึ้นเพื่อเตือนให้คุณเลือกเซลล์ที่มีข้อความคั่นที่คุณต้องการแยก ดูภาพหน้าจอ:
2. จากนั้นคลิก OKกล่องพรอมต์อื่นจะปรากฏขึ้นเพื่อเตือนให้คุณพิมพ์ตัวคั่นที่คุณต้องการแยกข้อมูลตาม ที่นี่ฉันพิมพ์เครื่องหมายจุลภาคและช่องว่าง (, ) ดูภาพหน้าจอ:
3. ในที่สุดคลิก OK ปุ่ม. ตอนนี้คุณจะเห็นว่าสตริงข้อความที่เลือกถูกแบ่งออกเป็นแถวตามเครื่องหมายจุลภาคและข้อมูลคอลัมน์สัมพัทธ์อื่นๆ จะถูกทำซ้ำตามภาพด้านล่างที่แสดง:
ถ้าเนื้อหาในเซลล์ของคุณถูกคั่นด้วยการขึ้นบรรทัดใหม่ เพื่อแยกออกเป็นหลายแถว นี่คือโค้ด VBA อีกอันที่สามารถช่วยคุณได้
หมายเหตุ: รหัสนี้ ไม่ สนับสนุน แก้ คุณควรสำรองข้อมูลก่อนที่จะใช้รหัสนี้
ขั้นตอนที่ 1: เปิดตัวแก้ไขโมดูล VBA และคัดลอกโค้ด
1 กด Alt + F11 คีย์เพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง
2. ในหน้าต่างที่เปิดขึ้น ให้คลิก สิ่งที่ใส่เข้าไป > โมดูล เพื่อสร้างโมดูลเปล่าใหม่
3. จากนั้นคัดลอกและวางโค้ดด้านล่างลงในโมดูลว่าง
รหัส VBA: แยกข้อความตามตัวแบ่งบรรทัด
Sub SplitTextIntoRows()
'UpdatebyExtendoffice
Dim xSRg, xIptRg, xCrRg, xRg As Range
Dim xSplitChar As String
Dim xArr As Variant
Dim xFNum, xFFNum, xRow, xColumn, xNum As Integer
Dim xWSh As Worksheet
Set xSRg = Application.InputBox("Select a range:", "Kutools for Excel", , , , , , 8)
If xSRg Is Nothing Then Exit Sub
xSplitChar = Chr(10)
Application.ScreenUpdating = False
xRow = xSRg.Row
xColumn = xSRg.Column
Set xWSh = xSRg.Worksheet
For xFNum = xSRg.Rows.Count To 1 Step -1
Set xRg = xWSh.Cells.Item(xRow + xFNum - 1, xColumn)
xArr = Split(xRg, xSplitChar)
xIndex = UBound(xArr)
For xFFNum = LBound(xArr) To UBound(xArr)
xRg.EntireRow.Copy
xRg.Offset(1, 0).EntireRow.Insert Shift:=xlShiftDown
xRg.Worksheet.Cells(xRow + xFNum, xColumn) = xArr(xIndex)
xIndex = xIndex - 1
Next
xRg.EntireRow.Delete
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
ขั้นตอนที่ 2: รันโค้ดเพื่อรับผลลัพธ์
1. หลังจากวางรหัสแล้ว กรุณากด F5 คีย์เพื่อเรียกใช้รหัสนี้ ในกล่องที่โผล่ออกมา โปรดเลือกเซลล์ที่คุณต้องการแยก ดูภาพหน้าจอ:
2. จากนั้นคลิก OK ปุ่ม ข้อมูลในเซลล์ที่เลือกจะถูกแบ่งออกเป็นแถวตามภาพด้านล่างที่แสดง:
ถ้าคุณได้ติดตั้ง Kutools สำหรับ Excelเดียวกันกับที่ แยกข้อมูลเป็นแถว คุณสามารถแยกสตริงข้อความออกเป็นหลายแถวตามตัวคั่นที่คุณระบุ โปรดทำตามขั้นตอนต่อไปนี้:
ขั้นตอนที่ 1: เลือกคุณสมบัติแยกข้อมูลเป็นแถว
คลิก Kutools > ผสานและแยก > แยกข้อมูลเป็นแถวดูภาพหน้าจอ:
ขั้นตอนที่ 2: ระบุเซลล์ข้อมูลและตัวคั่นสำหรับการแยก
ในกล่องโต้ตอบที่เด้งออกมา ให้ใช้ตัวเลือกต่อไปนี้:
ตอนนี้เซลล์ที่เลือกด้วยสตริงข้อความที่ใช้ตัวคั่นได้ถูกแปลงเป็นหลายแถวตามตัวคั่นเฉพาะ ดูภาพหน้าจอ:
เคล็ดลับ: หากคุณต้องการกู้คืนข้อมูลเดิม คุณเพียงแค่กด Ctrl + Z สำหรับการเลิกทำ
ง่ายต่อการใช้? สนใจคุณสมบัตินี้เชิญครับ คลิกเพื่อดาวน์โหลดเพื่อทดลองใช้ฟรี 30 วัน.
หากคุณใช้ Office 365 หรือ Excel 2016 และเวอร์ชันที่ใหม่กว่า Power Query เป็นเครื่องมืออันทรงพลังที่สามารถช่วยคุณแยกข้อความที่มีตัวคั่นออกเป็นหลายแถวหรือหลายคอลัมน์ มีประโยชน์ถ้าคุณต้องการให้รีเฟรชข้อมูลแยกเมื่อข้อมูลเดิมของคุณเปลี่ยนแปลง โปรดทำตามขั้นตอนต่อไปนี้ให้เสร็จสิ้น:
ขั้นตอนที่ 1: รับตารางข้อมูลลงใน Power Query
1. เลือกช่วงข้อมูลที่คุณต้องการใช้ จากนั้นคลิก ข้อมูล > จากตารางดูภาพหน้าจอ:
เคล็ดลับ: ใน Excel 2019 และ Office 365 คลิก ข้อมูล > จากตาราง/ช่วง.
2. ในที่โผล่ออกมา สร้างตาราง คลิกตกลง OK ปุ่มเพื่อสร้างตาราง ดูภาพหน้าจอ:
3 ตอนนี้ Power Query บรรณาธิการ หน้าต่างแสดงข้อมูล ดูภาพหน้าจอ:
ขั้นตอนที่ 2: ทำการแปลงใน Power Query
1. เลือกคอลัมน์ที่คุณต้องการแยก จากนั้นคลิก หน้าแรก > แยกคอลัมน์ > โดยตัวคั่นดูภาพหน้าจอ:
2 ใน แยกคอลัมน์ตามตัวคั่น กล่องโต้ตอบ:
หากต้องการแยกสตริงข้อความด้วยเครื่องหมายจุลภาค ช่องว่าง เครื่องหมายอัฒภาค ฯลฯ โปรดทำดังนี้:
หากต้องการแยกสตริงข้อความออกเป็นหลายแถวด้วยตัวแบ่งลิงก์ โปรดทำดังนี้:
3. ขณะนี้ ข้อมูลที่เลือกได้ถูกแบ่งออกเป็นหลายแถวตามภาพด้านล่างที่แสดง:
ขั้นตอนที่ 3: ส่งออก Power Query ไปยังตาราง Excel
1. จากนั้น คุณควรส่งออกข้อมูลลงในแผ่นงานของคุณ กรุณาคลิก หน้าแรก > ปิดและโหลด > ปิดและโหลด / ปิดและโหลดไปที่,(ตรงนี้ผมจะกด ปิดและโหลด) ดูภาพหน้าจอ:
เคล็ดลับคลิกที่นี่ ปิดและโหลด จะส่งออกข้อมูลไปยังแผ่นงานใหม่ คลิก ปิดและโหลดไปที่ ตัวเลือก ข้อมูลจะถูกส่งออกไปยังแผ่นงานอื่น ๆ ที่คุณต้องการ
2. ในที่สุด ข้อมูลจะถูกโหลดไปยังแผ่นงานใหม่ ดูภาพหน้าจอ:
เคล็ดลับ: หากคุณต้องการอัปเดตข้อมูลของคุณในตารางเดิมบ่อยๆ โปรดอย่ากังวล คุณเพียงคลิกขวาที่ตารางผลลัพธ์แล้วคลิก รีเฟรช เพื่อรับผลลัพธ์ใหม่แบบไดนามิก