标签归档:vba

VBA处理数据

excel有很强大的数据统计功能,就连我数据库初始化数据都先转成excel形式,然后再ctrl + c, ctrl + v 贴进去,使用起来真是很方便。关于excel的书也非常的多,其中的大砖头也不少

但如果对excel不太熟悉的话,也会面对一些问题时束手无策。今天就遇到这样的一种情况,要合并数据,但合并的条件是以第一列的ID为准,也就是说第二列的数据会比较少。数据量比较大,10W以上,不可能纯手工。开始我想到导致数据库,再用程序处理,但后来一想这样做还要我去帮他处理剩下的数据,也不方便,于是就想用vba试试。其实VB是2004年学的,早就还给老师了

以下是写的代码,比较挫,边查边写

Sub export()
    Sheets("Sheet1").Select
    Dim cell_an, cell_bn, cell_a, cell_b
    cell_an = 1
    cell_bn = 1
    While Worksheets(1).Cells(cell_an, 1).Value <> ""
        cell_a = Worksheets(1).Cells(cell_an, 1).Value
        cell_b = Worksheets(1).Cells(cell_bn, 2).Value
       
        Worksheets(2).Cells(cell_an, 1).Value = cell_a
        If cell_a < cell_b Or cell_a > cell_b Then
            Worksheets(2).Cells(cell_an, 2).Value = 0
            Worksheets(2).Cells(cell_an, 3).Value = 0
            Worksheets(2).Cells(cell_an, 4).FormulaR1C1 = "=ABS(RC[-2]-RC[-1])"
            cell_an = cell_an + 1
        ElseIf cell_a = cell_b Then
            Worksheets(2).Cells(cell_an, 2).Value = Worksheets(1).Cells(cell_bn, 3).Value
            Worksheets(2).Cells(cell_an, 3).Value = Worksheets(1).Cells(cell_bn, 5).Value
            Worksheets(2).Cells(cell_an, 4).FormulaR1C1 = "=ABS(RC[-2]-RC[-1])"
            cell_an = cell_an + 1
            cell_bn = cell_bn + 1
        End If
       
    Wend
End Sub