提问人:Akhilesh Kumar 提问时间:10/18/2023 最后编辑:Akhilesh Kumar 更新时间:10/24/2023 访问量:66
VBA:通过变量循环列单元格
VBA: looping column cells through variable
问:
我是这个 VBA 的新手。我想运行一个包含一些条件的循环,但我不想使用 cell() 语法,而是想为不同的列使用变量和不同的变量。 例如,与其使用“if cell(1, i) < cell(2, i-1)”,不如使用“if varA < varB-1”,其中 varA=cell(1, i), varB=cell(2, i) 和 varB-1=cell(2, i-1)。
P.S.:数据集很大,像是上千行30-40列,要反复检查多个条件。所以也请考虑一下。
Dim i As Integer
i = 1
Do While i <= 10
if cell(1, i) < cell(2, i-1)
MsgBox Result
Loop
答:
0赞
CHill60
10/18/2023
#1
您可以将范围中的值赋值到数组变量中,例如
Sub demo()
'Must be declared as Variant
Dim arr As Variant
'Use explict range rather than UsedRange - this is a demo only
arr = ThisWorkbook.Sheets(1).UsedRange.Value
Dim cl As Long, rw As Long
For rw = 1 To UBound(arr, 1)
For cl = 1 To UBound(arr, 2)
Debug.Print "Row", rw, "Column", cl, "Value", arr(rw, cl)
Next
Next
End Sub
评论
0赞
Akhilesh Kumar
10/19/2023
对简单的数组也有类似的想法,但数组有点慢。因此寻找更好的解决方案。因为我必须在不同的列、行和工作表上执行多个条件。
0赞
Notus_Panda
10/19/2023
数组有点慢?那么我们必须处理不同的数组。
0赞
CHill60
10/19/2023
@AkhileshKumar Arrays 的速度并不慢。使用单元格的速度很慢。相比之下,你正在检查的东西被保存在记忆中的任何东西都会“很快”。到底是什么让你认为数组很慢?
0赞
Akhilesh Kumar
10/24/2023
你们显然没有读过我对我下面的高个子问题的回答。如果你读过它,你就会明白我必须处理大量的数据,因为该评论中提到的值只是一个样本,这需要在更大的数据上实现。因此,请在下次发表评论之前正确了解情况。如果您仍然有疑问,可以尝试对大型数据集进行一些运行时性能比较,并自行检查数组在多个条件下对大型数据集的速度。
0赞
Akhilesh Kumar
10/24/2023
对我的问题进行了编辑,我希望您现在了解我实际上要解决的问题。
评论
Cell()
Cells()
If Cells(1, i) < Cells(2, i-1)
varB-1
.Offset(i,j)
.Offset(1,2)