如何在VBA-Excel中检查工作表中每个单元格的最后一个字符是否为>
(高级符号)。
以下是我到目前为止所做的事情。
Dim c As Range
For Each c In Range("C1", Range(">" & Rows.Count).End(xlUp))
If Not IsNumeric(Mid(c, 3, 1)) Then
MsgBox ("Found !!!")
End If
Exit For
Next c
答案 0 :(得分:0)
您可以使用right
函数获取最后一个字符,并检查它是否等于chr(62)
<{1}} >
您可以通过以下方式修改代码:
Right(ActiveCell.Value, 1) = Chr(62)
如果最后一个字符为TRUE
>
答案 1 :(得分:0)
您可以将Like
运算符与通配符*
一起用作前缀。
在For
循环中,要检查单元格最后是否有>
,请使用:
Dim C As Range
With Worksheets("Sheet3") ' <-- modify "Sheet3" to your sheet's name
' loop through column C, from C1 until last cell with data in Column C (including blank cells in the middle)
For Each C In Range("C1:C" & .Cells(.Rows.Count, "C").End(xlUp).Row)
If C.Value Like "*>" Then '<-- if the end of the cell is ">"
MsgBox "Found !!! at Cell " & C.Address
End If
Next C
End With
答案 2 :(得分:0)
首先使用活动工作表。然后,您尝试在“C”列中找到最后一行。一旦找到它,就开始在从C1到C&amp; lastRow的范围内循环。在那里,如果你发现标志“&gt;”在右侧,您可以在即时窗口中打印“找到”和行号。然后退出子。
以下是代码:
Public Sub TestMe()
Dim c As Range
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
For Each c In .Range(.Cells(1, 3), .Cells(lastRow, 3))
If Right(c, 1) = ">" Then
Debug.Print "FOUND"
Debug.Print c.Row
Exit For
End If
Next c
End With
End Sub
答案 3 :(得分:0)
当我阅读你的问题标题时,你说你要检查C列中每个单元格中最右边的字符是否是&#34;&gt;&#34;。正确?
我不明白为什么你使用退出一次&#34;&gt;&#34;找到任何单元格,虽然它在错误的地方使用,因为它将在第一次循环后被触发。
如果你想实现你的问题标题所说的话,试试这个......
以下代码将检查C列中的每个单元格并返回&#34; Found!&#34;如果最后一个字符是&#34;&gt;&#34;或将返回&#34; Not Found!&#34;。
Sub CheckTheLastCharacterInString()
Dim lr As Long
lr = Cells(Rows.Count, "C").End(xlUp).Row
Range("D1:D" & lr).Value = Evaluate("IF(RIGHT(C1:C" & lr & ",1)="">"",""Found!"",""Not Found!"")")
End Sub