结合两个或更多的string数组

我试图find最大的方式来连接大约7列,从巨大的文件(80万行)的行值。

我发现几乎立即加载每个列在单独的数组中。

但是,当我使用下面的代码,处理是非常缓慢的,如每100行2-3秒。

也许你们可以用一种方法来连接并行数组中的值而不用for。

列的顺序不正确。

For rowI = LBound(arrShInvoice) To UBound(arrShInvoice) dKey = arrShInvoice(rowI, 1) dItem = "" Call displayStatusBarEvents("Procesing " & dFName & vbNewLine & "row: ", rowI, UBound(arrShInvoice), 100, , True) For Each colI In arrTargetFields If dItem = "" Then dItem = dData(colI)(rowI, 1) Else dItem = dItem & delimiterI & dData(colI)(rowI, 1) End If Next dDescriptive.Add dKey, dItem Next 

我用VBA相当先进,所以用你最好的想法打我。

很难,因为你的post是一般的,我们还没有看到完整的代码(很高兴看到它!)。 将它添加为回答,因为它不适合一组评论

您必须阅读优化VB6中的string处理

  1. 串联时,join一次长串。 dItem & (delimiterI & dData(colI)(rowI, 1))比使用Ditem两次的dItem & delimiterI & dData(colI)(rowI, 1)
  2. VbNullStringLen(Ditem) = 0If dItem = ""更快
  3. 你的IFtesting应该首先转移到更可能的结果,以避免通过Else 。 如果dItem不可能为空,请更改您的IFstream
  4. 如果你必须有一个进度指示器,使用StatusBar每10000行左右(使用Mod ),而不是调用一个单独的函数(你正在做的每一行)

你的新问题

使用PowerShell的缺点,你将不得不把你的arrays与一个For循环,即

 Dim Array1() Dim Array2() Dim lngRow As Long Array1 = Array("a", "b", "c") Array2 = Array(1, 2, 3) For lngRow = 0 To UBound(Array1) Array1(lngRow) = Array1(lngRow) & Array2(lngRow) Next