【发布时间】:2020-12-14 06:03:16
【问题描述】:
我正在尝试拆分 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 | CATEGORY |
|---|---|
| 131 | Production |
| 124 | Production, Development, Staging, Test, Training, UserAcceptanceTest |
| 283 | Development, Test |
| 1138 | empty. |
我正在为以下提到的场景在“C”列中寻找以下结果。
如果类别列如下,则列“C”值应为“-”之后的值。
- 空 - 否
- 开发 - 开发
- 生产 - 产品
- 测试 - 测试
- 分期 - 分期
- 培训 - 培训
- UserAcceptanceTest - UAT
- 开发、测试和生产或任何其他类别 - 全部
- 开发和测试或任何其他类别(生产除外)- 开发/测试
- 测试和生产或任何其他类别(开发除外)- 开发/测试
- 开发和任何其他类别(生产和测试除外)- 开发
- 生产和任何其他类别(开发和测试除外)- 生产
- 测试和任何其他类别(开发和生产除外)- 测试
- 任何其他场景 - 未定义
【问题讨论】:
-
真的会帮助您的问题显示一些示例输入数据和预期输出。
-
您可以编辑您的问题,并按照工作表上的格式设置数据格式。
-
嗨,horst,这似乎是在数组中搜索单个字符串,但我必须查找具有 AND 和 OR 条件的多个字符串,我发现这很难做到。
-
是的,只需在
If或case语句中多次使用IsInArrayFunction。喜欢If IsInArray("Foo", arr) And IsInArray("Bar", arr) Then...
标签: arrays excel vba split select-case