» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[电脑] 继续求教EXCEL问题,自动复制到另外的工作表

posted by wap, platform: iPhone

如果工作表2不需要修改的话,可以用排序加offset函数搞定,动不动vba喷了


TOP

posted by wap, platform: iPhone
引用:
原帖由 @jammin  于 2013-4-24 20:01 发表
posted by wap, platform: iPhone

如果工作表2不需要修改的话,可以用排序加offset函数搞定,动不动vba喷了
楼主的意思应该是,每次工作表1有新数据更新就要检测是否满足1,满足后自动复制粘贴到工作表2的最后一行数据下面 , 这个用offset定位能实现?复制粘贴这个动作本身就是需要vba的 copy&paste方法的 offset只能定位引用而已吧



TOP

引用:
原帖由 jammin 于 2013-4-24 20:01 发表
posted by wap, platform: iPhone

如果工作表2不需要修改的话,可以用排序加offset函数搞定,动不动vba喷了
就是需要修改而且尽量不要排序,涉及到日期...


TOP

引用:
原帖由 Cheve 于 2013-4-24 23:17 发表
posted by wap, platform: iPhone

楼主的意思应该是,每次工作表1有新数据更新就要检测是否满足1,满足后自动复制粘贴到工作表2的最后一行数据下面 , 这个用offset定位能实现?复制粘贴这个动作本身就是需要vba的  ...
就是这个意思,如果使用VBA的话,会不会每次有更改都闪一下?

TOP

posted by wap, platform: ZTE (U930)

vba吧,很容易。

TOP

posted by wap, platform: iPhone
引用:
原帖由 @conansick  于 2013-4-25 14:14 发表
就是这个意思,如果使用VBA的话,会不会每次有更改都闪一下?
不会闪 有一条语句是控制屏幕更新用的
代码一开始先关掉屏幕更新,在代码结尾处打开屏幕更新就ok了 就不会闪了

TOP

posted by wap, platform: iPhone

用公式可以很快做到的:

工作表1里进行所有的修改;
工作表1里面符合条件的记录,根据先后次序出现在工作表2中;
工作表2只做展示不能修改,当然你可以copy出去再修改

TOP

引用:
原帖由 jammin 于 2013-4-25 18:48 发表
posted by wap, platform: iPhone

用公式可以很快做到的:

工作表1里进行所有的修改;
工作表1里面符合条件的记录,根据先后次序出现在工作表2中;
工作表2只做展示不能修改,当然你可以copy出去再修改
公式的话当表很长的时候要做很多功夫,而且好像无法隐藏行...

TOP

引用:
原帖由 Cheve 于 2013-4-25 18:16 发表
posted by wap, platform: iPhone

不会闪 有一条语句是控制屏幕更新用的
代码一开始先关掉屏幕更新,在代码结尾处打开屏幕更新就ok了 就不会闪了
这样OK吗?谢谢指教了!

Application.ScreenUpdating = False

Sub c()
    FOR I = 1 to 100
    if Sheets("sheet1")(A,I)=1
    then Sheets("sheet1").Range("ai:di") copy Destination:= Sheets("sheet2").Range("ai:di")  (怎样可以做到粘贴到最后一行?)
    next
End Sub

Application.ScreenUpdating = True

TOP

posted by wap, platform: Android

楼主你相信我,你这种情况用筛选后直接复制更方便。如果是多个条件,就插一列用if函数做一个标注后再筛选。

至于一搞就vba的,太高端了不适合你。

TOP

posted by wap, platform: Android

楼主你相信我,你这种情况用筛选后直接复制更方便。如果是多个条件,就插一列用if函数做一个标注后再筛选。

至于一搞就vba的,太高端了不适合你。

TOP

既然你每次都是从sheet1的第一行开始判断,那么不需要copy到sheet2的最后一行.
直接 Destination:=Sheets("sheet2").range("a1") 得了

另外做得地道点,在copy前需要清空sheet2的内容

还是真心不建议这种用公式就可以搞定的去用vba,今后维护很成问题.
引用:
原帖由 conansick 于 2013-4-25 22:56 发表

这样OK吗?谢谢指教了!

Application.ScreenUpdating = False

Sub c()
    FOR I = 1 to 100
    if Sheets("sheet1")(A,I)=1
    then Sheets("sheet1").Range("ai:di") copy Destination:= Sheets("she ...

TOP

运行 DO_TEST() 里面可以修改总行数和查找的数值

Sub DO_TEST()
Application.ScreenUpdating = False
Sheets(2).Cells.Clear
             Call PRES(100, 2)           '可以更改 100表示有100行 3表示查找3
Application.ScreenUpdating = True
End Sub
Sub PRES(rolcont, lokup)
Dim i As Integer
Dim ii As Integer
Sheets(1).Activate
ii = 1
    For i = 1 To rolcont
        If Sheets(1).Cells(i, 1).Value = lokup Then
            Sheets(1).Cells(i, 1).EntireRow.Copy Destination:=Sheets(2).Cells(ii, 1)
        ii = ii + 1
        End If
    Next i
End Sub

文件链接:https://skydrive.live.com/redir? ... ey=!AGeeSdhXW9hcTlg

TOP

方法什么大家都说得很好,我就不插嘴了

但是插一句LZ记录数据方法上的问题,按一般情况而言,历史数据是非常重要的(比如学习概率分布等等),而LZ这种记录方法是不是等于把历史全部抹杀了,只保留最新数据???

TOP

这还不如用透视表

LZ第二个表用透视表不就行了?

话说LZ的需求真的好奇怪

TOP

发新话题
     
官方公众号及微博