|
发表于 2011-10-15 17:07
|
显示全部楼层
本楼为最佳答案
本帖最后由 兰色幻想 于 2011-10-15 17:12 编辑
Option Explicit
Sub 圆角矩形1_单击()
Dim 棋盘(1 To 1000, 1 To 6)
Dim 行数
Dim 姓名 As Object
Dim arr, arr1, x, k
Set 姓名 = CreateObject("scripting.dictionary")
arr = Sheets("数据库1").Range("b6:s" & Sheets("数据库1").Range("b65536").End(xlUp).Row)
For x = 1 To UBound(arr)
If arr(x, 14) >= Range("c2") And arr(x, 14) <= Range("e2") Then
If 姓名.Exists(arr(x, 12)) Then
行数 = 姓名(arr(x, 12))
棋盘(行数, 4) = 棋盘(行数, 4) + arr(x, 10)
棋盘(行数, 6) = 棋盘(行数, 4) - 棋盘(行数, 5)
Else
k = k + 1
姓名(arr(x, 12)) = k
行数 = k
棋盘(行数, 1) = arr(x, 18)
棋盘(行数, 2) = arr(x, 12)
棋盘(行数, 3) = arr(x, 1)
棋盘(行数, 4) = arr(x, 10)
棋盘(行数, 6) = 棋盘(行数, 4) - 棋盘(行数, 5)
End If
End If
Next x
arr1 = Sheets("数据库2").Range("b6:i" & Sheets("数据库2").Range("b65536").End(xlUp).Row)
For x = 1 To UBound(arr1)
If arr1(x, 2) >= Range("c2") And arr1(x, 2) <= Range("e2") Then
If 姓名.Exists(arr1(x, 7)) Then
行数 = 姓名(arr1(x, 7))
棋盘(行数, 5) = 棋盘(行数, 5) + arr1(x, 4)
棋盘(行数, 6) = 棋盘(行数, 4) - 棋盘(行数, 5)
Else
k = k + 1
姓名(arr1(x, 7)) = k
行数 = k
棋盘(行数, 1) = arr1(x, 1)
棋盘(行数, 2) = arr1(x, 7)
棋盘(行数, 3) = arr1(x, 3)
棋盘(行数, 5) = arr1(x, 4)
棋盘(行数, 6) = 棋盘(行数, 4) - 棋盘(行数, 5)
End If
End If
Next x
Sheets("合并结果").Range("B6").Resize(12, 6) = ""
Sheets("合并结果").Range("B6").Resize(k, 6) = 棋盘
End Sub
|
|