【发布时间】:2018-08-18 01:00:27
【问题描述】:
我尝试在 vba 中加入向量的元素。
首先我使用 for 循环特定的字符串进行搜索。
CE_addr = FindAll(Workbooks("raw_data.xlsm").Worksheets("IQ_Key_Dev_Type").Cells(k, (p - 1)).Value, _
Worksheets("Sheet1").Range("O:O"), xlValues, xlWhole).Address
然后我使用地址对象来获取右侧一列的对应值。
rn = Split(CE_addr, ",")
n = UBound(rn, 1) - LBound(rn, 1)
For w = 0 To n
ReDim CE_cod(n) As Variant
CE_cod((w)) = Workbooks("raw_data.xlsm").Worksheets("CE_List").Range(rn(w))
Next w
所以在 CE_cod 向量中我保存了所有对应的值(有时它只是一个值,有时不止一个)
现在我想用“;”连接所有包含的(文本)值作为分隔符:
Cells(j, 3) = Join(CE_cod, ";")
假设 CE_cod 在第一个循环中有两个条目: ["XXX" , "YYY"] 第二个循环中只有一个:[“XXX”]
由于某种原因,第一种情况下 Cell(j,3) 中的结果(CE_cod 中的多个值)是:“;YYY”(请注意,添加了分隔符,而不是表达式本身)。 在第二种情况下,结果是:“XXX”
我检查了向量 CE_cod 是否包含所有值:
Cells(j, (10 + w)) = CE_cod((w))
确实,当我这样做时,包含“XXX”和“YYY”。
那么为什么join函数在有多个入口的时候会跳过向量的第一个入口呢?
PS:我在这里找到了“FindAll”功能: http://www.tushar-mehta.com/publish_train/xl_vba_cases/1001%20range.find%20and%20findall.shtml#_The_FindAll_function
【问题讨论】:
标签: arrays excel vba join concatenation