【问题标题】:VBA Macro If cell found in multiple cells thenVBA宏如果在多个单元格中找到单元格,则
【发布时间】:2013-07-11 04:53:46
【问题描述】:

我需要以下 if then 语句的帮助。我会尽力解释。

单元格 E21 和 F21 合并,值变化。我有一个从 o1 到 o100 的数字列表,对于 p q r s t u 来说,值是恒定的。

我需要一个宏来检查单元格 E21 中的值在哪一列中,并将数字(即宏中的)放入单元格 E23(也与 F23 合并)。

以下是仅检查单元格 o1 时有效的宏,但如果我将其更改为 o1:o100 则无效。宏是非常基本的,只是第一部分。请你告诉我如何让宏搜索整个列表。

Sub RunSelect()

    If Range("E21").Value = Range("o1:o100").Value Then
        Range("E23").Value = "3"

    ElseIf Range("E21").Value = Range("p1:p100").Value Then
        Range("E23").Value = "4"

    Else: MsgBox ("Incorrect number entered")

    End If

End Sub

感谢大家的帮助

【问题讨论】:

  • 这有点不清楚......对我来说:( O1 到 O100 是一个范围,如果该范围内的任何单元格与 E21 匹配,你想得到......什么?为什么是 3?为什么是 4? ...
  • 抱歉,断章取义,它没有任何意义,只是一些信息,以便其他人可以使用它。每辆车都有一个从 3 到 9 的数字,每个位置都有一个 4 位数的数字。所有位置都列在 o 到 u 列中。我们只处理数字。这些车辆只去特定的地点,如果我们收到订单,我们需要检查它需要去哪辆车。电子表格已经输入了所有其他详细信息,因此这将使新员工更容易检查将文件发送到哪里,而不是每次都检查整个列表。

标签: excel if-statement excel-2007 vba


【解决方案1】:

我不完全确定您在寻找什么,但您需要编写一个 For Each...Next 循环来遍历每个单元格并检查它的值。 Excel 不知道您要查看这些范围内的每个单元格,因此您需要告诉它使用循环。

尝试使用这个。

For Each c In Worksheets("Sheet1").Range("O1:O100").Cells
     If c.Value = Range("E21").Value Then Range("E23").Value = "3"
        Next

http://msdn.microsoft.com/en-us/library/office/aa221353(v=office.11).aspx

【讨论】:

  • 完美运行,正是我所需要的。也感谢该网站。这就是我不断回到stackoverflow的原因。我不只是得到答案,我得到解释和理解。
猜你喜欢
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-02
相关资源
最近更新 更多