将Excel列表转换为数组格式

时间:2016-03-29 12:13:36

标签: arrays excel vba

我在excel中有一些相当长的货币列表,我需要将其转换为数组格式,以便在不同的程序中使用。是否有任何内置公式将列表的字符串值返回到字符串数组中?

例如以下内容:

a
b
c
d
e

将返回" a"," b"," c"," d"," e" (即使它只是在公式栏中,所以我可以复制并粘贴!)

如果可能的话,我宁愿不使用VBA,因为时间限制,但如果相对容易,那么任何建议都会非常有用。

非常感谢提前

4 个答案:

答案 0 :(得分:2)

没有直接内置AFAIK。

添加VBA模块,粘贴:

Public Function ToArrStr(r As Range) As String
    ToArrStr = """" & Join(Application.Transpose(r), """,""") & """"
End Function

然后在表格中,您可以:=ToArrStr(A1:A5)

(假设你的传递>垂直1个单元格)

答案 1 :(得分:2)

我看到这种方式在纯Excel公式中处理的方式是逐行累积:

A    B
---  -----------------
a    =""""&A1&""""
b    =B1&","""&A2&""""
c    =B2&","""&A3&""""
d    =B3&","""&A4&""""

答案 2 :(得分:1)

FWIW,如果您最近升级到Excel,或者正在使用在线应用程序,那么就有内置公式。它是TEXTJOIN()。所以:

="""" & TEXTJOIN(""",""",TRUE,A1:A5) & """"

enter image description here

答案 3 :(得分:0)

将列表转换为数组的另一种方法。希望它有所帮助。

Public Function ToArrStr1(r As Range) As String
Dim out As String
For i = 1 To r.Cells.Count
    If out = "" Then out = """" & r.Cells(i) & """" Else out = out & ",""" & r.Cells(i) & """"
Next i
ToArrStr1 = out
End Function

然后在表格中你可以:= ToArrStr1(A1:A5)