【发布时间】:2016-04-09 16:52:06
【问题描述】:
下面是在 csv 文件的一个单元格中设置我的函数的代码。当我检查调试器时,它正确地将我的变量值显示为 2886,但是当变量在单元格中实际解析时,它显示值 5776(双精度)。
我无处可加倍的价值,我坚持这一点。任何 hep 将不胜感激。
Dim lRow, asLastrow, amLastrow, bsRow, bmRow As Integer
Sheets("Multiple").Activate
lRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
bmRow = lRow + 1
bsRow = lRow + 1
Sheets("Multiple").Activate
amLastrow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
Sheets("Single").Activate
asLastrow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
If asLastrow > 1 Then
Do While bsRow < asLastrow
ActiveSheet.Range("A" & CStr(bsRow)).Formula = "=CONCATENATE(VLOOKUP(R[" & CInt(bsRow) & "]C[5],category.csv!C[1]:C[2],2,0),VLOOKUP(R[" & CInt(bsRow) & "]C[6],genre.csv!C[1]:C[2],2,0),INDEX(source.csv!C,MATCH(R[" & CInt(bsRow) & "]C[4],source.csv!C[1],0)))"
bsRow = bsRow + 1
Loop
End If
我检查时的实际单元格内容是
=CONCATENATE(VLOOKUP(F5772,category.csv!B:C,2,0),VLOOKUP(G5772,genre.csv!B:C,2,0),INDEX(source.csv!A:A, MATCH(E5772,source.csv!B:B,0)))
【问题讨论】:
-
如果您为 3 个连接的元素中的每一个提供调试器和工作表值,将会有所帮助。也就是说,只有
VLOOKUP(F5772,category.csv!B:C,2,0)和其他两部分的值是多少。我的猜测是这样做会隔离问题,您可能不需要更多帮助。 -
嗨 Exactabox,我不认为这个错误取决于单元格的值。更重要的是,普通 excel vba 调试器中的变量值(通过 F8 进入函数)给出了不同的值,并且在实际单元格中获取的值不同。我在 excel 的顶部有一些隐藏的行,我认为这不会导致问题,因为即使是循环的单元格给出的数字也不是 2,这表明变量值加倍
-
您能加载一些涉及的工作簿示例吗? (带有表格 Multiple 和 Single、genre.csv、source.csv 和 category.csv 的表格)
-
嗨,这些不是不同的工作簿,而是来自同一工作簿的工作表。这些只是被引用。
-
那么
category.csv!(和类似的)指的是什么?