顯示具有 for each in 標籤的文章。 顯示所有文章
顯示具有 for each in 標籤的文章。 顯示所有文章

2024年8月18日 星期日

VBA:如何檢查各行資料數量是否一致(非連續資料)

例子長這樣:

 





編寫一個vba如下:

 Private Sub CommandButton1_Click()

Set my_range = ActiveSheet.Range("a1:C1")

For Each a In my_range 

IF A.VALUE<>"" THEN   

    temp1 = Split(a.Address, "$")   

    s1 = Application.CountA(ActiveSheet.Range(temp1(1) & ":" & temp1(1)))    

    MsgBox temp1(1) & "行" & s1 - 1 & "筆" & "資料"

END IF 

Next

End Sub

運作:


2024年8月11日 星期日

VBA:如何檢查各行資料數量是否一致(連續資料)

一個例子,有a、b、c三行,如圖,透過vba方式知道各行有多少資料。


編寫一個vba如下:

 Private Sub CommandButton1_Click()

Set my_range = ActiveSheet.Range("a1,b1,c1")

For Each a In my_range    

    temp1 = Split(a.Address, "$")   

    s1 = Application.CountA(ActiveSheet.Range(temp1(1) & ":" & temp1(1)))    

    MsgBox temp1(1) & "行" & s1 - 1 & "筆" & "資料"

Next

End Sub

運作:

應用:
例如也可以用來檢查各行資料是否數量一致拉、或是檢查各行資料差異性。


2023年12月4日 星期一

vba陣列 不連續寫入大量資料技巧

說明一次寫入與copy 方式時間差距:


Sub CommandButton1_Click()

Debug.Print "陣列大量資料寫入"

t = Timer    

    DD = ActiveSheet.Range("A1:E1337")    

    Debug.Print "資料筆數" & Application.CountA(DD)

    Sheets(2).Range("A1:E1337") = DD    

    Debug.Print "花費時間" & Timer - t

Debug.Print "copy 資料寫入"

t = Timer

    ActiveSheet.Range("A1:E1337").Copy Sheets(2).Range("A1") 

    Debug.Print "花費時間" & Timer - t''

DD = Array(1, 2, 3)

ActiveSheet.Range("h1:j1") = DD

Debug.Print "一維陣列不支援不連續"

ActiveSheet.Range("h3,i3,l5") = DD

End Sub

資料分散時怎辦?

用FOR EACH IN,於不連續儲存格寫入技巧,解說SET物件的技巧


 Sub 寫入陣列到儲存格a()

    Dim 資料陣列 As Variant

    Dim i As Integer

    

    ' 將資料存入陣列

    資料陣列 = Array(1, 2, 3)    

    ' 將設置 range 物件

    Set myrange = ActiveSheet.Range("a1,b3,a10")

           i = 0    

    For Each a In myrange

        ActiveSheet.Range(a.Address).Value = 資料陣列(i)

        i = i + 1 '

    Next

End Sub


指數變化(2025.08.29) 開始透過AI做整理

 指數變化(2025.08.29) 開始透過AI做整理 上周焦點: 8/19(二)   美國房屋開工率 5%月增  美國建築許可月增率 月增2.8% 8/20(三)   美國房貸綜合指數 月減0.5%  美國30年期房貸利率 6.69%  美國15年期房貸利率 5.8~5.71%...