首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >符合条件的行号数组

符合条件的行号数组
EN

Stack Overflow用户
提问于 2019-01-08 19:37:20
回答 2查看 112关注 0票数 0

我需要创建一个由符合特定标准的行号组成的数组。

假设我有一份日期清单:

01.03.2019

01.07.2019

01.03.2020

30.03.2019

01.03.2019

01.06.2019

现在,假设我需要01.03.2019的行号,我的数组将是1,5。

有什么像样的方法吗?我的列表有数千个条目,所以我想循环遍历每个单元需要一段时间。任何精益解决方案都将不胜感激。

我找到了这个线程,但是答案还没有被验证:Is it possible to fill an array with row numbers which match a certain criteria without looping?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-08 19:56:14

如果您使用数组而不是工作表工作,则不会“花一段时间”。

代码语言:javascript
运行
复制
dim dt as long, i as long, j as long, tmp as variant, arr as variant

dt = dateserial(2019, 1, 3)

with worksheets("sheet1")

    tmp = .range(.cells(1, "A"), .cells(.rows.count, "A").end(xlup)).value2

end with

redim arr(0)

for i=lbound(tmp, 1) to ubound(tmp, 1)
    if tmp(i, 1) = dt then
        redim preserve arr(j)
        arr(j) = i   'collect row numbers
        j=j+1
    end if
next i

for i=lbound(arr) to ubound(arr)
    debug.print arr(i)  'print row numbers
next i
票数 2
EN

Stack Overflow用户

发布于 2019-01-08 19:56:04

如果您的值位于A列中,这将用匹配的行号填充数组,并将它们打印到即时窗口:

代码语言:javascript
运行
复制
Sub FillArray()

Dim myarray As Variant
Dim i As Long

ReDim myarray(0 To 0)

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1).Value = "01.03.2019" Then 'Value to find
        ReDim Preserve myarray(0 To UBound(myarray) + 1)
        myarray(UBound(myarray) - 1) = i
    End If
Next i

For i = 0 To UBound(myarray)
    Debug.Print myarray(i)
Next i

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54098605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档