|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 mjzxlmg 于 2012-6-17 10:28 编辑
蓝桥玄霜 发表于 2010-10-18 12:56
实例11 关键字赋给两列后用Replace方法
一、问题的提出:
有如图实例11-1所示的工资表,要求编写一段代码 ...
近几天无事,研究了一下字典用法,重写了一下“实例11 关键字赋给两列后用Replace方法”这个例子的代码,代码简洁明了。献丑了。
[code=vb]Sub 我的代码()
Dim arr, d As Object, i&, j&, m&, s&, brr()
Set d = CreateObject("Scripting.Dictionary")
With Sheet1
arr = .[a1].CurrentRegion.Value
ReDim brr(1 To 1000, 1 To UBound(arr, 2) / 3 + 2)
m = 1
For j = 1 To UBound(arr, 2) Step 3
For i = 2 To UBound(arr)
If Len(arr(i, j)) Then '排除空白行
s = d(arr(i, j) & arr(i, j + 1)) '性别+姓名作为关键字
If s = Empty Then
m = m + 1
d(arr(i, j) & arr(i, j + 1)) = m
s = m '取得关键字位置
brr(s, 1) = arr(i, j) '性别
brr(s, 2) = arr(i, j + 1) '姓名
End If
brr(s, (j - 1) / 3 + 3) = arr(i, j + 2) '各月工资
End If
Next
brr(1, (j - 1) / 3 + 3) = arr(1, j + 2) '表头:各月工资
Next
brr(1, 1) = Right$(arr(1, 1), 2) '表头:性别
brr(1, 2) = Right$(arr(1, 2), 2) '表头:姓名
.[a12].CurrentRegion.ClearContents
.[a12].Resize(m, UBound(brr, 2)) = brr
End With
Set d = Nothing
End Sub[/code]
实例附件:
实例11_两列Replace.rar
(15.73 KB, 下载次数: 71)
|
|