excel - 查找符合条件的第一个集合
问题描述
我有一个带有二进制属性的集合对象。它是二维格式的集合的集合。
Dim colArry(1 to 5, 1 to 3) as New Collection
集合的二进制属性如下所示:
1 2 3
1 0 0 0
2 0 0 1
3 1 0 0
4 0 0 0
5 0 0 0
集合属性存储为:
Dim pNumber as Integer
Public property Get() as Integer
Number = pNumber
End property
Public property Let Number(value as Integer)
pNumber = value
End Property
我想将具有属性为 1 的第一行(跨所有列)的集合引用存储在新变量中。
在上面的集合中,我想标记colArray(2,3)
. 如果第 3 列全为零,那么我想标记colArray(3,1)
.
我想通过将行和列索引存储在两个变量中来标记这一点:
row = 2
col = 3
该属性是从 Excel 工作表中读取的,例如从 Sheet1 上的单元格 R1C1 开始:
for i=1 to 5
for j=1 to 3
colArray(i,j) = ThisWorkbook.Sheets("Sheet1").Cells(i,j)
Next j
Next i
解决方案
这是一个例子:
Option Explicit
Public Sub Example()
'fill an example array
Dim ColArray(1 To 5, 1 To 3) As Integer
ColArray(2, 3) = 1
ColArray(3, 1) = 1
'now the ColArray looks like
'0 0 0
'0 0 1
'1 0 0
'0 0 0
'0 0 0
Dim Found As Boolean
Dim iRow As Long, iCol As Long
For iRow = LBound(ColArray, 1) To UBound(ColArray, 1) 'loop throug rows
For iCol = LBound(ColArray, 2) To UBound(ColArray, 2) 'loop throug columns
If ColArray(iRow, iCol) = 1 Then 'check if value is 1
Found = True
Exit For
End If
Next iCol
If Found Then Exit For
Next iRow
'found at ColArray(iRow, iCol)
If Found Then
Debug.Print "Found at:", iRow, iCol
Else
Debug.Print "not 1 found"
End If
End Sub
请注意,您可以一次将范围读入数组(无需循环)
Dim colArray As Variant
colArray = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5").Value
推荐阅读
- reactjs - 如何在 React 的 package.json 中添加多个代理?
- javascript - 切换标签时反应倒计时循环计时器重置
- javascript - For循环在javascript中初始化新实例
- python - 有没有一种方法可以暂停一个函数但不影响 Python 中的其他函数?
- actions-on-google - Google Assistant - 数据存储(对话历史)
- python - 如何使用python中的docx或python-docx包将多个绘图图保存在一个文档文件中
- database - MongoDb,克隆数据库错误:非法参数组合:无法指定 --db 和 --uri
- mysql - MySql 8 连接一个字符串
- django - 为什么 django TestCase 不创建测试数据库?
- python - Xpath 选择只返回第一个响应结果