excel - 每个语句和 if 语句使用 2 个条件的范围
问题描述
我的发票生成器代码的一部分是将数据从发票模板移动到另一个工作表。但是,有些产品没有条形码,我需要单独运行代码。
到目前为止,下面的代码是我尝试过的,但似乎不起作用。它似乎只是不检查 range("B20:B32") 的单元格是否包含 a 或 b。
我希望每当 b20 到 b32 = a 之间的每个单元格时,它都会运行 codeA,否则如果 b20 到 b32 = b 之间的单元格,那么它将运行 codeB。
我的另一个选择是为 b20 到 b32 之间的每个单元格编写一个代码,但我的代码很长,我有 8 个单元格来检查它的值是 = a 还是 b。
请帮忙。谢谢
Private Sub Testfor()
Dim cell As Range
Dim r As Long
Dim pd As Range
r = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Set pd = Sheet1.Range("B20:B32")
For Each cell In pd
'codeA
If cell = "DPS" Or cell = "TS" Then
Sheet2.Cells(r, 1) = "yes"
Sheet2.Cells(r, 2) = "yes"
Sheet2.Cells(r, 3) = "yes"
'codeB
ElseIf cell = "FMC" Or cell = "PM" Or cell = "FC" Then
Sheet2.Cells(r, 1) = "K"
Sheet2.Cells(r, 2) = "v"
Sheet2.Cells(r, 3) = "c"
End If
Next cell
End Sub
解决方案
试试这段代码,看看它是否在做你想要实现的目标。r
如果您想在每次迭代中更改它,您应该将其放入循环中。
Private Sub Testfor()
Dim cell As Range
Dim r As Long
Dim pd As Range
Dim Sheet1 As Worksheet: Set Sheet1 = ThisWorkbook.Sheets("Sheet1")
Dim Sheet2 As Worksheet: Set Sheet2 = ThisWorkbook.Sheets("Sheet2")
Set pd = Sheet1.Range("B20:B32")
For Each cell In pd
r = Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If cell = "DPS" Or cell = "TS" Then
Sheet2.Cells(r, 1) = "yes"
Sheet2.Cells(r, 2) = "yes"
Sheet2.Cells(r, 3) = "yes"
ElseIf cell = "FMC" Or cell = "PM" Or cell = "FC" Then
Sheet2.Cells(r, 1) = "K"
Sheet2.Cells(r, 2) = "v"
Sheet2.Cells(r, 3) = "c"
End If
Next cell
End Sub
推荐阅读
- c++ - C++ 文件。如何删除数据
- java - 将图像布置为已处理的一副纸牌
- json - 使用创建的角色在 Wordpress 中获取 JSON 错误
- ruby-on-rails - AASM 状态机,可以跳过守卫吗?
- java - 这是一个创建线程的程序,但是任何人都可以建议显示错误吗?
- c++ - 双向链表选择排序
- java - ModelAndView 不向 JSP 返回数据
- python - Python 中的 Null 或 None 函数
- javascript - 了解传递给解析的多个参数的顺序,以及赋予 .then() 的值
- javascript - 为什么 Typescript 不要求我的函数返回某种类型?