ซึ่งสามารถใช้ Code VBA ตามด้านล่างครับ Function StringArray(t As String) As String() StringArray = Split(t, ",") End Function Sub SplitThenJoin() Dim s As String, a() As String Dim r As Range, rAll As Range Dim i As Integer, j As Integer, k As Integer With Worksheets("Sheet1") Set rAll = .Range("A2", .Range("A" & Rows.Count).End(xlUp)) End With For Each r In rAll a = StringArray(r.Value) For i = 0 To UBound(a) j = InStr(1, a(i), "-") If IsNumeric(Left(a(i), 1)) And j > 0 Then For k = Left(a(i), j - 1) To Mid(a(i), j + 1, 255) s = s & k & "," Next k ElseIf j > 0 Then For k = Asc(Left(a(i), j - 1)) To Asc(Mid(a(i), j + 1, 255)) s = s & Chr(k) & "," Next k End If If Len(s) > 1 Then a(i) = Left(s, Len(s) - 1) Else a(i) = a(i) End If s = "" Next i r = Join(a, ",") Next r End Sub โดยมีแนวคิดคือ 1. นำค่าในแต่ละเซลล์ไปแบ่งให้เป็น Array โดยใช้เครื่องหมายคอมม่า (,) จากนั้นก็จะ Loop เพื่อว่าจากสมาชิก Array ที่ได้มีค่าใดประกอบด้วยเครื่องหมาย - ก็จะนำไปประมวลต่อโดยหาว่าหากด้วยหน้าเครื่องหมาย - เป็นตัวเลขก็จะทำการเปลี่ยนค่าของสมาชิก Array นั้นเสียใหม่ เริ่มด้วยค่าที่อยู่หน้าเครื่องหมาย - แล้วบวกเข้าไปครั้งละ 1 จากนั้นคั่นด้วยเครื่องหมายคอมม่าจนได้ค่าสุดท้ายเท่ากับตัวเลขหลังเครื่องหมาย - 2. หากด้านหน้าเครื่องหมาย - เป็นตัวอักษรก็จะหาว่ารหัสตัวอักษร (Character Code) นั้นคือค่าใดและทำการบวกรหัสนั้นไปครั้งละ 1 จากนั้นคั่นด้วยเครื่องหมายคอมม่า จนกระทั่งเท่ากับรหัสของตัวอักษรสุดท้ายหลังเครื่องหมาย - 3. กรณีที่สมาชิก Array ไม่มีเครื่องหมาย - ก็ให้มีค่าเท่าเดิม สำหรับสมาชิกของ //www.snasui.com/ สามารถดาวน์โหลดไฟล์ตัวอย่างได้ที่นี่ครับ การแปลง Format ข้อมูล