excel - 如何在 VBA 中有效地使用具有多个条件的 If 语句,将用户输入与范围进行比较?
问题描述
我正在尝试在 Excel 中创建各种自动评分测试。
我有 5 个值Sheet1
由用户在单元格中输入E5:E9
。然后应该将这些与Sheet2
(也是 cells E5:E9
)中的 5 个以上单元格的范围进行比较。
由于用户可能并不总是按照我在 Sheet2 范围中的顺序列出这些条目,因此我决定应该循环遍历每个单元格输入的范围。
下一步是能够在找到匹配项后忽略范围内的值,但我需要让这部分正常工作。目前,这些值绝对匹配。但是,我没有得到正确的输出。
Sub Q1()
Dim i As Integer
For i = 5 To 9
If (Sheet1.Cells(5, 5) = Sheet2.Cells(i, 5)) And (Sheet1.Cells(6, 5) = Sheet2.Cells(i, 5)) And (Sheet1.Cells(7, 5) = Sheet2.Cells(i, 5)) And (Sheet1.Cells(8, 5) = Sheet2.Cells(i, 5)) And (Sheet1.Cells(9, 5) = Sheet2.Cells(i, 5)) Then
Sheet1.Cells(5, 6) = 1
Exit For
Else
Sheet1.Cells(5, 6) = 0
End If
Next
End Sub
我希望输出 1 到Sheet1
单元格E6
,但我目前得到 0。谢谢!
解决方案
小复杂:)
Sub Q1()
Dim i As Integer
Dim j As Integer
Dim chck(5 To 9) As Boolean
For i = 5 To 9
For j = 5 To 9
If Sheet1.Cells(i, 5) = Sheet2.Cells(j, 5) Then
chck(i) = True
Exit For
Else: chck(i) = False
End If
Next
Next
j = 0
For i = LBound(chck) To UBound(chck)
If chck(i) = True Then j = j + 1
Next
If j = 5 Then
Sheet1.Cells(5, 6) = 1
Else: Sheet1.Cells(5, 6) = 0
End If
End Sub
推荐阅读
- java - 滚动时是否可以跟踪波纹效果的出现?
- gensim - 使用 Gensim 4.0 微调预训练的 Word2Vec 模型
- node.js - Node JS https 检查下载的图像是否 100% 完成
- windows - JFrog 安装在 Windows 10 上一直失败
- c# - AADSTS50020 来自身份提供商“live.com”的用户帐户“xxx@zbc.com”在租户“xx-xx-xx-xx”中不存在 C# Winforms 中的错误
- ios - 如何在 UITableView 中动态调整自定义 UITableViewCells 的大小?
- shopware - 购物软件:PayPal 未出现
- python - 如何将文本数据转换为 DataFrame
- r - 带引号和不带引号有什么区别
- angular - 从组件更改模型时未调用 ngModelChange