我有一个谜题,我已经尝试解决了一段时间了。我有一个从 .csv 文件导入数据的电子表格,该文件与初始位置设置完全不同。
我当前运行搜索以查找包含值的最后一个单元格并将其用作起点。现在,由于超出我的原因,这有时会失败并将起点放在电子表格的中间位置。因此,为了解决这个问题,我决定编写一个检查代码或更复杂的位置查找器。
新的定位器如下
For a = 1 To 400
Dim SearchString As Variant
Dim SearchSymbol As String
SearchString = Cells(NewLastRowNumber, 10)
SearchSymbol = "€"
If InStr(1, SearchString, SearchSymbol, 1) = 0 Then
NewLastRowNumber = NewLastRowNumber - 1
Else
NewLastRowNumber = NewLastRowNumber + 1
Exit For
End If
Next a
除了在单元格内搜索的内容之外,这还有效。背后的理想是它搜索包含成本的数据列,即(第 1 行 -> €100,第 2 行 -> €235 等)并找到包含 €
的最后一个单元格,目前我只能让它找到列标题而不是单元格。
该列中的每个单元格均采用自定义格式 (€0.00
),不确定这是否有任何区别。
我嵌入了一些图像来进一步演示我的问题。
此时,循环应该中断并记录 NewLastRowNumber = 13
,但它会继续下去,直到找到列标题。
希望这一切都有意义并谢谢。
最佳答案
该单元格的格式为“货币”或“自定义”,因此您无法在其中找到欧元符号。当您检查 InStr()
时,它会检查单元格 .Value
,而不是 .Format
。
要在单元格中查找欧元,请检查如下格式:
If Cells(NewLastRowNumber, 10).NumberFormat = "€0.00" Then
要在 VBA 中查看确切的数字格式,请选择具有所需格式的单元格并运行以下命令:
Sub Test()
Debug.Print Selection.NumberFormat
End Sub
关于vba - 使用 Instr 和单元格格式时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48340890/