我试图弄清楚如何在A列中设置的范围之间连接D列中的每个单元格(普通文本)。在搜索时,我遇到了串联,textjoin和其他函数的变体,但似乎找不到正确的选项。
我的文件中大约有8000个值(A列中的ID值),因此应自动填充而不是手动填充。因为需要数周才能完成...
我添加了问题的直观表示
解决方案是,在D列中选择A列中值“ 1”和“ 2”之间的所有单元格,并在A列中单元格不为空的行中的E列中加入Togheter。我希望有人可以帮助我解决这个问题。
请尝试此代码。它应该非常有用,使用数组并在最后一次返回构建的字符串:
Sub testJoinBetweenLimits()
Dim sh As Worksheet, arrInit As Variant, arrFin As Variant
Dim strInit As String, i As Long, j As Long, refRow As Long
Set sh = ActiveSheet 'use here your sheet
arrInit = sh.Range("A2:D" & sh.Range("D" & Cells.Rows.Count).End(xlUp).Row).value
ReDim arrFin(1 To 1, 1 To UBound(arrInit, 1))
For i = 1 To UBound(arrInit, 1)
If arrInit(i, 1) <> "" Then strInit = arrInit(i, 4): refRow = i: j = i + 1
Do While arrInit(j, 1) = ""
If arrInit(j, 4) <> "" Then
strInit = strInit & ", " & arrInit(j, 4)
Else
arrFin(1, j) = Empty
End If
j = j + 1
If j >= sh.Range("D" & Cells.Rows.Count).End(xlUp).Row Then
arrFin(1, refRow) = strInit
ReDim Preserve arrFin(1 To 1, 1 To refRow)
GoTo Ending
End If
Loop
i = j - 1
arrFin(1, refRow) = strInit: strInit = "": j = 0
Next i
Ending:
sh.Range("E2").Resize(UBound(arrFin, 2), 1).value = WorksheetFunction.Transpose(arrFin)
End Sub