[英]Turn a value range in a cell into a comma separated list
Is there a formula I can have in cell B1 that looks at A1 and creates a comma-based list? 在单元格B1中是否有一个公式可以查看A1并创建一个基于逗号的列表?
So below, A1 is something I can type into. 所以下面,A1是我可以输入的东西。 B1 is a formula.
B1是一个公式。 Is this possible?
这可能吗? I will have A1 always follow the same format as a XXX-XXX range.
我将使A1始终遵循与XXX-XXX范围相同的格式。
+-------+-----------+----------------------+
| TABLE | A (Input) | B (Result) |
+-------+-----------+----------------------+
| 1 | 1-10 | 1,2,3,4,5,6,7,8,9,10 |
+-------+-----------+----------------------+
Put the code below in a regular VBA module then you can use (eg): 将下面的代码放在常规VBA模块中,然后您可以使用(例如):
=NumRange(A1)
in B1 在B1
Function NumRange(v)
Dim arr, x As Long, rv As String, sep As String
If InStr(v, "-") Then
arr = Split(v, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & x
sep = ","
Next x
End If
End If
NumRange = rv
End Function
EDIT - handle multiple ranges 编辑 - 处理多个范围
Function NumRange(v)
Dim arrC, arr, x As Long, rv As String, sep As String, e
arrC = Split(v, ",")
rv = ""
For Each e In arrC
If InStr(e, "-") Then
arr = Split(e, "-")
arr(0) = Trim(arr(0))
arr(1) = Trim(arr(1))
If IsNumeric(arr(0)) And IsNumeric(arr(1)) Then
For x = CLng(arr(0)) To CLng(arr(1))
rv = rv & sep & x
sep = ","
Next x
End If
ElseIf IsNumeric(e) Then
rv = rv & sep & CLng(e)
sep = ","
End If
Next e
NumRange = rv
End Function
Another UDF approach 另一种UDF方法
=Spliced(A1)
in B1
=Spliced(A1)
B1
=Spliced(A1)
Function Spliced(strIn As String) As String
X = Split(strIn, "-")
Spliced = Join(Application.Transpose(Evaluate("=ROW(A" & X(0) & ":A" & X(1) & ")")), ",")
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.