MS-Excel VBA宏 - 过滤和传输

时间:2013-09-08 07:35:14

标签: excel vba excel-vba

我正在学习Microsoft Excel作为我的主题,我已经完成了使用VBA宏制作过滤器的任务。

  

这就是我所拥有的:

     
    

工作表(“主要”),     工作表(“美国”),      工作表(“亚洲”)和工作表(“欧洲”)

  

这就是我要做的事情:

  

将一些数据从用户剪贴板粘贴到工作表(“主”)。统计具有相同大洲的所有数据并获得总输入的10%(即:总共有1000个输入粘贴在Worksheet main上,500个来自非洲,350个来自亚洲,150个来自欧洲。因此将从工作表中复制的数据(“非洲”)仅为50个输入,这50个输入应具有来自AMOUNT列的过滤器

这是我所有工作表的标题,

LOCAL | AMOUNT | CONTINENT |其他评论|


现在这就是我上网的时候了。

    Sub copyPasteData()
        Dim strSourceSheet As String
        Dim strDestinationSheet As String
        Dim lastRow As Long
        strSourceSheet = "Main"
        Sheets(strSourceSheet).Visible = True
        Sheets(strSourceSheet).Select
        Range("C2").Select ' This is where I could filter the CONTINENTS.
    Do While ActiveCell.Value <> ""
        strDestinationSheet = ActiveCell.Value
    ActiveCell.Offset(0, -2).Resize(1, ActiveCell.CurrentRegion.Columns.Count).Select
        Selection.Copy
        Sheets(strDestinationSheet).Visible = True
        Sheets(strDestinationSheet).Select
        lastRow = LastRowInOneColumn("A")
       Cells(lastRow + 1, 1).Select
       Selection.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        Sheets(strSourceSheet).Select
        ActiveCell.Offset(0, 2).Select
        ActiveCell.Offset(1, 0).Select
        Loop
    End Sub

    Public Function LastRowInOneColumn(col)
        Dim lastRow As Long
        With ActiveSheet
        lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
        End With
        LastRowInOneColumn = lastRow
    End Function

使用上面的代码,我可以根据给定的大陆进行过滤。但问题是如何获得用户粘贴的总输入的10%?

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

按大陆排序。

对信息进行排序后,您可以计算每个洲的项目,以便了解“应该从AMOUNT列中选择过滤器的输入数量。”