返回列表 上一主題 發帖

[發問] 函數陣列資料如何以以VBA執行

回復 1# keny1021

請測試看看,謝謝

Sub test()
Dim Arr, Brr(), T$, i&, j%
T = Sheets(2).Range("e4")
Arr = Sheets(1).Range("a1").CurrentRegion
ReDim Brr(1 To UBound(Arr), 1 To 11)
For i = 2 To UBound(Arr)
    If Arr(i, 1) = T Then
        n = n + 1: For j = 2 To 7: Brr(n, j - 1) = Arr(i, j): Next
        For j = 8 To 11
        Brr(n, j) = Application.RandBetween(Brr(n, 6) * 100, Brr(n, 5) * 100) * 0.01
        Next
    End If
Next
If n > 0 Then
    With Sheets(2)
        .[b6].CurrentRegion.Offset(1) = ""
        .[b7].Resize(n, 11) = Brr
    End With
End If
End Sub

TOP

回復  samwang

Samwang 大大 感謝您:

可以再麻煩您,當我格式稍作調整後,發現A55儲存格若有建立值 ...
keny1021 發表於 2022-8-4 16:12


因為你原來的不連續,所以從第6列往下1列後清除.[b6].CurrentRegion.Offset(1) = ""
現在是連續資料所以改為從第1列往下6以後清除
.[b1].CurrentRegion.Offset(6) = ""

TOP

回復  samwang

Samwang 大大 您好:測試結果OK。感謝指點

下列語法是之前套用在函數的陣列跑批次迴圈 ...
keny1021 發表於 2022-8-5 10:57


不好意思,不太了解需求,現在程式碼不是可以產出了嗎? 請再詳細說明一下,謝謝

TOP

回復  samwang

Samwang 大大 您好:
主要我加入之前的語法套用後,執行後會產生空行,如下面圖一所示:
...
keny1021 發表於 2022-8-5 15:49

請再測試看看,謝謝
If n > 0 Then
    With Sheets(2)
        .[b1].CurrentRegion.Offset(6) = "" '從第一列往下至第6列後開始刪除
        .[b7].Resize(n, 11) = Brr
    End With
    n = 0
End If
sh2.PrintOut
Next

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題