【问题标题】:VBA: Splitting and Joining Arrays & StringsVBA:拆分和连接数组和字符串
【发布时间】:2015-07-17 17:28:15
【问题描述】:

我正在处理一组看起来像这样的单元格:

我要做的是过滤每个国家/地区的 Country 列,然后获取每个 Mfr 并将它们加在一起,以便我可以在另一个工作簿中过滤它们。

所以基本上,我想Join(m1, m2, m3),这就是我正在尝试的方式:

xRange 是“Mfr Abbreviation”列。我也有If xCell... <> "" Then,因为xRange 中的所有条目都没有“Previous Mfr Abbrev”

Dim tempMfr As String
Dim temp2Mfr As String
Dim stringArray() As String
Dim arraytostring As String

For Each xCell In xRange
    tempMfr = xCell

    If xCell.Offset(0, 2) <> "" Then
        temp2Mfr = xCell.Offset(0, 2)
        stringArray() = Split(temp2Mfr, ", ")
        arraytostring = Join(temp2Mfr & stringArray, ", ")
        stringArray() = Split(arraytostring, ", ")


        For x = LBound(stringArray) To UBound(stringArray)
            MsgBox (stringArray(x))
        Next
    End If

Next

我的问题来自Join(temp2Mfr &amp; stringArray) 行,因为&amp; 创建了类型不匹配 编译错误。

我也试过了:

ReDim Preserve stringArray(0 to (UBound(stringArray) + 1))
stringArray(UBound(stringArray)) = temp2Mfr

一旦我解决了这个问题,我计划在另一个工作簿中使用类似这样的搜索:

Cells.AutoFilter Field:=4, Criteria1:= Array(MfrArray)

非常感谢您的帮助。

【问题讨论】:

  • 有什么问题?您收到什么错误?
  • 类型不匹配;编辑了原始帖子。但即便如此,我解决这个问题的方法是行不通的。

标签: vba excel join split


【解决方案1】:

您正试图在 Join 执行之前将一个字符串连接到您的数组。

这是不允许的,这是导致您的错误的原因。

您可以这样做:

Redim Preserve stringArray(Ubound(stringArray) + 1)
stringArray(Ubound(stringArray)) = temp2Mfr

你根本不需要 Join()。

【讨论】:

  • 我们的两个解决方案都有一个错误。你需要stringArray(Ubound(stringArray) + 1) 而我需要摆脱0 to。但这似乎已经做到了。非常感谢你。改变它,你就会得到答案:)
  • 这就是我在没有 Excel 的情况下在手机上接听的结果... ;) 修正了错字。
  • 当我转到该 xRange 中的下一个条目时,如何清除数组并重置尺寸?我正在尝试使用 Erase stringArrayReDim stringArray,但 Erase 没有留下可使用的维度,并且 ReDim 给出了语法错误。
  • 尝试将数组的初始声明更改为 Variant,如下所示:Dim stringArray As Variant。注意没有括号。然后,您可以通过将其设置为 Split() 函数的结果,在 Variant 中动态创建数组。这应该是第一次......以后每次都应该工作。
  • 你好。我一直在四处寻找,但找不到任何有用的东西。我需要为使用此代码创建的数组过滤一列。我正在尝试使用Cells.AutoFilter Field:=14, Criteria1:=stringArray, Operator:=,但我不知道运算符应该是什么。我的问题的一个例子是,当列中的内容实际上是“Tawm”时,数组中的某些内容可能是“Ta”。我在想Operator:=xlContains 之类的东西,但那是不行的。你知道我怎么能做到这一点吗?我只是希望它就像我在输入“Ta”,然后选择自动过滤器找到的所有选项。
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 2014-10-27
  • 1970-01-01
  • 2018-04-13
相关资源
最近更新 更多