在VBA或Excel中,如果数组包含该值,我如何遍历数组并用1填充某些单元格,如果不包含该值则用0填充?
我从 Wix 收到一个数组,其中包含用户通过表单选择的课程。
从 Wix 接收的数组示例,其中用户选择了 2 门课程。这个数组被放置在一个单元格中。
["VBA","Django"]
上面的数组放置在我的 excel 文件中的一个单元格中,我从这里将单元格变为红色并用课程填充 VBA 数组:
Dim data() As Variant
Dim arrStr As String
Dim dataItems As Long
Dim i As Long
Dim IndividualCourses(1 To 9) As String
arrStr = Range("T3")
arrStr = Replace(Replace(arrStr, "[", "{"), "]", "}")
data = Application.Evaluate(arrStr)
dataItems = Application.CountA(data)
For i = 1 To dataItems
IndividualCourses(i) = data(i)
Next i
但用户可以选择 1 到 10 门课程。所有课程的数组:
["JS","Python","VBA","Java","Spring","C++","C#",".NET","Django","CSS"]
我想根据从 Wix 收到的数组,将 1 放在数组中存在的课程的单元格中,将 0 放在其他课程中。
例如,这个课程选择了["VBA","Django"],它应该在VBA单元格中放置1,在Django单元格中放置1,在剩余课程单元格中放置0,因为我想看看用户选择了哪些课程.
这个复杂的问题有什么想法吗?!?
回答
不确定您对 VBA 的设置如何,但根据您的 Excel 版本,您可以使用动态数组执行此操作,例如:
公式B2:
=--ISNUMBER(FIND(""""&B1:K1&"""",A2))
编辑:
根据@TM 他的宝贵评论,您也可以在FIND()整个垂直范围内提供第二个参数:
公式B2:
=--ISNUMBER(FIND(""&B1:K1&"",A2:A4))
- @JvdV Nice; it's even possible to include a whole range of search items in column A via e.g. `=--ISNUMBER(FIND(""""&B1:K1&"""",A2:A100))` - *Hint: Take care to fill the whole caption row `B1:K1` with entries in order to prevent unwanted findings of a blank caption.*
THE END
二维码