在原始专栏中,我有多年的范围。喜欢
1865–1868
如何将其转换为逗号分隔列表?像:
1865, 1866, 1867, 1868
当前数据格式为TEXT。我计划将其更改为DATE。
注意:原始细胞通常由混合形式组成。喜欢" 1865-1868,1870"
答案 0 :(得分:2)
怎么样:
Public Function CSVList(rng As Range) As String
Dim r As Range, ary1, ary2
For Each r In rng
v = r.Text
If InStr(1, v, "-") = 0 Then
CSVList = CSVList & "," & v
Else
ary = Split(v, "-")
For i = CLng(ary(0)) To CLng(ary(1))
CSVList = CSVList & "," & CStr(i)
Next i
End If
Next r
CSVList = Mid(CSVList, 2)
End Function
或:
修改#1:强>
此UDF将任何非数字视为分隔符:
Public Function CSVList2(rng As Range) As String
Dim r As Range, ary1, ary2, L As Long, i As Long, C As String
For Each r In rng
v = r.Text
L = Len(v)
C = ""
For i = 1 To L
If Not Mid(v, i, 1) Like "[0-9]" Then C = Mid(v, i, 1)
Next i
If C = "" Then
CSVList2 = CSVList2 & "," & v
Else
ary = Split(v, C)
For i = CLng(ary(0)) To CLng(ary(1))
CSVList2 = CSVList2 & "," & CStr(i)
Next i
End If
Next r
CSVList2 = Mid(CSVList2, 2)
End Function