2013-09-08 2 views
0

필자는 Microsoft Excel을 필자로하여 학습하면서 VBA 매크로를 사용하여 필터를 만드는 작업을 수행했습니다. MS-Excel VB 매크로 - 필터 및 전송

내가 무엇을 가지고 :

워크 시트 ("메인"), 워크 시트 ("USA"), 워크 시트 ("아시아") 및 워크 시트 ("유럽")

우리에서 일부 데이터를 붙여 넣기 :

이 내가해야 할 일이다 클립 보드를 워크 시트 ("Main")로 복사하십시오. 동일한 대륙에있는 모든 데이터를 계산하고 총 입력의 10 %를 얻습니다 (예 : 워크 시트 기본에 붙여 넣은 총 1000 개의 입력, 아프리카에서 500 개, 아시아에서 350 개, 유럽에서 150 개). 따라서 워크 시트에서 복사 할 데이터 금액 | | 대륙 | 추가 댓글 |


("아프리카")

LOCAL, 50 개 입력 만, 그 50 개 입력이 금액 열

여기에 모든 워크 시트에서 내 헤더의에서 필터를 가지고 있어야입니다

이제 인터넷 서핑을하면서 내가 만든 것입니다.

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 %를 어떻게 얻을 수 있는가입니다.

도움을 주시면 감사하겠습니다. 감사합니다

답변

0

대륙별로 정렬.

정보가 정렬되면 각 대륙의 항목 수를 계산할 수 있으므로 "AMOUNT 열의 필터가 있어야하는 입력 수"를 알 수 있습니다.

관련 문제