gpt4 book ai didi

excel - 如何在循环中为不同范围编写两个 IF 语句,VBA

转载 作者:行者123 更新时间:2023-12-03 02:20:23 30 4
gpt4 key购买 nike

我正在使用 VBA 处理 Excel 文档。该文档包含一个具有多列的数据库,但为了简单起见,假设我有 2 列:

  • C 列对应于名称
  • F 列对应于数字。

我正在尝试创建一个宏来检查 F 列中的所有数字(带有循环)。如果数字大于 100,则检查 C 列中的相邻单元格。如果名称符合某个条件(假设对应于 John 或 Tom),则在另一张工作表中添加该数字的值。如果这些都不适用,请检查下一个单元格。

我的问题是我找不到定义 C 列中单元格的方法(创建变量/对象来调用单元格或直接调用相邻单元格)。

我的代码如下所示:

Sub Test1()

Dim rngnumbers, rngnames, MultipleRange As Range

Set rngnumbers = Sheet2.Range("F2:F999")
Set rngnames = Sheet2.Range("C2:C999")
Set MultipleRange = Union(rngnumbers, rngnames)

For Each numb In rngnumbers
If numb.Value >= 100 Then
If Sheet2.Range("C2") = "John" Or Sheet2.Range("C2") = "Tom" Then '''The problem here is that it only looks at the cell C2 and not the adjacent cell
Sheet1.Range("I999").End(xlUp).Offset(1, 0).Value = numb.Value
Else
End If
End If
Next numb

End Sub

我尝试修改该行:

'如果 Sheet2.Range("C2") = "John"或 Sheet2.Range("C2") = "Tom" 那么'像这样的东西:'newname.String = "约翰"'

但我找不到定义newname的方法。另一个想法是增加 For 循环中名称的 If 语句。

补充说明:我也不直接在 Excel 中使用公式,因为当 if 函数为 False 时,我不希望有任何空白单元格或零。

最佳答案

这是否可以解决您的问题 - 引用 C 列中的相关单元格? OFFSET 提供相对引用,在本例中查看 F 左侧的 3 列。

Sub Test1()

Dim rngnumbers As Range, rngnames As Range, MultipleRange As Range, numb As Range

Set rngnumbers = Sheet2.Range("F2:F999")
Set rngnames = Sheet2.Range("C2:C999")
Set MultipleRange = Union(rngnumbers, rngnames)

For Each numb In rngnumbers
If numb.Value >= 100 Then
If numb.Offset(, -3) = "John" Or numb.Offset(, -3) = "Tom" Then
Sheet1.Range("I999").End(xlUp).Offset(1, 0).Value = numb.Value
End If
End If
Next numb

End Sub

您是否考虑过 SUMIFS?

关于excel - 如何在循环中为不同范围编写两个 IF 语句,VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215470/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com