Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8649|回复: 32

[习题] VBA7讲课后练习2: 除去重复值并添加空值

[复制链接]
发表于 2008-1-5 16:04 | 显示全部楼层 |阅读模式
<p> o13uZthp.rar (4.45 KB, 下载次数: 93)

VBA7讲课后练习2: 除去重复值并添加空值

VBA7讲课后练习2: 除去重复值并添加空值
发表于 2008-1-5 16:05 | 显示全部楼层
回复

使用道具 举报

发表于 2008-1-5 19:10 | 显示全部楼层
回复

使用道具 举报

发表于 2008-1-5 19:52 | 显示全部楼层

下载练习了。谢谢兰版主!!!
回复

使用道具 举报

发表于 2008-1-5 20:11 | 显示全部楼层

Sub 填充() '0.0078125秒<br/>t = Timer<br/>Range("b:b") = ""<br/>Dim i, j As Integer<br/>Dim arr, arr1(), k, x As Integer<br/>x = Range("a65536").End(xlUp).Row<br/>k = 1<br/>arr = Range("a1:a" &amp; x)<br/>ReDim arr1(1 To x, 1 To 1)<br/>For i = 1 To x<br/>&nbsp; If arr(i, 1) &lt;&gt; "" Then<br/>&nbsp;&nbsp;&nbsp; For j = 1 To k<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(i, 1) = arr1(j, 1) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoTo 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp; arr1(k, 1) = arr(i, 1)<br/>&nbsp;&nbsp;&nbsp; k = k + 2<br/>&nbsp; End If<br/>100:<br/>&nbsp; Next i<br/>Range("b2").Resize(k, 1) = arr1<br/>MsgBox Timer - t<br/>End Sub
[此贴子已经被作者于2008-1-6 15:18:05编辑过]
回复

使用道具 举报

发表于 2008-1-5 20:19 | 显示全部楼层

<p>我来了,试试看!</p>
回复

使用道具 举报

发表于 2008-1-5 20:32 | 显示全部楼层

Sub 填充()<br/>t = Timer<br/>Range("C2:C65536").ClearContents<br/>Dim arr, arr1<br/>Dim x As Integer, y As Integer, k As Integer, mrow As Integer<br/>mrow = Range("a65536").End(xlUp).Row<br/>ReDim arr(1 To mrow, 1 To 1), arr1(1 To mrow * 2, 1 To 1)<br/>arr = Range("A1:A" &amp; mrow)<br/>arr1(1, 1) = arr(1, 1)<br/>k = 1<br/>For x = 2 To mrow<br/>&nbsp; If arr(x, 1) &lt;&gt; "" Then<br/>&nbsp;&nbsp;&nbsp; For y = 1 To mrow * 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(x, 1) = arr1(y, 1) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoTo 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next y<br/>&nbsp;&nbsp;&nbsp; k = k + 2<br/>&nbsp;&nbsp;&nbsp; arr1(k, 1) = arr(x, 1)<br/>&nbsp; End If<br/>100:<br/>Next x<br/>Range("C2").Resize(mrow * 2, 1) = arr1<br/>MsgBox Timer - t<br/>End Sub
回复

使用道具 举报

发表于 2008-1-5 21:40 | 显示全部楼层

<p>我这个运行结果往下错了一行,怎么调呢?[em04][em04]</p><p>Sub 练习()<br/>Dim arr, arr1, x As Integer, y As Integer, k As Integer<br/>arr = Range("a1").Resize(Range("a65536").End(xlUp).Row, 1)<br/>ReDim arr1(1 To UBound(arr), 1 To 1)<br/>For x = 1 To UBound(arr)<br/>&nbsp; If arr(x, 1) &lt;&gt; "" Then<br/>&nbsp;&nbsp;&nbsp; For y = 1 To UBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(x, 1) = arr1(y, 1) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoTo 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next y<br/>&nbsp;&nbsp;&nbsp; k = k + 2<br/>&nbsp;&nbsp;&nbsp; arr1(k, 1) = arr(x, 1)<br/>&nbsp; End If<br/>100:<br/>Next x<br/>Range("C2").Resize(Range("a65536").End(xlUp).Row, 1) = arr1</p><p>End Sub</p>
回复

使用道具 举报

发表于 2008-1-5 21:48 | 显示全部楼层

Sub 获得不重复值() '雨中漫步<br/>&nbsp;&nbsp;&nbsp; Dim arr, arr1(), arr2(), arr3()<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; '先清空<br/>&nbsp;&nbsp;&nbsp; Range(Range("C2"), Range("C" &amp; Range("C65536").End(xlUp).Row + 1)).ClearContents<br/>&nbsp;&nbsp;&nbsp; k = 1<br/>&nbsp;&nbsp;&nbsp; x = Range("a65536").End(xlUp).Row<br/>&nbsp;&nbsp;&nbsp; arr = Range("A1:B" &amp; x)<br/>&nbsp;&nbsp;&nbsp; ReDim arr1(1 To UBound(arr), 1 To 1)<br/>&nbsp;&nbsp;&nbsp; ReDim arr2(1 To UBound(arr), 1 To 1)<br/>&nbsp;&nbsp;&nbsp; ReDim arr3(1 To UBound(arr), 1 To 1)<br/>&nbsp;&nbsp;&nbsp; For i = 1 To x<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(i, 1) &lt;&gt; "" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j = 1 To k<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(i, 1) = arr1(j, 1) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit For<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf j = k Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr1(k, 1) = arr(i, 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k = k +&nbsp;2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next j<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next i<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheet1.Range("c2").Resize(k, 1) = arr1<br/>End Sub<br/>
[此贴子已经被作者于2008-1-5 22:15:33编辑过]
回复

使用道具 举报

发表于 2008-1-5 21:56 | 显示全部楼层

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>zhangyilike</i>在2008-1-5 21:40:00的发言:</b><br/><p>我这个运行结果往下错了一行,怎么调呢?[em04][em04]</p><p>Sub 练习()<br/>Dim arr, arr1, x As Integer, y As Integer, k As Integer<br/>arr = Range("a1").Resize(Range("a65536").End(xlUp).Row, 1)<br/>ReDim arr1(1 To UBound(arr), 1 To 1)<br/>For x = 1 To UBound(arr)<br/>&nbsp; If arr(x, 1) &lt;&gt; "" Then<br/>&nbsp;&nbsp;&nbsp; For y = 1 To UBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If arr(x, 1) = arr1(y, 1) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoTo 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; Next y<br/>&nbsp;&nbsp;&nbsp; k = k + 2<br/>&nbsp;&nbsp;&nbsp; arr1(k, 1) = arr(x, 1)<br/>&nbsp; End If<br/>100:<br/>Next x<br/>Range("C2").Resize(Range("a65536").End(xlUp).Row, 1) = arr1</p><p>End Sub</p></div><p></p>Dim arr, arr1, x As Integer, y As Integer, k As Integer<br/><font color="#ee3d11" size="4">k = -1</font><br/>arr = Range("a1").Resize(Range("a65536").End(xlUp).Row, 1)<br/>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-2 06:08 , Processed in 0.205485 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表