arrays - 数组中多个 if 语句的 VBA 代码
问题描述
我正在尝试将 B 列中的数组拆分为用逗号分隔的列,然后查找每个项目,如果满足条件,则在 C 列中发布一些内容。
我有很多结合 AND/OR 条件的场景。
最后,如果不满足任何场景,则在“C”列中应为“未定义”。
Dim Cl As Range
Dim Dic As Object
Dim Sp As Variant
Dim i As Long
Set Dic = CreateObject("Scripting.dictionary")
With Sheets("Analysis")
For Each Cl In .Range("A2", .Range("A" & Rows.Count).End(xlUp))
Sp = Split(Cl.Offset(, 1).Value, ",")
Select Case Cl.Offset(, 1).Value
Case Is = " "
C1.Offset(, 2).Value = " "
Case Is = "Production"
C1.Offset(, 2).Value = "Prod"
Case Is = "Production" And "Development" Or "Training"
C1.Offset(, 2).Value = "Dev/Prod"
End Select
Next Cl
End With
End Sub
示例数据,其中 A 列具有 Id,B 列具有类别。
ID | 类别 |
---|---|
131 | 生产 |
124 | 生产、开发、登台、测试、培训、UserAcceptanceTest |
283 | 开发、测试 |
1138 | 空的。 |
我正在为下面提到的场景在“C”列中寻找下面的结果。
如果类别列如下,则列“C”值应为“-”之后的值。
- 空 - 否
- 开发 - 开发
- 生产 - 产品
- 测试一下
- 分期 - 分期
- 培训 - 培训
- UserAcceptanceTest - UAT
- 开发、测试和生产或任何其他类别 - 全部
- 开发和测试或任何其他类别(生产除外)- 开发/测试
- 测试和生产或任何其他类别(开发除外)- 开发/测试
- 开发和任何其他类别(生产和测试除外) - 开发
- 生产和任何其他类别(开发和测试除外)- 产品
- 测试和任何其他类别(开发和生产除外)- 测试
- 任何其他场景 - 未定义
解决方案
使用此答案IsInArray
中的功能:
我用一些例子填充了它,让你知道如何去做。
Sub Category()
For Each cl In Range("A2:A" & Range("A2").End(xlDown).Row)
Sp = Split(tempString , ", ")
Select Case True
Case UBound(Sp) = -1
cl.Offset(0, 2).Value = "No"
Case UBound(Sp) = 0 And Sp(0) = " "
cl.Offset(0, 2).Value = "No"
Case UBound(Sp) = 0 And Sp(0) = "Development"
cl.Offset(0, 2).Value = "Dev"
Case IsInArray("Development", Sp) And IsInArray("Test", Sp) And IsInArray("Production", Sp)
cl.Offset(0, 2).Value = "All"
Case IsInArray("Development", Sp) And Not IsInArray("Production", Sp) And Not IsInArray("Test", Sp)
cl.Offset(0, 2).Value = "Dev"
Case Else
cl.Offset(0, 2).Value = "Not Defined"
End Select
Next cl
End Sub
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
推荐阅读
- python - 我可以使用布尔循环找到两个 df cols 相等的值然后设置 df1['col1'] = df2['col2']
- php - 如何获取用户的 Instagram Media?Instagram 图形 API
- java - 如何构造枚举不区分大小写?这样当我将 json 转换为类对象时,它看不到对象的情况
- javascript - 出现 linting 错误 - 错误 Unexpected empty object pattern no-empty-pattern
- java - OpenOLAT .properties 中的 PayPal 集成
- laravel - Laravel whereNull only if the value NULL is selected
- azure - 运行“sudo iotedge check --verbose”时出现错误
- backbone.js - 将下划线模板转换为 Handlebar 模板
- arrays - 试图为游戏井字游戏制作移动列表
- linux - Tails -f 使用多个管道对数据进行排序