[英]Function IIF in loop statement
我有一個工作代碼循環遍歷數組的行,然后將值存儲到另一個數組中。 實際上代碼沒有問題,但我正在努力提高我的技能並學習新技能這是代碼
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)
但這似乎無效。 有任何想法嗎?
這很好用,我可以在專家的幫助下解決這個問題非常感謝大家
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
Option Explicit
Sub Test()
Dim a: a = Cells(1).CurrentRegion.Value
Dim ub1 As Long, ub2 As Long: ub1 = UBound(a): ub2 = UBound(a, 2)
ReDim b(1 To ub1 * ub2)
Dim i As Long, j As Long, n As Long, md As Long
For i = 1 To ub1
md = i Mod 2
For j = Abs(md - 1) * ub2 + md To md * ub2 + Abs(md - 1) _
Step 2 * (md - 1) + 1
n = n + 1
If a(i, j) <> Empty Then b(n) = a(i, j)
Next j
Next i
Range("M2").Resize(n).Value = Application.Transpose(b)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.