我在VBA工作时遇到了一些棘手的问题。
我在列中有一些数据(比如A1中的A列:A200),我在C列中有一些其他数据(比如C501中的C列:C700)。我需要的是根据C列中相应单元格中的值是否落在一个范围内(A1对应于C501,A2对应于C502等)来连接A列中的单元格。为此,我写下了一个用户定义函数(UDF),它连接了所选范围,该函数可以接受数组输入。因此,由于这个UDF可以接受数组,我在concatrange函数中使用了IF函数来仅选择A列中的单元格,其中C列中的相应输出符合条件。除了A列中任何一个特定值包含太多字符的情况外,自定义公式才能完美运行。所以这意味着因为A列中的单元格太大而超出数据类型限制,所以concatrange公式返回值错误。问题似乎是因为它超过了最大数据类型大小。我附上了下面这个函数的代码副本。这种条件连接的任何解决方案都非常有用。
Function concatrangelc(a As Variant, Optional delim As String = "") As String
Dim y As Variant
If TypeOf a Is Range Then
For Each y In a.Cells
concatrangelc = concatrangelc & y.Value & delim
Next y
ElseIf IsArray(a) Then
For Each y In a
concatrangelc = concatrangelc & y & delim
Next y
Else
concatrangelc = concatrangelc & a & delim
End If
concatrangelc = Left(concatrangelc, Len(concatrangelc) - Len(delim))
End Function