Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 兰色幻想

[习题] 【v1-6综合练习题2】卡片转数据表格式存放

[复制链接]
发表于 2007-12-17 10:52 | 显示全部楼层

<p>这个又快了很多,最快0.007秒,最慢0.017秒,数据太少,不稳定了。</p><p>Sub xx()<br/>Dim x As Integer, y As Integer, z As Integer, t<br/>Application.ScreenUpdating = False<br/>x = Sheet1.Range("a65536").End(xlUp).Row<br/>z = 2<br/>t = Timer<br/>For y = 1 To x Step 5<br/>&nbsp;&nbsp; Range("a" &amp; z &amp; ":d" &amp; z) = Application.Transpose(Sheet1.Range("b" &amp; y &amp; ":b" &amp; y + 4))<br/>&nbsp;&nbsp; z = z + 1<br/>Next<br/>MsgBox Timer - t<br/>Application.ScreenUpdating = True<br/>End Sub</p>
回复

使用道具 举报

发表于 2007-12-17 17:43 | 显示全部楼层

<p>自己先独立完成(<font color="#ff0000">修改</font>):</p><p>Sub 卡片1()<br/>Dim MRG As Range<br/>Dim AAA As String<br/>Dim BBB As Long<br/>Dim P As Long<br/><font color="#ff0000">Dim Q As Long<br/></font>&nbsp;&nbsp; Sheets("数据表").Range("A2:A65536").ClearContents<br/>&nbsp; With Sheets("卡片")<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">Q = .Range("A65536").End(xlUp).Row<br/></font>&nbsp;&nbsp;&nbsp; Set MRG = .Range("A1:A"<font color="#ff0000"> &amp; Q</font>).Find("姓名")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AAA = MRG.Address<br/>&nbsp;&nbsp;&nbsp; Do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBB = MRG.Row<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P = Sheets("数据表").Range("A65536").End(xlUp).Row<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = BBB To BBB + 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("数据表").Cells(P + 1, i - BBB + 1) = .Cells(i, 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set MRG = .Range("A1:A65536").FindNext(MRG)<br/>&nbsp;&nbsp;&nbsp; Loop Until MRG.Address = AAA<br/>&nbsp; End With<br/>End Sub<br/></p><p>再看其他网友的程序,哇,这么多!慢慢看!</p>
[此贴子已经被作者于2007-12-17 19:30:56编辑过]
回复

使用道具 举报

发表于 2007-12-17 18:22 | 显示全部楼层

<p>要是上表的表格有几列怎么办.</p>
回复

使用道具 举报

发表于 2007-12-17 19:00 | 显示全部楼层

先下载
回复

使用道具 举报

发表于 2007-12-17 19:11 | 显示全部楼层

<p>&nbsp;&nbsp;&nbsp; 22楼我的程序中,总是跳过“卡片”工作表中第1行要查找的内容,从第2行开始查找,最后查找行反而是第1行内容,奇怪!</p><p>解决办法:“卡片”工作表的最前面插入1空行,运行一下到可以了!</p><p>难道do...... Loop Until.....语句开始不查第1行的A1?</p>
[此贴子已经被作者于2007-12-17 19:25:30编辑过]
回复

使用道具 举报

发表于 2007-12-18 20:51 | 显示全部楼层

Sub Macro1()<br/>Dim i, j, k As Integer<br/>For i = 1 To 100 Step 5<br/>&nbsp;j = Range("c65536").End(xlUp).Row + 1<br/>&nbsp;&nbsp;&nbsp; Range("a" &amp; i).CurrentRegion.Activate<br/>&nbsp;&nbsp;&nbsp; Selection.Copy<br/>&nbsp;&nbsp;&nbsp;&nbsp; Range("c" &amp; j).Select<br/>&nbsp;&nbsp;&nbsp; Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; False, Transpose:=True<br/>&nbsp;&nbsp;&nbsp; Next i<br/>&nbsp;For k = Range("c65536").End(xlUp).Row To 3 Step -1<br/>&nbsp;If Range("c" &amp; k).Value = "姓名" Then<br/>&nbsp;Range("C" &amp; k &amp; ":F" &amp; k).Delete shift:=xlUp<br/>&nbsp;End If<br/>&nbsp;Next k<br/>&nbsp;Range("c1:f1").Delete shift:=xlUp<br/>End Sub<br/>这个可能是最慢的了
回复

使用道具 举报

发表于 2007-12-18 22:37 | 显示全部楼层

<p></p>
[此贴子已经被作者于2007-12-18 22:46:46编辑过]
回复

使用道具 举报

发表于 2007-12-18 22:40 | 显示全部楼层

<p>Sub 名片()<br/>Dim i, j, H As Integer<br/>For i = 1 To 100 Step 5<br/>H = Sheets(2).Range("a65536").End(xlUp).Row + 1<br/>varArray = Sheets(1).Range("a" &amp; i).CurrentRegion<br/>Sheets(2).Range("A" &amp; H &amp; ":d" &amp; H + 1) = Application.WorksheetFunction.Transpose(varArray)<br/>Next i<br/>删除<br/>End Sub<br/>Sub 删除()<br/>Dim ran As Range<br/>For i = 2 To Sheets(2).Range("a65536").End(xlUp).Row + 1<br/>If Range("a" &amp; i) = "姓名" Then<br/>If ran Is Nothing Then<br/>Set ran = Rows(i)<br/>Else<br/>Set ran = Union(ran, Rows(i))<br/>End If<br/>End If<br/>Next i<br/>'ran.Select<br/>ran.Delete shift:=xlUp<br/>End Sub</p><p></p>
回复

使用道具 举报

发表于 2007-12-18 22:43 | 显示全部楼层

好厉害的

<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>mjm96511</i>在2007-12-18 22:37:00的发言:</b><br/>Sub 数据转换()<br/>Dim a As Integer, b As Integer<br/>a = Sheets("卡片").Range("A65536").End(xlUp).Row<br/>For i = 1 To Int(a / 5)<br/>&nbsp;&nbsp;&nbsp; For j = 1 To 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 5 * (i - 1) + j<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("数据表").Cells(i, j) = Sheets("卡片").Cells(b, 2)<br/>&nbsp;&nbsp;&nbsp; Next<br/>Next<br/>End Sub</div><p>高手</p>
回复

使用道具 举报

发表于 2007-12-18 22:44 | 显示全部楼层

Sub 转换()<br/>Dim a As Integer, b As Integer<br/>a = Sheets("卡片").Range("A65536").End(xlUp).Row<br/>For i = 1 To Int(a / 5)<br/>&nbsp;&nbsp;&nbsp; For j = 1 To 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 5 * (i - 1) + j<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sheets("数据表").Cells(i, j) = Sheets("卡片").Cells(b, 2)<br/>&nbsp;&nbsp;&nbsp; Next<br/>Next<br/>End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-29 05:09 , Processed in 0.129783 second(s), 4 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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