Excel精英培训网

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

[已解决]如何提取指定列的内容到另一工作表,谢谢爱疯老师!

[复制链接]
发表于 2016-4-29 23:52 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2016-4-30 17:09 编辑

老师:

如何提取指定列的内容到另一工作表

附件中有详细的说明,请看看,先谢谢了。

模板2.rar (26.29 KB, 下载次数: 18)
发表于 2016-4-30 06:22 | 显示全部楼层
函数

模板2.zip

38.29 KB, 下载次数: 9

回复

使用道具 举报

发表于 2016-4-30 09:24 | 显示全部楼层
可能做的比较死,有什么别的要求可以说一下

模板2.rar

30.58 KB, 下载次数: 6

回复

使用道具 举报

发表于 2016-4-30 09:32 | 显示全部楼层
Private Sub CommandButton1_Click()
    Dim A, B, i, j, k
    A = Sheets(2).Range("a1").CurrentRegion
    B = Sheets(3).Range("a1").CurrentRegion

    For k = 1 To UBound(B, 2)
        For j = 1 To UBound(A, 2)
            If B(1, k) = A(1, j) Then
                For i = 1 To UBound(A)
                    A(i, k) = A(i, j)
                Next i
            End If
        Next j
    Next k

    Sheets(3).Activate
    Sheets(3).Cells.ClearContents
    Sheets(3).[a1].Resize(UBound(A), UBound(B, 2)) = A
End Sub

模板3.rar (31.95 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2016-4-30 16:15 | 显示全部楼层
baksy 发表于 2016-4-30 06:22
函数

Baksy老师

我需要的是VBA的语句生成的结果表,而不是单元格内的函数,谢谢老师了。
回复

使用道具 举报

 楼主| 发表于 2016-4-30 16:19 | 显示全部楼层
本帖最后由 lhj323323 于 2016-4-30 16:37 编辑
cabcd1 发表于 2016-4-30 09:24
可能做的比较死,有什么别的要求可以说一下

谢谢cabcd1老师!

您所写的语句,其实并不死,原因如下:

虽然我在一楼的要求是根据结果表第一行的相对顺序,从数据源里提取对应的数据。
但在最多的时候,数据源里的第一行的字符都与结果表的不同,而不止是顺序的不同。
在这一前提下,您所写的正好就可以解决这一问题
再次感谢老师!


如果我想把
Case Is = "成交均价"
改为如果等于成交均价,或者等于成交价格,则
如下的语句好像没有对,应该怎么改呢?
Case Is = "成交均价" Or Case Is = "成交价格"

回复

使用道具 举报

 楼主| 发表于 2016-4-30 16:23 | 显示全部楼层
本帖最后由 lhj323323 于 2016-4-30 16:29 编辑
爱疯 发表于 2016-4-30 09:32
Private Sub CommandButton1_Click()
    Dim A, B, i, j, k
    A = Sheets(2).Range("a1").CurrentRegi ...

谢谢爱疯老师。导入正确!

有个后续的问题
如果我把结果表里的A列和B列互换,

即变为
买卖标志,交易日期,成交金额

当运行完语句后
结果表里的内容变为
买卖标志,委托编号、成交金额

即,原定交易日期,最后生成委托编号

这是不是由如下原因造成的?
结果表的各列的相对顺序和要数据源的对应列的相对顺序必须一致?否则就出错?
回复

使用道具 举报

发表于 2016-4-30 16:56 | 显示全部楼层    本楼为最佳答案   
Private Sub CommandButton1_Click()
    Dim A, B, C, i&, j%, k%

    A = Sheets(2).Range("a1").CurrentRegion
    ReDim C(1 To UBound(A), 1 To UBound(A, 2))
    B = Sheets(3).Range("a1").CurrentRegion

    For k = 1 To UBound(B, 2)       '过渡表
        For j = 1 To UBound(A, 2)   '结果表

            '如果结果表和过渡表标题相同,就提取
            If B(1, k) = A(1, j) Then
                For i = 1 To UBound(A)
                    C(i, k) = A(i, j)
                Next i
            End If

        Next j
    Next k

    Sheets(3).Activate
    Sheets(3).Cells.ClearContents
    Sheets(3).[a1].Resize(i - 1, k) = C
End Sub

模板4.rar (31.25 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2016-4-30 17:08 | 显示全部楼层
爱疯 发表于 2016-4-30 16:56
Private Sub CommandButton1_Click()
    Dim A, B, C, i&, j%, k%

谢谢爱疯老师,解决了!
回复

使用道具 举报

 楼主| 发表于 2016-4-30 17:11 | 显示全部楼层
爱疯 发表于 2016-4-30 16:56
Private Sub CommandButton1_Click()
    Dim A, B, C, i&, j%, k%

难得遇到爱疯老师在线,如方便的话,能否帮我看看此贴?

http://www.excelpx.com/thread-417174-1-1.html

此贴4楼,我所提及的问题,真是太动态了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 23:25 , Processed in 0.403759 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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