首页 > 解决方案 > 循环语句中的函数 IIF

问题描述

我有一个工作代码循环遍历数组的行,然后将值存储到另一个数组中。实际上代码没有问题,但我正在努力提高我的技能并学习新技能这是代码

Sub Test()
    Dim a, i As Long, j As Long, n As Long
    a = Cells(1).CurrentRegion.Value
    ReDim b(1 To UBound(a, 1) * UBound(a, 2))
    For i = LBound(a) To UBound(a)
        If i Mod 2 = 1 Then
            For j = LBound(a, 2) To UBound(a, 2)
                n = n + 1
                If a(i, j) <> Empty Then b(n) = a(i, j)
            Next j
        Else
            For j = UBound(a, 2) To LBound(a, 2) Step -1
                n = n + 1
                If a(i, j) <> Empty Then b(n) = a(i, j)
            Next j
        End If
    Next i
    Range("M2").Resize(n).Value = Application.Transpose(b)
End Sub

我想做的是压缩嵌套循环,这是我的尝试

For j = iif(i mod2=1,LBound(a, 2) To UBound(a, 2),UBound(a, 2) To LBound(a, 2) Step -1)

但这似乎无效。有任何想法吗?

标签: excelvba

解决方案


这很好用,我可以在专家的帮助下解决这个问题非常感谢大家

Sub Test()
    Dim a, i As Long, j As Long, n As Long
    a = Cells(1).CurrentRegion.Value
    ReDim b(1 To UBound(a, 1) * UBound(a, 2))
    For i = LBound(a) To UBound(a)
        For j = IIf(i Mod 2 = 1, LBound(a, 2), UBound(a, 2)) To IIf(i Mod 2 = 1, UBound(a, 2), LBound(a, 2)) Step IIf(i Mod 2 = 1, 1, -1)
            n = n + 1
            If a(i, j) <> Empty Then b(n) = a(i, j)
        Next j
    Next i
    Range("N2").Resize(n).Value = Application.Transpose(b)
End Sub

推荐阅读