常用的一些vba代码

数组赋值给单元格区域

Sub suijishu() '随机数
    Dim shuzu(1 To 50000, 1 To 20) As Variant '定义数组,注意是从1开始的
    
    Dim hang As Long
    Dim lie As Long
    
    Randomize
    For hang = 1 To 50000
        For lie = 1 To 20
            shuzu(hang, lie) = Rnd()
            
        Next lie
    Next hang
    
    '数组赋值给单元格区域
    Sheet1.Range(Cells(1, 1), Cells(50000, 20)) = shuzu
    
End Sub

下面的代码是没有优化的代码,功能与上面一样(执行时间非常长)

Sub suiji2()
    Dim hang As Long
    Dim lie As Long
    Randomize
    For hang = 1 To 50000
        For lie = 1 To 20
            Sheet2.Cells(hang, lie) = Rnd()
            
        Next lie
    Next hang
    
End Sub

即便是前后增加关闭显示,效率提升也很有限。

常用的一些vba代码_第1张图片

运行时间

详细代码如下


Sub suiji3()
    Dim time1 As Single
    Dim time2 As Single
    
    time1 = Timer
    
    
    Dim hang As Long
    Dim lie As Long
    Randomize
    For hang = 1 To 50000
        For lie = 1 To 20
            Sheet2.Cells(hang, lie) = Rnd()
            
        Next lie
    Next hang
    
    
    time2 = Timer
    Dim timecha As Single
    timecha = (time2 - time1)
    
    MsgBox "运行时间" & timecha & "秒"
    
    
End Sub

另外的一段代码

对内容进行处理之后再赋值到相应的表格

参考代码如下

’参考代码https://blog.csdn.net/iamlaosong/article/details/46878321
Sub fuzhi() '大数据复制
    Dim shuzu() ' As Variant
    shuzu = Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(50000, 20)).Value
    'shuzu = Sheet1.Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(50000, 20)).Value  '注意此句无法通过
    
    Dim shuzu2(1 To 50000, 1 To 20) As Variant '定义数组,注意是从1开始的
    Dim hang As Long
    Dim lie As Long
    '此循环内可以添加相应的计算
    For hang = 1 To 50000
        For lie = 1 To 20
            shuzu2(hang, lie) = shuzu(hang, lie)
        Next lie
    Next hang
    
    '数组赋值给单元格区域
    Sheets(3).Range(Cells(1, 1), Cells(50000, 20)) = shuzu2
    
End Sub

大数据分拣


Sub fuzhi() '大数据复制

    
    Const DEF_CGQSL As Long = 14    '定义 传感器数量
    Const DEF_TiaoM As Long = 35000  '定义 处理条目
    
    
    Dim DEF_BiaoGZHS As Long
    DEF_BiaoGZHS = 1 + DEF_CGQSL * DEF_TiaoM
    
    Dim shuzu()  As Variant
    shuzu = Sheets(1).Range(Sheets(1).Cells(2, 1), Sheets(1).Cells(DEF_BiaoGZHS, 26)).Value
    
    Dim i As Long
    Dim hang As Long
    Dim book2hang As Long
    book2hang = 1
    
    Dim Low1 As Long
    Dim Up1 As Long
    Low1 = LBound(shuzu, 1) '1
    Up1 = UBound(shuzu, 1) 'hang
    Dim Low2 As Long
    Dim Up2 As Long
    Low2 = LBound(shuzu, 2) '1
    Up2 = UBound(shuzu, 2) '26
    

    Dim shuzu2(1 To DEF_TiaoM + 1, 1 To 26 * DEF_CGQSL) As Variant '定义数组,注意是从1开始的
'
        Dim cgq As Long
        For cgq = 1 To DEF_CGQSL
            book2hang = 1
            For hang = cgq To DEF_BiaoGZHS Step DEF_CGQSL
                For i = 1 To 26
                    'If (hang > 149950) Then Debug.Print hang
                    If hang <= DEF_BiaoGZHS And book2hang < DEF_TiaoM Then
                        shuzu2(book2hang, i + (cgq - 1) * 26) = shuzu(hang, i)
                    End If
                Next i
                book2hang = book2hang + 1
           Next hang
        Next cgq
'
    book2hang = 1
    '数组赋值给单元格区域
    Sheets(2).Range(Cells(1, 1), Cells(DEF_TiaoM + 1, 26 * DEF_CGQSL)) = shuzu2

End Sub

 删除空行

sub  删除空行()
     Sheets(1).Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
end sub

anlog  2021年3月24日00点46分

特此记录

你可能感兴趣的:(笔记,vba优化,excel,vba优化)