});

数据结构实战——指针&栈

学以致用,采用堆栈head, rear指针的原理建立一个简单的列表用于存放分解的数据。符合需要方便插入不同长度数据的特征。

源码

Sub division()
'
' division 宏
'
'
   
    row_0 = 2 '起始行
    row_1 = 50 '终止行
    col_00 = "A" '电话列
    col_01 = "B" '金额列
    col_10 = "D" '输出电话列
    col_11 = "E" '输出金额列
    
    '定义指针,该脚本采用链表结构
    head = row_0
    rear = row_0 - 1
    
    For Row = row_0 To row_1
     
        Num = Range(col_00 & CStr(Row)).Value
        Cost = Range(col_01 & CStr(Row)).Value
        
        If Cost > 200 Then
        
            If Cost Mod 200 = 0 Then
                Add_rows = Cost / 200
                rear = head + Add_rows
            Else
                Add_rows = (Cost - 100) / 200
                rear = head + Add_rows
                Range(col_10 & CStr(rear)).Value = Num
                Range(col_11 & CStr(rear)).Value = 100
                rear = rear + 1
            
            End If
        
            i = 0
            
            While i < Add_rows
                Range(col_10 & CStr(head + i)).Value = Num
                Range(col_11 & CStr(head + i)).Value = 200
                i = i + 1
            Wend
            
            head = rear
        
        Else
            Range(col_10 & CStr(head)).Value = Num
            Range(col_11 & CStr(head)).Value = Cost
            rear = head + 1
            head = rear
            
        
        End If
        

    
    Next Row
            
    
End Sub