【问题标题】:Different values in excel value debugger and actual cell value (actually the value doubles)excel值调试器中的不同值和实际单元格值(实际上值加倍)
【发布时间】: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!(和类似的)指的是什么?

标签: excel vba function csv


【解决方案1】:

R[2886]C[5] 是相对坐标 - 包含公式的单元格下方 2886 行和右侧 5 列。

R[0]C[5] 或简单的RC[5] 是引用同一行的两种正确方法。

另一种选择是使用绝对坐标:R2886C6

【讨论】:

  • 完美..这就是我所缺少的。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
相关资源
最近更新 更多