作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 VBA 处理 Excel 文档。该文档包含一个具有多列的数据库,但为了简单起见,假设我有 2 列:
我正在尝试创建一个宏来检查 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/
我是一名优秀的程序员,十分优秀!