แยกข้อมูลใน Excel ตามตำแหน่งของอักขระ


1

ฉันมีคอลัมน์ข้อมูลแต่ละแถวมีชุดอักขระ 83 ตัว (เช่น 010203 344345 929348238482abcde33 4566) โดยไม่มีรูปแบบเฉพาะที่ต้องแบ่งเป็นบล็อกที่มีความยาวต่างกัน (เช่น 6,1,6,6,4,4 ... 4,1,1) อะไรจะเป็นวิธีที่ดีที่สุดในการแยกบล็อกเหล่านี้โดยทางโปรแกรม การตั้งค่ารายการ VBA และวนซ้ำอาจเป็นทางออกที่ดีที่สุดหรือไม่


ข้อมูลของคุณเป็นอย่างไรในตอนแรก โปรดระบุภาพหน้าจอ
Eric F

@EricF มันอยู่ในคอลัมน์เดียวแต่ละแถวมีสตริงอักขระ 83 ตัว
Max Power

@ MaxPower มีรูปแบบตามความยาวของลำดับบล็อกของคุณหรือไม่?
Chrismas007

และแต่ละเซลล์ดูเหมือนว่า "6,1,6,6 .. " โดยทั่วไปแล้วคั่นด้วยเครื่องหมายจุลภาค?
Eric F

1
@MaxPower คุณต้องการแยกออกเป็นคอลัมน์แยกกันหรือไม่? เพราะคุณสามารถทำได้อย่างง่ายดายด้วย =MID() สูตรในแต่ละคอลัมน์ถัดไปจากนั้นคัดลอก (ป้อนอัตโนมัติ) สูตร
Chrismas007

คำตอบ:


2

สิ่งนี้ควรทำในสิ่งที่คุณกำลังมองหา: Final

สูตรใน B2 พิเศษเพราะมันทำให้คุณเริ่ม:

=MID($A2, 1, B1)

แต่แล้ว C2 สามารถคัดลอกลงในคอลัมน์ที่เหลือทั้ง 18 คอลัมน์ D2 - & gt; LastCol2:

=MID($A2,SUM($B$1:B$1)+1, C$1)

จากนั้นคัดลอกทั้งแถวลงและสูตรควรป้อนอัตโนมัติอย่างถูกต้อง


0

สูงสุดฉันคิดว่าฉันเข้าใจว่าคุณต้องการคั่นข้อมูลของคุณด้วยเครื่องหมายจุลภาค โชคดีที่ Excel มีเครื่องมือในตัวสำหรับสิ่งนั้น ดูด้านล่าง:

enter image description here

หวังว่านี่คือสิ่งที่คุณเป็นมิฉะนั้นลองทดลองใช้เครื่องมือข้อความเป็นคอลัมน์เนื่องจากง่ายกว่าการเขียนฟังก์ชัน Excel จำนวนมาก


ข้อมูลของเขาไม่ได้ถูกคั่นด้วยเครื่องหมายจุลภาค
Chrismas007

-1

ฉันสมมติว่าคุณต้องการมีชุดการอธิบายที่แตกต่างกันสำหรับแต่ละแถวในชุดข้อมูล รหัสต่อไปนี้คือจุดสิ้นสุดนั้น

สร้างคอลัมน์ทางด้านซ้ายของข้อมูลของคุณ ตรวจสอบให้แน่ใจว่าไม่มีช่องว่าง เลือกเซลล์ทั้งหมดในคอลัมน์นั้นและเรียกใช้รหัส มันจะคายแยกทางด้านขวาของคอลัมน์ของคุณด้วย 83 ตัวอักษร BTW มันจะเกิดข้อผิดพลาดถ้ายอดรวมของการแบ่งของคุณมากกว่าความยาวของอักขระ (83 ในกรณีนี้)

หวังว่ามันจะช่วย
ไคล์

Sub SplitManyTimes()
Dim r As Range, rng As Range
Dim arr As Variant
Dim lLength As Long, lStart As Long, i As Long

Set rng = Selection
For Each r In rng
    lStart = 1
    arr = Split(r, ",")
    For i = 1 To UBound(arr) + 1
        lLength = Val(arr(i - 1))
        r.Offset(0, i + 1) = Mid(r.Offset(, 1), lStart, lLength)
        lStart = lStart + lLength
    Next i
Next r
End Sub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.