Board logo

标题: [电脑] 继续求教EXCEL问题,自动复制到另外的工作表 [打印本页]

作者: conansick    时间: 2013-4-22 17:20     标题: 继续求教EXCEL问题,自动复制到另外的工作表

上次的VLOOKUP函数很强,不过试了很多次才明白意义...

想知道可不可以如果在某列填特定值,可以将该行复制到相应的工作表的功能或函数吗?

比如A,1是1,则工作表1的第一行会复制该行,新增A,2如果是1,则第二行继续复制。

感觉VLOOKUP好像也可以,不过如果值一样的话是不是无法精确匹配?求EXCEL高手了!
作者: Cheve    时间: 2013-4-22 17:56

posted by wap, platform: iPhone

可以实现
用vba
作者: westlost    时间: 2013-4-22 18:02

楼主你语言表述能力欠缺,我说实话
作者: Benthal    时间: 2013-4-22 18:11

posted by wap, platform: Nokia (E72)

说的啥啊,敢上个图不敢
作者: 怎么办呢    时间: 2013-4-22 19:17

posted by wap, platform: Android

条件单一的话,用If应该就行了啊
作者: madoka    时间: 2013-4-22 19:28

posted by wap, platform: Chrome

用VBA的话很好实现
作者: jFz    时间: 2013-4-22 19:42

posted by wap, platform: UC

语死早。
作者: SeraphZtoA    时间: 2013-4-22 21:03

看不懂楼主要做什么,感觉可以用公式

但是实在不明白你要干嘛
作者: conansick    时间: 2013-4-22 21:22

可能语言表述有点难,还是截图吧...图一是工作表1,如果满足工作表第一列是1这个条件的行,则复制到工作表2,如果新增行也继续,IF命令试过好像不能,或者命令本身有问题
[attach]527214[/attach]
[attach]527215[/attach]
作者: jinwyp    时间: 2013-4-22 21:33

实在看不懂楼主说什么,  能不能用excel的单元格说话,

例如a1里面 是1 , 然后把sheet1的a1复制到sheet2的a1里面, 然后楼主想说什么看不懂了
作者: westlost    时间: 2013-4-22 22:17

这个应该是筛选或者排序后复制来解决的问题
作者: conansick    时间: 2013-4-23 22:25

其实应该是行关联的问题,明白自己表述有问题,不过EXCEL的话其实有难度...

已经想到要条件去解决,EXCEL不过有没有行关联的函数?怕条件太多影响表格效率...
作者: 南方仁    时间: 2013-4-24 01:17

posted by wap, platform: UC

mark一下
作者: Cheve    时间: 2013-4-24 08:54

posted by wap, platform: iPhone

楼主其实是有个自动复制要求的,不用vba怎么实现自动筛选+粘贴复制 靠那些个功能有限的公式吗

所以vba 几句话就能解决楼主问题

当然如果楼主不要求自动话的话 手动可以通过先筛选然后复制粘贴可见单元格实现

本帖最后由 Cheve 于 2013-4-24 08:59 通过手机版编辑
作者: conansick    时间: 2013-4-24 19:29

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

楼主其实是有个自动复制要求的,不用vba怎么实现自动筛选+粘贴复制 靠那些个功能有限的公式吗

所以vba 几句话就能解决楼主问题

当然如果楼主不要求自动话的话 手动可以通过先 ...
求那几句话,谢谢了:)...另外曾经用过一次VBA,每次都让EXCEL闪动得很厉害,点一下就自己运行一下...
作者: jammin    时间: 2013-4-24 20:01

posted by wap, platform: iPhone

如果工作表2不需要修改的话,可以用排序加offset函数搞定,动不动vba喷了
作者: Cheve    时间: 2013-4-24 23:17

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只能定位引用而已吧
作者: conansick    时间: 2013-4-25 14:12

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

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

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

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

posted by wap, platform: ZTE (U930)

vba吧,很容易。
作者: Cheve    时间: 2013-4-25 18:16

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

posted by wap, platform: iPhone

用公式可以很快做到的:

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

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

用公式可以很快做到的:

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

引用:
原帖由 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
作者: tsubasa2000    时间: 2013-4-26 08:37

posted by wap, platform: Android

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

至于一搞就vba的,太高端了不适合你。
作者: tsubasa2000    时间: 2013-4-26 08:37

posted by wap, platform: Android

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

至于一搞就vba的,太高端了不适合你。
作者: jammin    时间: 2013-4-26 10:12

既然你每次都是从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 ...

作者: Cheve    时间: 2013-4-26 14:35

运行 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
作者: 不锈不锈钢    时间: 2013-4-26 16:13

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

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

这还不如用透视表

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

话说LZ的需求真的好奇怪
作者: jammin    时间: 2013-4-26 19:35

posted by wap, platform: iPhone
引用:
原帖由 @SeraphZtoA  于 2013-4-26 19:18 发表
这还不如用透视表

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

话说LZ的需求真的好奇怪
列数多了很吃力
作者: conansick    时间: 2013-4-30 22:51

引用:
原帖由 tsubasa2000 于 2013-4-26 08:37 发表
posted by wap, platform: Android

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

至于一搞就vba的,太高端了不适合你。
希望减少手工操作,另外希望表2修改的话要密码,不是随便人都可以改...还有一点是其实是会有表3、表4等,不同的条件复制到不同的表
作者: conansick    时间: 2013-4-30 22:53

引用:
原帖由 Cheve 于 2013-4-26 14:35 发表
运行 DO_TEST() 里面可以修改总行数和查找的数值

Sub DO_TEST()
Application.ScreenUpdating = False
Sheets(2).Cells.Clear
             Call PRES(100, 2)           '可以更改 100表示有100行 3表示查找3
...
非常感谢,我试试自己能不能看得明白...
作者: conansick    时间: 2013-4-30 22:56

引用:
原帖由 jammin 于 2013-4-26 10:12 发表
既然你每次都是从sheet1的第一行开始判断,那么不需要copy到sheet2的最后一行.
直接 Destination:=Sheets("sheet2").range("a1") 得了

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

还是真心不建议这种用公式 ...
用公式的话,有很多FALSE的值不知道应该怎么隐藏,而且每行有大约7-8列的值,而且有表3、表4等,其实运算量也挺大的...
作者: conansick    时间: 2013-4-30 22:59

引用:
原帖由 不锈不锈钢 于 2013-4-26 16:13 发表
方法什么大家都说得很好,我就不插嘴了

但是插一句LZ记录数据方法上的问题,按一般情况而言,历史数据是非常重要的(比如学习概率分布等等),而LZ这种记录方法是不是等于把历史全部抹杀了,只保留最新数据???
是的,只要最新的数据即可。其实这个工作不是十分必要,不过想知道自己可以操作EXCEL到什么程度...
作者: conansick    时间: 2013-4-30 23:01

引用:
原帖由 SeraphZtoA 于 2013-4-26 19:18 发表
这还不如用透视表

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

话说LZ的需求真的好奇怪
因为表1有很多人可以修改,表2希望只有1个人可以改...




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0