การจัดแนวข้อความเป็นคอลัมน์


0

ฉันมีข้อมูลมากมายเช่น:

FOB0046WHT White business casual plain classic fit 20.8 41.7 1 2 24 24 24 0 20.8 1 0 12.2 0.584 24.3       
FOB0083BLU Denim blue business casual plain extra slim fit 14.5 58.2 1 4 1 1 1 0 43.6 3 -29.1 6 0.413 24.2 0.416    
FOB0184NPK Navy and pink business casual double face slim fit 16.6 16.6 1 1 0 0 0 0 0 0 16.6 5 0.303 5 0.303   
FOB0186SKY Sky business casual non iron button down classic fit 90.3 90.3 4 4 19 4.8 19 0 0 0 90.3 49.4 0.548 49.4 0.548   
FOB0186WHT White business casual non iron button down classic fit 83.4 83.4 3 3 6 2 6 0 0 0 83.4 73.5 0.882 73.5 0.882   
FOB0188WHT White business casual non iron button down slim fit 104.2 164.6 5 8 33 6.6 33 0 60.4 3 43.7 53.2 0.51 80.5 0.489   
FOB0209SKY Sky non iron extra slim fit business casual dobby grid shirt 60.4 102.1 3 5 24 8 24 0 41.7 2 18.8 33.6 0.556 57.4 0.562 
FOB0046CHA Charcoal classic fit business casual shirt 145.8 187.5 7 9 20 2.9 20 0 41.7 2 104.2 83.5 0.573 107.4 0.573      
FOB0046CHM Chambray denim classic fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 11.8 0.568 11.8 0.568     
FOB0046IDG Indigo classic fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 11.8 0.566 11.8 0.566      
FOB0083CHA Charcoal extra slim fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 12.5 0.601 12.5 0.601     
FOB0083CHM Chambray denim extra slim fit business casual shirt 57.7 57.7 3 3 0 0 0 0 0 0 57.7 32.7 0.566 32.7 0.566    
FOB0083IDG Indigo extra slim fit business casual shirt 104.2 104.2 5 5 21 4.2 21 0 0 0 104.2 62.3 0.598 62.3 0.598     
FOB0112CHM Chambray denim slim fit business casual shirt 76.4 97.3 4 5 24 6 24 0 20.8 1 55.6 41 0.537 53 0.545     
FOB0186LPK Light pink non iron classic fit bus cas button down shirt 62.5 62.5 3 3 20 6.7 20 0 0 0 62.5 32.9 0.527 32.9 0.527 

ฉันใช้ข้อความเป็นคอลัมน์ แต่เนื่องจากข้อความเป็นจำนวนคำที่แตกต่างกันตัวเลขต่างไปจากการจัดตำแหน่งทั้งหมดมีวิธีใดที่ทำให้พวกเขากลับมาอยู่ในคอลัมน์ที่เกี่ยวข้องได้หรือไม่


เพิ่มเครื่องหมายคำพูด"รอบข้อความหรือไม่
DavidPostill

คุณต้องการหนึ่งคอลัมน์ที่มีรหัสทางด้านซ้ายคอลัมน์ที่สองที่มีข้อความของรายการแล้วตัวเลขทั้งหมดในคอลัมน์ของตัวเอง?
Raystafarian

ใช่แล้ว ดังนั้นส่วนหัวของคอลัมน์จะเป็นรหัส / คำอธิบาย / # / # / # และอื่น ๆ แต่เนื่องจากคำอธิบายมีความยาวอักขระและความยาวคำต่างกันฉันไม่แน่ใจว่าจะทำอย่างไร
Sean Hullah

ปัญหาของการวาง "รอบข้อความคือฉันมีข้อมูลมากกว่า 1,000 แถวและมันใช้เวลานานเกินไป
Sean Hullah

คำตอบ:


1

ด้วยข้อมูลเช่นนี้ในคอลัมน์A :

ป้อนคำอธิบายรูปภาพที่นี่

เรียกใช้แมโครแบบสั้นนี้:

Sub ReFormatData()
    Dim N As Long, i As Long, st As String
    Dim j As Long
    N = 15

    For i = 1 To N
        st = Cells(i, 1).Text
        ary = Split(st, " ")
        Cells(i, 2).Value = ary(0)
        For j = 2 To UBound(ary)
            If IsNumeric(ary(j)) Then Exit For
            Cells(i, 3).Value = Cells(i, 3).Value & " " & ary(j)
        Next j

        L = 4
        For k = j To UBound(ary)
            Cells(i, L).Value = ary(k)
            L = L + 1
        Next k
    Next i
End Sub

จะสร้างสิ่งนี้ในคอลัมน์Bและอื่น ๆ :

ป้อนคำอธิบายรูปภาพที่นี่


เกิดอะไรขึ้นถ้ามีตัวเลขอยู่ในส่วนของข้อความ UBZIFZIFF My random text with 1 number inside 20 12 13 43 1.23จะให้ผลลัพธ์ที่ต่างออกไป
nixda

@nixda คุณถูกต้องสมบูรณ์! รหัสจะใช้ได้ก็ต่อเมื่อข้อมูลเหมือนข้อมูลตัวอย่างที่โพสต์ ................ ข้อยกเว้นจะต้องแก้ไขด้วยมือ
นักเรียนของ Gary

@ นิกดาใช่ที่เกิดขึ้นประมาณ 500 แถวที่ฉันมี "Black 3 packs" เช่นกันเมื่อฉันใช้มันก็พลาดงานแรกในทุกแถว ความคิดใด ๆ สำหรับการแก้ปัญหา? นอกเหนือจากนั้นใช้งานได้อย่างสวยงาม !!
Sean Hullah

0

หากคุณต้องการโซลูชันที่ไม่ใช้ VBA โดยใช้สูตรที่มีขนาดใหญ่ให้ลองทำดังนี้
=RIGHT(RIGHT(A2,LEN(A2)-FIND(" ",A2,1)),LEN(RIGHT(A2,LEN(A2)-FIND(" ",A2,1)))-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},RIGHT(A2,LEN(A2)-FIND(" ",A2,1))&"0123456789"))+1)

มันจะหาตำแหน่งแรกของตัวเลขหลังช่องว่างแรก (หลังจากคำแรกซึ่งมี 46 FOB0046WHT) และผลลัพธ์จะเป็นตัวเลขทั้งหมดในเซลล์เดียวคุณสามารถใช้ Text to Columns หลังจากคัดลอกผลลัพธ์และวางแบบพิเศษ ค่า

ป้อนคำอธิบายรูปภาพที่นี่


นี่เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมและง่าย แต่อย่างที่ฉันได้กล่าวไว้ข้างต้นด้านล่างฉันมีคำอธิบายเกี่ยวกับตัวเลขและจากนั้นมันจะไขตัวเลขทั้งหมดออกจากการจัดตำแหน่งอีกครั้งแล้วสิ่งที่จะเป็นวิธีที่ดีที่สุดในการแยกคำอธิบายและรหัสออก ใช้ TTC หรือไม่ มีวิธีใดในการจัดเรียงตัวเลขจากด้านซ้ายแทนที่จะเป็นใช่มั้ย
Sean Hullah

0

นี่คือวิธีแก้ปัญหาด้วยนิพจน์ทั่วไป ที่จะใช้มันคุณจะต้องRegEx ค้นหา / แทนที่ Add-in

ป้อนคำอธิบายรูปภาพที่นี่

  • สูตรสำหรับรหัส:
    =RegExFind(A1,"[A-Z0-9]*")
  • สูตรสำหรับคำอธิบาย:
    =RegExReplace(A1,"[A-Z0-9]* (.*[a-z]) [0-9. ]*","$1")
  • สูตรสำหรับตัวเลข:
    =RegExFind(SUBSTITUTE($A1,$B1&" "&$C1&" ",""),"[0-9.-]* ",COLUMN()-3)

นอกจากนี้ยังทำงานอย่างถูกต้องหากข้อความมีตัวเลขเก็บทุกอย่างไว้จนกระทั่งตัวอักษรตัวสุดท้ายในคำอธิบาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.