【问题标题】:Excel VBA - parse data from cell into arrayExcel VBA - 将单元格中的数据解析为数组
【发布时间】:2016-06-26 19:55:52
【问题描述】:

我在一个单元格 (E2) 中有数据,其中包含用逗号和空格分隔的数字(即1, 14, 33, 46, 22, 3)。单元格中最多可以有 1,000 个数字。我想获取这些数字并将它们放入一个数组中,这样我就可以将它们与我称为AudienceNumber 的变量匹配。如果数组包含数字 1AudienceNumber 我想将构建数组的行(在本例中为第 2 行)写入新工作簿。如果数组不包含 1AudienceNumber 我想转到下一行的单元格 E 并重复该过程。我想继续这样做,直到单元格 E 为空白。我似乎无法将单元格 E2 的内容放入数组中。这是我得到的:

Dim AudienceArray (1000) as Variant
ActiveWorkbook.Worksheets("Data").Select
Range("E2").Select
AudienceArray=Sprlit(ActiveCell.Value,",")

当我运行 sub 时,我得到一个

无法分配给数组错误

消息。我似乎无法弄清楚我做错了什么。任何帮助将不胜感激。

【问题讨论】:

  • Dim AudienceArray (1000) as Variant 更改为Dim AudienceArray as Variant,您可能需要更正Sprlit 的拼写。除此之外,它应该可以工作。
  • 使用Option Explicit 会发现Sprlit 错字。没有充分的理由不使用Option Explicit。通过在 VBA 编辑器的选项选项卡中选择 Require Variable Declaration 使其自动运行并不是一个坏主意。

标签: excel vba


【解决方案1】:

试试这个:

Option Explicit

    Sub Test()

        Dim ws As Worksheet
        Dim val As String
        Dim arr As Variant
        Dim i As Long

        Set ws = ActiveWorkbook.Worksheets("Data")
        val = ws.Range("E2").Text
        arr = Split(val, ",", -1, vbBinaryCompare)

        For i = 0 To UBound(arr)
            Debug.Print arr(i)
            'split retains spaces...
            Debug.Print Trim$(arr(i))
        Next i

    End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多