ฉันค่อนข้างแน่ใจว่ามันเป็นไปไม่ได้ด้วยสูตรพื้นฐาน อย่างไรก็ตามฉันเคยมีความต้องการเช่นนี้มาก่อนและฉันได้เขียนฟังก์ชันแผ่นงาน:
Public Function ConcatInts(target As Range) As String
Dim s As String
Dim i As Integer
Dim n0 As Long
Dim n1 As Long
Dim n2 As Long
Dim flag As Boolean
n0 = 0
n1 = target.Cells(1).Value
n2 = n1
flag = False
For i = 2 To target.Cells.Count
If IsNumeric(target.Cells(i).Value) Then
n2 = target.Cells(i).Value
If n2 = n1 + 1 Then
If Not flag Then
n0 = n1
s = s & n1 & "-"
flag = True
End If
ElseIf n2 <> n1 Then
If n1 = n0 + 1 And right(s, 1) = "-" Then
s = left(s, Len(s) - 1) & " "
End If
s = s & n1 & " "
flag = False
End If
n1 = n2
End If
Next
If n1 = n0 + 1 And right(s, 1) = "-" Then
s = left(s, Len(s) - 1) & " "
End If
s = s & n1
ConcatInts = s
End Function
ในการใช้สิ่งนี้คุณต้องเปิดตัวแก้ไข VBA โดยกด ALT + F11 จากนั้นคลิกขวาที่เวิร์กบุ๊กจากบานหน้าต่างนำทางและเลือกแทรก - & gt; โมดูล:

จากนั้นเพียงคัดลอกโค้ดลงในโมดูล
ตอนนี้คุณสามารถเรียกมันได้เช่นเดียวกับฟังก์ชั่นปกติ:
=ConcatInts(A1:I1)
โปรดทราบว่าฟังก์ชั่นนี้ข้ามเซลล์ที่มีข้อความแปลงตัวเลขทศนิยมเป็นจำนวนเต็มโดยอัตโนมัติและยกเลิกการทำซ้ำ นอกจากนี้ยังต้องการให้เรียงหมายเลขของคุณ
อย่าลืมบันทึกเวิร์กบุคของคุณเป็นเวิร์กบุ๊กที่เปิดใช้งานมาโคร (XLSM)