我有一个难题,我试图解决一段时间。我有一个电子表格,可以从.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
,但它会继续,直到找到列标题。
希望这一切都有意义和谢谢。
答案 0 :(得分:2)
单元格格式为货币或自定义,因此您无法在那里找到欧元符号。当您检查InStr()
时,它会检查单元格.Value
,而不是.Format
。
要在Cell中找到Eur,请检查以下格式:
If Cells(NewLastRowNumber, 10).NumberFormat = "€0.00" Then
要在VBA中查看确切的数字格式,请选择所需格式的单元格并运行以下命令:
Sub Test()
Debug.Print Selection.NumberFormat
End Sub