我收到运行时错误13' Type Mismatch'在这块代码上,我无法弄清楚为什么。我之前没有使用过Mid()
函数,那是抛出错误的行。初学者,任何和所有帮助赞赏。
我想要行,如果要检查字符串中的第三个字符是否等于4.如果你知道一个更好的方法,我也会对此持开放态度。
For k = 2 To NRow
If Mid(SummarySheet.Range("B2:B" & k), 3, 3) = 4 Then
SummarySheet.Range("B" & k & ":D" & k).Cut
SummarySheet.Range("R" & k & ":T" & k).PasteSpecial xlPasteValues
End If
Next
答案 0 :(得分:3)
我相信这就是你要做的事情:
您需要向后迭代数据。
Mid一次只允许一个单元格。第三个标准是长度,所以它应该是1.
您可以设置值,然后从集中删除数据。
For k = Nrow To 2 Step -1
If Mid(SummarySheet.Range("B" & k), 3, 1) = "4" Then
SummarySheet.Range("R" & k & ":T" & k).Value = SummarySheet.Range("B" & k & ":D" & k).Value
SummarySheet.Range("B" & k & ":D" & k).Delete xlshiftUp
End If
Next
现在,如果您只想清除值并在数据中保留一个空行,请使用:
For k = Nrow To 2 Step -1
If Mid(SummarySheet.Range("B" & k), 3, 1) = "4" Then
SummarySheet.Range("R" & k & ":T" & k).Value = SummarySheet.Range("B" & k & ":D" & k).Value
SummarySheet.Range("B" & k & ":D" & k).Clear
End If
Next
答案 1 :(得分:2)
Mid()
用于获取单个文本值的子字符串。由于您在阵列上尝试此操作,因此无法使用。我不完全确定这是你想要的,但这不应该引发错误:
If Mid(SummarySheet.Range("B" & k).Value, 3, 1) = "4" Then
请注意,该引用适用于单个单元格,而#34; 4"引用它表明它是一个字符串。我将你的最后一个参数改为1,因为你正在寻找一个角色。