Excel vba-如何在单元格中查找数字8并计算它是否';这是正确的

Excel vba-如何在单元格中查找数字8并计算它是否';这是正确的,excel,vba,Excel,Vba,到目前为止,已获得此vba: For Each cell In Range("A2", Range("A" & Rows.Count).End(xlUp)) If Len(cell.Value) = 11 Then cell.Copy Destination:=Range("B" & Rows.Count).End(xlUp).Offset(1, 0) End If Next cell 我需要在第二行的“11”后面添加一些代码,但我不知道如何编写它。我想做的是添加一些类似“的内

到目前为止,已获得此vba:

For Each cell In Range("A2", Range("A" & Rows.Count).End(xlUp))
If Len(cell.Value) = 11 Then
cell.Copy Destination:=Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
End If
Next cell
我需要在第二行的“11”后面添加一些代码,但我不知道如何编写它。我想做的是添加一些类似“
的内容,数字8(11)是1、3、5、7或9,然后
”。
有人能帮我吗

我无法理解您的解释,但根据您的标题,您需要检查第8个字符是否为字符串(来自单元格等)是否为“正确的一个”:

下面是一个正在使用的示例:

Sub Digit8()
    Range("A1") = "ABCDEFGHIJKLM"
    Const testRightOne = "H"
    If Check8thCharacter(Range("A1"), testRightOne) Then
        MsgBox "It's the right one!"
    Else
        MsgBox "It's the wrong one."
    End If
End Sub

再看看你的问题,我想知道你是否真的在试图确定单元格的第八个字符是否为奇数,这只是一个微小的变化:

Function Is8thOdd(rg As Range) As Boolean
    On Error Resume Next 'error will also return false
    Is8thOdd = (Mid(rg, 8, 1) / 2 <> Mid(rg, 8, 1) \ 2)
End Function

我无法理解您的解释,但根据您的标题,您需要检查第8个字符是否为字符串(来自单元格等)是否为“正确的一个”:

下面是一个正在使用的示例:

Sub Digit8()
    Range("A1") = "ABCDEFGHIJKLM"
    Const testRightOne = "H"
    If Check8thCharacter(Range("A1"), testRightOne) Then
        MsgBox "It's the right one!"
    Else
        MsgBox "It's the wrong one."
    End If
End Sub

再看看你的问题,我想知道你是否真的在试图确定单元格的第八个字符是否为奇数,这只是一个微小的变化:

Function Is8thOdd(rg As Range) As Boolean
    On Error Resume Next 'error will also return false
    Is8thOdd = (Mid(rg, 8, 1) / 2 <> Mid(rg, 8, 1) \ 2)
End Function
试试这个

For Each cell In Range("A2", Range("A" & Rows.Count).End(xlUp))
    If Len(cell.Value) = 11 Then
        Select Case Mid(cell.Value, 8, 1)
        Case 1, 3, 5, 7, 9
             cell.Copy Destination:=Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
        End Select
    End If
Next cell
试试这个

For Each cell In Range("A2", Range("A" & Rows.Count).End(xlUp))
    If Len(cell.Value) = 11 Then
        Select Case Mid(cell.Value, 8, 1)
        Case 1, 3, 5, 7, 9
             cell.Copy Destination:=Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
        End Select
    End If
Next cell

如果我被误解了,我很抱歉。英语不是我的母语…:-)列A中的所有单元格都包含数字,我想从A复制到B中正好包含11个字符的单元格,但只有当字符数8(从左开始计数)为“1”或“3”或“5”或“7”或“9”时,才可以。您实际上不需要
Is8thOdd
函数<代码>如果中间(范围(“A1”)、8、1)Mod 2,则将执行此操作。如果第8位没有数字,就必须处理
类型不匹配的问题。如果可能被误解,我很抱歉。英语不是我的母语…:-)列A中的所有单元格都包含数字,我想从A复制到B中正好包含11个字符的单元格,但只有当字符数8(从左开始计数)为“1”或“3”或“5”或“7”或“9”时,才可以。您实际上不需要
Is8thOdd
函数<代码>如果中间(范围(“A1”)、8、1)Mod 2,则将执行此操作。只要处理
类型不匹配
,如果第8位没有数字。现在,这就是我要找的!非常感谢你的帮助。现在,这就是我要找的人!非常感谢你的帮助。